@aztec/accounts 0.66.0 → 0.67.1
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/artifacts/EcdsaKAccount.json +297 -302
- package/artifacts/EcdsaRAccount.json +271 -276
- package/artifacts/SchnorrAccount.json +659 -672
- package/artifacts/SchnorrSingleKeyAccount.json +110 -110
- package/dest/testing/configuration.js +4 -4
- package/package.json +12 -8
- package/src/testing/configuration.ts +3 -3
|
@@ -1,112 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"transpiled": true,
|
|
3
|
-
"noir_version": "1.0.0-beta.0+
|
|
3
|
+
"noir_version": "1.0.0-beta.0+b3f4ad661c8c6f88544d714fd5b7b6f58a8ce4ad-x8664",
|
|
4
4
|
"name": "EcdsaRAccount",
|
|
5
5
|
"functions": [
|
|
6
6
|
{
|
|
7
|
-
"name": "
|
|
7
|
+
"name": "sync_notes",
|
|
8
8
|
"is_unconstrained": true,
|
|
9
9
|
"custom_attributes": [],
|
|
10
10
|
"abi": {
|
|
11
11
|
"error_types": {
|
|
12
|
-
"11091894166229312484": {
|
|
13
|
-
"error_kind": "fmtstring",
|
|
14
|
-
"item_types": [],
|
|
15
|
-
"length": 20
|
|
16
|
-
},
|
|
17
|
-
"16761564377371454734": {
|
|
18
|
-
"error_kind": "string",
|
|
19
|
-
"string": "Array index out of bounds"
|
|
20
|
-
},
|
|
21
12
|
"17843811134343075018": {
|
|
22
13
|
"error_kind": "string",
|
|
23
14
|
"string": "Stack too deep"
|
|
24
|
-
},
|
|
25
|
-
"2920182694213909827": {
|
|
26
|
-
"error_kind": "string",
|
|
27
|
-
"string": "attempt to subtract with overflow"
|
|
28
|
-
},
|
|
29
|
-
"5019202896831570965": {
|
|
30
|
-
"error_kind": "string",
|
|
31
|
-
"string": "attempt to add with overflow"
|
|
32
|
-
},
|
|
33
|
-
"8270195893599566439": {
|
|
34
|
-
"error_kind": "string",
|
|
35
|
-
"string": "Invalid public keys hint for address"
|
|
36
15
|
}
|
|
37
16
|
},
|
|
38
|
-
"parameters": [
|
|
39
|
-
|
|
40
|
-
"name": "contract_address",
|
|
41
|
-
"type": {
|
|
42
|
-
"fields": [
|
|
43
|
-
{
|
|
44
|
-
"name": "inner",
|
|
45
|
-
"type": {
|
|
46
|
-
"kind": "field"
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
],
|
|
50
|
-
"kind": "struct",
|
|
51
|
-
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
52
|
-
},
|
|
53
|
-
"visibility": "private"
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
"name": "nonce",
|
|
57
|
-
"type": {
|
|
58
|
-
"kind": "field"
|
|
59
|
-
},
|
|
60
|
-
"visibility": "private"
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"name": "storage_slot",
|
|
64
|
-
"type": {
|
|
65
|
-
"kind": "field"
|
|
66
|
-
},
|
|
67
|
-
"visibility": "private"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"name": "note_type_id",
|
|
71
|
-
"type": {
|
|
72
|
-
"kind": "field"
|
|
73
|
-
},
|
|
74
|
-
"visibility": "private"
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
"name": "compute_nullifier",
|
|
78
|
-
"type": {
|
|
79
|
-
"kind": "boolean"
|
|
80
|
-
},
|
|
81
|
-
"visibility": "private"
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
"name": "serialized_note",
|
|
85
|
-
"type": {
|
|
86
|
-
"kind": "array",
|
|
87
|
-
"length": 5,
|
|
88
|
-
"type": {
|
|
89
|
-
"kind": "field"
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
"visibility": "private"
|
|
93
|
-
}
|
|
94
|
-
],
|
|
95
|
-
"return_type": {
|
|
96
|
-
"abi_type": {
|
|
97
|
-
"kind": "array",
|
|
98
|
-
"length": 4,
|
|
99
|
-
"type": {
|
|
100
|
-
"kind": "field"
|
|
101
|
-
}
|
|
102
|
-
},
|
|
103
|
-
"visibility": "public"
|
|
104
|
-
}
|
|
17
|
+
"parameters": [],
|
|
18
|
+
"return_type": null
|
|
105
19
|
},
|
|
106
|
-
"bytecode": "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",
|
|
107
|
-
"debug_symbols": "7Z3bruTGrYbfZa59UQeyDnmVYMOwHScYYGAHtrOBjcDvvnsdpG6PqleN2Cw2VeJNsJwRxb8+sYqk1FL999M/fv7xP//6/vMv//z1909/+/t/P3359acf/vj86y+X//rvn999+vG3z1++fP7X97f/9yf38j+QX4///d8//PLyn7//8cNvf3z6m8f83aeff/nH5a+EF/t/fv7y86e/xZr+/J/vPkHZbYKw3wT3m6T9JvuHj4Th190mye038ftNwn6TuN9k/9VP+69+2n/10/6rn/Zf/bT/6uf9Vz/vv/p5/9XP+69+3n/18/6rn/df/bz/6uf9Vz/vv/pl/9Uv+69+2X/1y/6rX/Zf/bL/6pf9V7/sv/pl/9Uv+69+3X/16/6rX/df/br/6tf9V7/uv/p1/9Wv+69+3X/16/6r750j2HiCTSDYRIINEGyQYJMINplgUwg2hDjwhDjwO+Pgu82xObwfmvN6JPq3k4eRJ48jTw4jT44jT55GnjyPPHkZefI68OTBjTz5yBkaRs7QMHKGhpEzNIycoWHkDA0jZ2gYOUPDyBkaR87QOHKGxodnaI3LoT5uzh6Hnh2Gnh2Hnj0NPXseevYy9Ox15NnBDT27H3r2oXMVhs5VGDpX4eF4T5fV5P3gy5/Xo3N5c1BGO6iDHaAb7cCPdhBGO4ijHcBoBzjaQRrtYPRMxtEzGUfP5DR6JqfRMzkxzGTnVwcQbx1sD/Y5LGp8vjk4VnyTE3XJAV1yUJecpEtOViUny86sFJfOMgFcT+zdmxjZyEmIy7HJb8U8Hjeu3IiBzoWqqSxnrqluL1TWJafoklNVySlOlxyvS07QJSfqkgO65KAuObpW5aJrVS66VuWia1WuulblqmtVrrpW5aprVa6yq3Jwbjnz5c+ylYO65CRdcrIuOUWXnKpJTnBOlxyvS07QJSfqkqNqVQ5O1aocnKpVOThVq3Jwqlbl4HStyl7XquylV2VIq5wEWzlBl5yoSw48T05OWzmoS07SJSfrklN0yamq5ASnS47XJSfokhN1yRGe6N65RY53YSMnCoey92uB4YPfyhEO5cv5VjklbuUEXXKiLjnwPDkVt3JQl5ykS07WJafoklNVyQGnS87zVuVLDt3KCbrkRF1ypFdlvGb0tC0wAHXJSbrkZF1yii45VZUcdLrkeF1yhFflS5Jcl0Hc3qrEqEsO6JKDuuSk58nJbisn65JTdMmpquQkp0uO1yUn6JITdckBXXJQlxzpdafCKqdu75xm4ZkV/XLw5c9tU5yFZ1bEusrJ27YvR11yQJcc1CUnPU9OqVs5WZecoktOVSVH+KWWrhyvS07QJed5qzK47eO1ArrkoC454qvytcDAbb1Tsi45RZecqkpOdbrkeF1ygi45UZcc0CUHdcnRtSpXXaty1bUqV1WrcnSqVuUo/VIL5FUObIvTKP1SS09O1CUHdMkZuSq/OkijHeTRDspoB3Wwg6Gve7w6YPhEFLrVwc3R7dd5P/7sTWR4gYNVTtQlB3TJQV1yki45j69u4frRpBDiZuqW0Q7qYAcMr010HPjRDsJoB3G0AxjtAEc7SKMdjJ7JYfRMDqNnMsNbIwHXL03GmzdN22tvjctXQS66rg+qQ3CNowuU5Q2cgiH95ehX8f7I4sORxccji4cji8cji09HFp+PLL4cWXw9sHg4coaFI2dYOHKGhSNnWIY3l54o/sgZFo6cYeHIGRaOnGHhyBkWj5xh8cgZFo+cYfHIGZbhLbQnij9yhsUjZ1g8cobFI2dYVJ1hcd1GpCDgRnxSnWF74lVn2J541Rm2J151hu2JV51he+JVZ9ieeNUZtidedYbtiVedYXvij5xhs+oMm9zyuk25PETeiledYXviVWfYnnjVGbYnXnWG7YlXnWF74lVn2J541Rm2J151hu2JV51hO+LLkTNsOXKGLUfOsOXIGZbhLfEnij9yhi1HzrDlyBm2HDnDliNn2Ko7w65f8y8pua143Rm2I153hu2I151hO+J1Z9iOeN0ZtiNed4btiNedYTvidWfYjnjdGfZD8cDwFYQYl4MTuHor/tWBH+0gjHYQRzuA0Q5wtIM02kEe7IDhbXNISy2b8GbvheYkhpri+8FQa7k5NTaOxgTLox5MJXTWB1eWg713sBloPMtA4SwDxbMMNJ1loPksAy1nGWg9yUAZvuNwkIH6swz0LJVROEtlxPCdj4MMdJ7KKKSljfeyPzOHME/V9USI81R0T4Q4T7X4RIjzVKLPgxjnqXKfCHGeCvqJEOepzp8IcZ7K/4kQwSA+DtE6FgaI1rEwQLSOhQGidSwMEK1jeRwiWMfCANE6FgaI1rEwQLSOhQEiGMTHIVrHwgDROhYGiNaxMEC0joUBonUsj0NE61gYIFrHwgDROhYGiNaxPPxNJ2D4RqtBROtYGCBax8IA0ToWBojWsTBAtI7lcYjJOhYGiNaxMEC0joUBonUsD3/BBxi+eW0Qk3UsDBCtY2GAaB0LA0TrWBggWsfyOMRsHQsDROtYGCBax8IA0ToWBohgEB+HaB0LA0TrWBggWsfCANE6FgaI1rE8DrFYx8IA0ToWBojWsTBAtI7l8W84M+zJYhCLdSwMEK1jYYBoHQsDROtYGCBax/I4xGodCwNE61gYIFrHwgBRd8dSlqFivhHfPPVlRMuuMyEUf3vw60DhLAPVXfkzDlR3dc44UN0VNONAdVe5jAPVXYmyDRSd7mqRcaCyFR266BfpDnsD9THUtb7IcT3aA7QgxmWgl7tI12MDvg00nGWg8SwDhbMMFM8y0HSWgeazDLScZaD1JAP1bpqBIqb1VkdjoPNURp2BzlMZdQY6T2WE2a0dQN0OFM4y0Hkqo85A56mMsK6bbLu4Heg8lVFnoPNURp2BzlMZ3QzU+81Aw0SV0ccDnacySnk5dSpuO9B5KqPOQOepjDoDhXkGWnDRUWE70Hkqo85A56mMOgOdpzLK66+Rsy/bgc5TGXUGOk9l9PFA4zyV0c1Ab76uug50nsqoM9B5KqPOQOepjHJd0ktx2/QivG/gEwc6T2XUGeg8lVFnoPNURuX6nlYrj85TGXUGOk9l9PFAYZ7KqDPQeSqjEpffahUI24HOUxl1BjpPZdQZKJxloPNURjcDxe1dQJinMuoMdJ7KqPpFdG20aTBPZdQZ6DyV0ccDxXkqo85A56mM6nrqCtvHhjhPZdQZ6DyVUWegcJaBzlMZ1fUncjU1FqN5KqPOQCeqjD4e6ESV0ccDnagyug40b293pokqo48HOk9l5B0uP+/0Lm0btTRPbdQd6jzVUXeocJ6hqq6QYO3APKTSGWoo61ctQrn5BIZvnju6tDybiu72l9slto7O69u4Md8WmpejXzGqrr+Og1F1dXccjKprx+NgVF2ZHgZjVl33Hgej6qr6OBhVV+zHwai6GzgORjCMHBiti2HBaF0MC0brYlgwWhfDgtG6GA6MxboYFozWxbBgtC6GBaN1MSwYwTByYLQuhgWjdTEsGK2LYcFoXQwLRutiODBW62JYMFoXw4LRuhgWjNbFsGCE02IMy95B0UPpYCxQ1h1+8Oa9mPcdfrCet4thxXjeLoYV43m7GFaM5+1iWDGet4thxJjcebsYVozn7WJYMZ63i2HFeN4uhhUjGEYOjNbFsGC0LoYFo3UxLBiti2HBaF0MB0bdO3IdB6N1MSwYrYthwWhdDAtGMIwcGK2LYcFoXQwLRutiWDBaF8OC0boYDoy6d887DkbrYlgwWhfDgtG6mG/CiDGsGAG3GMEwcmC0LoYFo3UxLBiti2HBaF0MC0brYjgw6t7p8jgYrYthwWhdDAtG62JYMFrd+G0Yb3rqWrYYLVN/E8bLKBeM6eaD1QtG3TsvHgejZWoWjJapWTBapmbBCIaRA6Pdb2TBaHUjC0a738iC0e43smCcqIupftmDN7rbbaya5+49MtW97+kzwUzUafCCmah34AUzUTfACwYMTBvMRBU7L5iJanBeMBNV1bxgJqqTecFY5dsGo3tf22eCscr3DhirfO+Ascr3DhgwMG0wVvneAWOV7x0wVvneAWOV7x0wVvm2wcy0sy0vGKt874CxyvcOGKt874ABA9MGY5XvHTBW+d4Bc9rKt/ML75l2WuUFc9rKtwNmpt1QecGctvLtgTlt5dsDc9rKtwcGDEwbzGkr3x6Y01a+PTBW+d4Bc9rKN7lFdkkhbMGctvLtgJlpB01eMKetfHtgTlv59sCctvLtgQED0wZz2sq3B+a0lW8PzGkr3x4Yq3zvgLHKtwkmz7TrIi8Yq3zvgLHK9w4Yq3zvgAED0wZjle8dMFb53gFjle8dMOetfD/8tkOeaV8/VjAz7dTHC+a8lW8HzHkr3w6Y81a+HTBgYNpgzlv5dsCct/LtgDlv5dsBM0/lG31YwfiUO2ACwCI7QLk5OreEZMRFSM71enB5gzhPlfw8iBPtGvdEiPNU30+EOE+l/kSI81T1T4QIBvFxiPN0C0+EOE9nEb3DK8TSgQgX5u9HQ8z+FuIrl3kaC14uM/UVnFxmahUYuUy02xovl5kKek4uM9XonFxmKrs5uYBxaXKZqTjm5GL1bpuL1bttLlbvtrlYvdvkMtGehbxcrN5tc7F6t83F6t02FzAuTS5W77a5WL3b5mL1bpvLaetduHIBgFsujVPntAiJxccNxNMWx4wQJ9pl74kQT1t2c0I8bY3OCfG0BT0nRDCIj0M8bavACfG0fQUnxNM2IZwQrWNhgGgdy+MQJ9od8YkQrWP5FogF1h+MFswbiNaxMEC0joUBIhjEb4GYwgoxpw1E61gYIFrHwgDROpZvglgX2bE63EC0joUBonUsj0OcaFdLKYjbjmWiHTCfCNE6FgaIk3YsOXQgegduObf7648aGrJ9hUV28LCBCAbxGyCG9fsjGNKmTpxox86hEOsKMcZN7zzR7p5PhDhpx8IMMeblYLwkpA3ESTsWZoiQyyIb3XZNnLRj4YaY0hXiZjpPtBvpSIgpr7Kz7xSVlxvdC/HLrYlNUTnRNqdHIT5pL6SYuDVO0sTBiAsTt5ZMmrj1b9LErdmTJm6doTRxayP5iddF9eVpzuaduIn2AT4Kces5pYlbz8lOPAdcice6IW49pzRxMOLCxK3nfIz4K0RrIxkgWmfIANGaPQaI1r89DLFMtEH1EyFal8UA0RonBojWCzFABIP4DRCLX2UXDL2bJh/dii0T7dR9FOLWC0kTt8ZJmrh1WdLErSUTJj7RNutHIW7NnjRx6wyliVsbyU/8o8fGZaKt7I9C3HpOaeLWc7IT//CxcfHWc0oTt55TmPisG4aKEX+BOOvuorIQrTNkgAgG8XGIVtsyQLRy9XGIs27jJwvREgsDRLuLyADRsjMDRMvODBAtO38DxOTDcp8/+ZQ3EO3+0DdBdHCFWDYQ7ZYPA0S7i/M4xFl3+mOGGFYhKWDaQLRi+5siseIV4iaxzLrTnyxEewrPABEM4uMQdXcszt2D+Cped6fQEa+7Qu+If2JlnGpPvL+K9/4qxL/8HGpz9HWiQrydSy3R0S3Hxhj+cuwrlGpQNlCeueObXijeoGyhBIOyhRINyhYKGJQtFDQoWyjJoGyhZIOyhWIVbQPKRBWtW/cQitCBUlxcbsYWV65YQnAthLg8iIGXf1+ObZ34coJlgCH4envwC+48Ua18BNwTVeFHwD1RfX8E3BN1DkfADYZbEvdE3c4RcE/URx0B90Qd2hFwT9T7HQG3dZWSuIt1laK4rasUxW1dpShu6ypFcYPhlsRtXaUobusqRXFbVymK27pKUdzWVUrirtZViuK2rlIUt3WVoritqxTFDYZbErd1laK4rasUxW11NzNuuOK++TrGG+7qrDLhxZ3X72iEDG6D2yoTUdxguCVxW2UiitsqE1Hcdr9bFLfd7xbFbXW3JG5v97tFcdv9blHc0l1lXYaJPsQO7ohlGaa/2dCo+SWdVNfdj/Dm2CYTSKuIG3x+QRINyddIwJB8jQQNyddIkiH5Gkk2JF8jKYbkayTVkHyFJDhD8jUSf0IkuFavePut6+ax3uVleN6V67frApY3gGesdVkBnrEyZgUIsgB9jIv26LADsEBZRlrwZXg3LeireDyy+HRk8fnI4suRxdcDi5feAZBXvD+y+HBk8fHI4o+cYeORM2w8coaNR86w8cgZNh45w8KRMywcOcPCkTMsHDnDSu8XyCv+yBkWjpxh4cgZFo6cYeHIGRaPnGHxyBkWVWdYjGEVD7gVrzrD9sSrzrA98aozbE+86gzbE686w/bEq86wPfGqM2xHfFKdYXviVWfYnvgjZ9ikOsMmt5y6pBC24lVn2J541Rm2J151hu2JV51he+JVZ9ieeNUZtiM+q86wPfGqM2xPvOoM2xN/5AwrvSsGr/gjZ9h85Aybj5xh85EzbD5yhi1HzrDlyBm2HDnDFt0ZFtb78ym5rXjdGbYjXneG7YjXnWE74nVn2I543Rm2I153hv1YfNWdYTvidWfYjnjdGbYj/vF1HtcPNFz+DLfiXx2k0Q7yaAdltIM61oF3zg334Id7CMM9xOEeYLgHHO4hDfeQR3sQ/1zG7N+wiX7JSSEGf3vwG2/7mqEsb/ucoSxv+56hLG/7oKEsb/uioSjvYJ80lOVt3zRk/lJ+rStvH7a87VP5srztW/myvMF4i/K2/lKWt/WXsrytv5Tlbf2lLG/rL0V5R+svZXlbvyPL2/odWd5gvEV5W78jy/uJ9SCWHm/wqw5I16PbX9YNJa3bjZQbhr79zd7Lrbr3o6OH0rmWJYXlNmtJcfNz3gvHahw5OIIzjiwcvXFk4RiMIwvHaBxZOIJxZOGIxvGbOH74GtOFYzKOLByzcWThaP0MD0frZ1g4ovUzPBytn+HhaP0MD0frZ3g4gnFk4Wj9DA9H62d4OFo/w8PR+hkWjgxfa3VlffPydYAfcbw8dlue513+TH/h+KYnyOqJARc9MbqGnqhMDyjTg8r0JGE9vlz1+IaerExPUaan6tLD8GFQXj1emZ6gTI/0+uz9qsdjQw8o04PK9CRlerIyPUWZnqpLT3HK9HhleoIyPcrW56JsfS7C68/1l5qXP0NDj/D649e++vJnox8sVZee6pTp8cr0CK8/PsBVT27oicr0gDI9qExPUqYnK9NTlOmRXp/XO6sXadt+0DunTI9Xpico0xOV6QFlelCZnqRMT1ampyjTo2x99srWZ//4+nNZ46964sd60rqDX7qRHr17VwOyatKS3FOuDTWoSk1SpSarUlNUqama1DB8WY9TjZdVg8vj0pR8Q01QpSaqUgOq1KAqNUmVmqxKTVGlpmpSE50qNarW4qhqLY6q1uKoai2OqtbiqGotbr/3CGGVAyFfPfja8IDglt9DIgS4PfjNRR7voox3UYe7aL9jxevCj3cRxruIO128WQHJCklW46MljY+WND5a0vhoSXG8CxjvAse7SJRQT5lkVShW7aexsfr1J/b15hNVd37sH+pC4fLn9hGZbz9i5XaSJJxkCSeFwUkMq5MYWk7qeCeh/SyS24nncIJldYK14SRIOIkSTkDAiWe5JiWsTgo0nHCMJIW6tgmxNRKUcJIknGRmJ1AaTjjWrpT96qT4hpMq4CQ4CSee2Ul1DSdBwkmUcNKc8ZfVYV2NAG+qsFDezZBmlmhmmWZWaGaVZHbnPmTXzNPMAs0s0sxoURJpURJpURJpURJpURJpUQK0KAFalAAtSoAWJUCLEqBFCdCiBGhRArQoAVqUIC1KkBYlSIsSpEUJ0qIEaVGCtChBWpQgLUqQFiWJFiWJFiWJFiWJFiWJFiWJFiWJFiWJFiWJFiWJFiWZFiWZFiWZFiWZFiWZFiWZFiWZFiWZFiXttzbB5eVlK2i9bBXaL1d2zdrvQPbNPM0s0MwizQxoZkgza9+hvtxOXs1abX77pb2+WaGZVZJZ+021vpmnmQWaWaSZtaPkcn9mNauNW2btO/F9s0QzyzSzQjOrFLPoHM3M08zuPJ1zZX1KA65hFmlmQDNDmlmimWWaWaGZVZKZv/dsGFazkhpmnmYWaGaRZgY0M6SZJZpZppm1oySuL4FDhNowqySz9j3jvpmnmQWaWaSZAc0MaWaJZpZpZrQoCbQoibQoibQoibQoibQoibQoibQoibQoibQoibQoibQoAVqUAC1KgBYlQIsSoEUJ0KIEaFECtCgBWpQALUqQFiVIixKkRQnSogRpUYJ3ntjD2lHF7n5+MaflZ1Ox+JufTeV3H0nARxbwUQR81PE+khPw4QV8BAEfUcAHCPgQmOdJYJ4ngXmeOOZ5gbj6wLz1Ucf7yE7AhxfwcWd+7Pq1DFx/GAlxe283ZpRwkiScZAknHD9du9z1uzqJDSdVwElxEk68hJMg4SRKOAEJJ8jsBBrzpCQJJ1nCCcuMT7g6ybnhhGXGJ3d1sn0cFKuTcMIx43E92mNo3LCtQcJJlHACEk5QwkmScJIlnBRmJxEbTup4J8Dyag1eX+PA7BpOWGY8xqsT33ASJJywzPiyLvVYW9cEJJyghJMk4SRLOCkCTtrPazEuMYk3Li7L0ptNJNgAwQYJNolgkwk2hWBT99u0n8t2bDzBhhAHgRAH7WexuN4Dwpstt1YbJNgkgk0zDtLNBzbq1qYQbOp+m/aT146NJ9gEgk0k2ADBBgk2iWBDiINIiINIiIM7byy46x0il3Fr5UlW7d8YXzLTYuVxO4vuvK7QswKSFZKsEsmq/fNin9dq19cGw0KxuvMOwKXuWNtct1V45xWAnhWQrJBkded7R3Eljze3nFerTLIqJKtKsbq381jHypOsAskqkqyAZIUkK1JsZFJsZFJsZFJsFFJs3N2bqF7L+W12uLuD0MdWkWQFJKs773Zc73fGuF037uy007MqJKtKsbqzt0zPypOsAskqkqyAZIUkK1JsVFJs3NmLI64/yn15ur21qgQrvLOvRc/Kk6wCySqSrIBkhSSrRKg38M4OAz2rQrKqFKv2vZSS1kf2JaXr7c1l62e887H5tL4z5VNpOEOSVSJZZZJVIVm10eey3lktN2+QLVZ3Pi7es/Ikq0CyiiQrIFkhySqRrDLJqpCsSLERSbERSbERSbERSbERSbERSbFx5/Mi9ZqYa2xYZZJVIVlVilX7l+PBu3V38xDKX5bs7X35cimElwX+9nHfusC3f2fO7QQlnCQJJ1nCSZFwUgWctO8icjvxEk6ChBOJGY8SMx4lZjxKzHiUmPEoMeNRYsYniRmfJGZ8kpjxSWLGJ4kZnyRmfJKY8UlixieJGZ8kZnyWmPFZYsZnjhmP6+595VL3NpxECScg4QQlnCQJJ1nCSZFwUgWcFCfhxEs4kZjxhWPGJ1fXG7UhNJyAhBOUcJIknGQJJ0XCSRVwUp2EEy/hJEg4kZjxVWLGV4kZXyVmfJWY8VVixleBGZ+ck3DiJZwECScsM/7jh7HJgYQTlHCSJJxkCSdFwkkVcOKdhBMv4SRIOGnOk+yWX5dkf10mfHm3SQSbZhTn9eWHfPOBn9WmtG2WPiWnuLWp+23av2zIZVkr883eXauNJ9g0L2hZf1VeYMut/ZuGEnDt1dLWprnAlvU31KWlDT+2qY1r2n6KHENcBhTDzb7wwbdeuHJ+3QjG3bz9uLqow120P7/G68KPdxHGu4jjXcB4FzjeRfudyutWavF1c+KrizerTLIqd6zCh1btaRUBPrJqPwbvWnmSVaBYtZ/e5DUHZrxJgendpkmwwrKS1xS2NnW/TfsBQ8fGE2zav4/6+OWldOeFh54VkKyQZJVIVplkVUhWlWJVHMnKk6xIsVFIsVFIsVFIsVFIsVFIsdG+U/nxGtO+8VjXNFJjwyYSbIBggwSbRLDJ+9eySlib6/61OTtHsPEEm0CwiQSbdhykJUZrrlsbJNgkgk0m2BSCTd1v07550LHpxUHLhhAHnhAH7fceOjZIsEkEm0ywKQQbwnoQCOtBIKwHgRAHgRAHgRAHgRAHgRAHgXBNA+GaRsI1jTuv6Z+X//rfH377/MOPX37+/WLx8o//+eWnPz7/+sv7f/7xf/9e/uXH3z5/+fL5X9//+7dff/r5H//57efvv/z608u/fXLv//N3fwnf77yv4aLm5bJH/A7wRdnbP8Z6+UeAl//jRejldsnl6BTjRcdFy/8D",
|
|
20
|
+
"bytecode": "H4sIAAAAAAAA/9VUyw6CMBBseURBOaiJ3kz8gyIYOJJ49x8akKMe8OKNT5eabbqpVRKlJkzSbEs3szNlW0oUKESPvAH9tGnIFdhBDCA6aN/tRgFr9hviQKs7JH/O0iQw+BtQ/5OfWtIvIPktnT+bAM+xVfzYi6w77UaIesKWZ/nPbHpe9fhc/MFnh32k1caghm+uIYci3RuYR4Y8iRlRd9prh/eV5YzJei7w++RVO67va/lrWIeafvmOFV/qrDMe1wmv+YFXVVrypcYv4KBzGnMvbGHe1wvY45yo3mjul/J0vZ0b0gNB8gCVxsvQjgYAAA==",
|
|
21
|
+
"debug_symbols": "ndLNCoQgFAXgd7nrFvlX2avEEFYWgmiYDQzRu49FMzRDG9tcPOJ33ZwFOtnMQ61MbycoqwW0bYVX1oS0rAk0Tmmthvp8Dek2ENrfT6MwW5y8cB5KxPIEpOnCKWPB90pLKAnn6yMBhOMJiSc0nrBogi9/4YRnh+EUky/iaDfshslumPyGKeINuawApwX7GJbSH7OG9BROiUbLo2H9bNpT4fxrlH/dG51tZTc7ubXwVMAwK5QnGIe1YfUb",
|
|
108
22
|
"brillig_names": [
|
|
109
|
-
"
|
|
23
|
+
"sync_notes"
|
|
110
24
|
]
|
|
111
25
|
},
|
|
112
26
|
{
|
|
@@ -508,7 +422,7 @@
|
|
|
508
422
|
}
|
|
509
423
|
],
|
|
510
424
|
"kind": "struct",
|
|
511
|
-
"path": "authwit::aztec::protocol_types::
|
|
425
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
512
426
|
}
|
|
513
427
|
},
|
|
514
428
|
{
|
|
@@ -1607,7 +1521,7 @@
|
|
|
1607
1521
|
}
|
|
1608
1522
|
],
|
|
1609
1523
|
"kind": "struct",
|
|
1610
|
-
"path": "authwit::aztec::protocol_types::
|
|
1524
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
1611
1525
|
}
|
|
1612
1526
|
},
|
|
1613
1527
|
{
|
|
@@ -1718,8 +1632,8 @@
|
|
|
1718
1632
|
"visibility": "databus"
|
|
1719
1633
|
}
|
|
1720
1634
|
},
|
|
1721
|
-
"bytecode": "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Vw1Q31lT3zBT3wdT395S37VS34xS32NS3zpS3xFS3+hR379R35ZR321R30RR3xtR3/JQ38lQ36BQ33dQ305Q3yVQ7/xX79NX76pX74FX71hX7y9X7wZX791W77RW74u+BKDec6zeIazez6vefaveK6ve2areh6reNare46nekaneP6ne7ajem6jeSaje96fepafeU6feAafer6beXabeC6beuaXeZ6XeFaXew6TecaTeH6TezaPee6PeKaPe1/IQQL1nRL3DQ70fQ717Qr3XQb0zQb2PQD3rr56jV8+oq+e/1bPV6rll9Uywet5WPcuqnhNVz2Cq5xvVs4PquTz1zJt6nkw9q6Weg1LPGKnnd9SzMeq5E/VMh3peYgVA3eev7qFX615177e6r1rds6zu4VX3x6p7PNU9j+oeQHVPnLpHTN0zpe4hUvfUqHtM1D0X6h4EdU1eXaNW12zVNUx1TU9d41LXfNQ1EHVNQJ0jV+eM1TlUdU5RnWNT55zUORh1TkLF6CpmVTGcimnUGr/Zf0uFgLp3VW2bBWo2expRVa3cr+71VPc+qnsB1b1x6l4xde+UupdI3Vuj7jVR916oexHUtXl1rVpdu1XXMtW1PXWtS137UddC1LUBda5cnTtW51LVuUV1rk2de1LnYroBugN6AFQsp2IbdR91z0DdbSxKt7P/dvp4YJe9nr5qKC7X3v77RHLPw/boXmvXyjW82lZMKbvqln+m7IT3zbL//tq+tO8bOyxdB+/bw+V4m4eK70u77Bvqsm+yy76cy749XPYd4rLvBJd957rsu8pl3+0u+x512feSy773XfZ947LvT5d9ZeHi+9Zx2bepy764y76BLvvGu+yb7bJvN5d9B7jsO9Zl35ku+y532Xerve+ZM1544upFuUq8706X3z3msu8JlzqXufzuaZffPevyuxdc9r3kUucrLr97zeV3b7j8brnLvndc6nzP5XcrXH73ocvvPnHZ95lLnV+4/O4rl9994/K771z2/eBS508uv/vF5Xe/ufzuT5d9f7vU+a/L74KR4r8LRYr/rsRlX6lLnS1cftfK5XdtXH7XzmVfB5c6O7n8bh2X33Vx+d1Al98dau+7c8Cll22+9KQhTn6Z/VetV/H/7f+uXDspaRlg/z/auM0qQ/VS15+JZrJlgdobMf94WaBmPcnVPk6dDPWvfP5FbYOr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",
|
|
1722
|
-
"debug_symbols": "7V3tjuS2sX2X/b0/yPoimVcJgsBxfIMFDDuwnQtcBH73qxlvq9ujlrRTK3afWvFPMBvrqE6XisUqqk/1fz/884d//Odff//00//8/OuHv/z1vx9+/Pn773779PNP07/++yHT6//367+/++nln7/+9t0vv334S7aWPn744ad/Tn+WlH7/+OF/Pv34w4e/cLPfPy6upsr189VU7Xp1FrpzNWtun69mbbRzdUu1fL665ZTnq4nSnatzqXzhXdP13nSPdk5kl4tT0duL//bxQ+bhmPuOkeGY+47R4Zj7jrGvdwy3Qp+vlpTqfHXjVwulu4X6XgsvoHYPRET58oxJ815ENLrQ4tTK9WqWe1enYnMApZbser3kO9dPMXaJoGpEezHBc7xl5vo1MUFpuGbNNXm4Zs01hO8asdk1Nwm8e5IlHq5Zc40M16y5Rr/eNZz1UldMK533XCPtQp6UduuhVq9uz9fckcs9NzLJhTdTuTqm6utntRN91nKiz1pP9FnbeT4rpxN91nyiz0on+qx8os8qJ/qsJ6qb+ER1E5+obuIT1U18orpJTlQ3yYnqJjlR3SQnqptETvRZT1Q3yYnqJjlR3SQnqpvkRHWTnqhu0hPVTXqiuklPVDepnOiznqhu0hPVTXqiuklPVDfpieomO1HdZCeqm+xEdZOdqG4yOdFnPVHdZCeqm+xEdZOdqG6yE9VN5UR1UzlR3VROVDeVE9VNRU70WU9UN5UT1U3lRHVTOVHdVE5UN9UT1U31RHVTPVHdVE9UN1U50Wc9Ud1UT1Q31RPVTfVEdVM9Ud3UTlQ3tW+rbhK9znm5EZNPn3V5cTab1eEllbeO+baKrHc5ptw4ptW3jvm2KjKdBwqw1j3HpPnWOSeZLy71zsWSymXkjeSb4QPc9O4qZbuu0jZfTfnV5zJ83sHnLHLh8fq5/uzzb6tC7efznG32udSvi/Nvq1JG8fl2nH9bFXtHn9s89iw3+bo4/7Y6BxSfb8f5t9XB9PM5pctEJiFJXxXnOX1brRSK0zcDPadvq6fr6HSV2ek3d/ZF+rfVL6I4fSfSRy/6RU7nNt9Z2Nqe04vNHqmZb1j/4XQ5r9Mpz04n+pPTXz1z4pZxxzMnbux2PHPi9otsnrjJN4Ok76aw6XNdB4XmvcmfT5sTOqXl8Ty/qed54rbxW3ye+RvrSNt8tVHZfp6N06WYbkzXD/nyCZY8ctOLH6e/q95e/urIb6zLfJ4jH985apvXqpH96d6vjB7fVhW6vJ+kIrpkJHCMFI6RwTEqcIwqHKOGxogSHKMMx4jgGMHlbILL2QSXswkuZxNczia4nE1wOZvhcjbD5WyGy9kMl7MZLmczXM5muJzNcDmb4XI2w+VsgcvZApezBS5nC1zOFricLXA5W+BytsDlbIHL2QKXsxUuZytczla4nK1wOVvhcrbC5WyFy9kKl7MVLmcrXM42uJxtcDnb4HK2weVsg8vZBpezDS5nG1zONricbXA5u8Dl7AKXswtczi5wObvA5ewCl7MLXM4ucDm7wOXsApezK1zOrnA5u8Ll7AqXsytczq5wObvC5ewKl7MrXM6ucDm7weXsBpezG1zObnA5u8Hl7AaXsxtczm5wObvB5eyGlrMpoeVsSmg5mxJazqaElrMpoeVsSmg5mxJazqaElrMpoeVsSnA5O8Pl7AyXszNczobTQRKcDpLgdJAEp4MkOB0kwekgCU4HSXA6SILTQRKcDpLgdJAEp4MkOB0kwekgCU4HSXA6SILTQRKcDpLgdJAEp4MkOB0kwekgCU4HSXA6SILTQRKcDpLgdJAEp4MkOB0kwekgCU4HSXA6SILTQRKcDpLgdJAEp4MkOB0kwekgCU4HSXA6SILTQRKcDpLgdJAEp4MkOB0kwekgCU4HSXA6SILTQRKcDpLgdJAEp4MkOB0kwekgCU4HSXA6SILTQRKcDpLgdJAEp4MkOB0kwekgCU4HSXA6SILTQRKcDpLgdJAEp4MkOB0kwekgCU4HSXA6SILTQRKcDpLgdJAEp4MkOB0kwekgCU4HSXA6SILTQRKcDpLgdJAEp4MkOB0kwekgCU4HyXA6SIbTQTKcDpLhdJCc0HI2w+kgGU4HyXA6SIbTQTKcDpLhdJAMp4NkOB0kw+kgGU4HyXA6SIbTQTKcDpLhdJAMp4NkOB0kw+kgGU4HyXA6SIbTQTKcDpLhdJAMp4NkOB0kw+kgGU4HyXA6SIbTQTKcDpLhdJAMp4NkOB0kw+kgGU4HyXA6SIbTQTKcDpLhdJAMp4NkOB0kw+kgGU4HyXA6SIbTQTKcDpLhdJAMp4NkOB0kw+kgGU4HyXA6SIbTQTKcDpLhdJAMp4NkOB0kw+kgGU4HyXA6SIbTQTKcDpLhdJAMp4NkOB0kw+kgGU4HyXA6SIbTQTKcDpLhdJAMp4NkOB0kw+kgGU4HyXA6SIbTQTKcDpLhdJAMp4NkOB0kw+kgGU4HyXA6SIbTQTKcDpLhdJAMp4NkOB0kw+kgGU4HyXA6SIbTQTKcDpLhdJAMp4MUOB2kwOkgBU4HKXA6SEloOVvgdJACp4MUOB2kwOkgBU4HKXA6SIHTQQqcDlLgdJACp4MUOB2kwOkgBU4HKXA6SIHTQQqcDlLgdJACp4MUOB2kwOkgBU4HKXA6SIHTQQqcDlLgdJACp4MUOB2kwOkgBU4HKXA6SIHTQQqcDlLgdJACp4MUOB2kwOkgBU4HKXA6SIHTQQqcDlLgdJACp4MUOB2kwOkgBU4HKXA6SIHTQQqcDlLgdJACp4MUOB2kwOkgBU4HKXA6SIHTQQqcDlLgdJACp4MUOB2kwOkgBU4HKXA6SIHTQQqcDlLgdJACp4MUOB2kwOkgBU4HKXA6SIHTQQqcDlLgdJACp4MUOB2kwOkgBU4HKXA6SIHTQQqcDlLgdJACp4MUOB2kwOkgBU4HKXA6SIHTQQqcDlLgdJACp4MUOB2kwOkgBU4HKXA6SIHTQSqcDlLhdJAKp4NUOB2kJrScrXA6SIXTQSqcDlLhdJAKp4NUOB2kwukgFU4HqXA6SIXTQSqcDlLhdJAKp4NUOB2kwukgFU4HqXA6SIXTQSqcDlLhdJAKp4NUOB2kwukgFU4HqXA6SIXTQSqcDlLhdJAKp4NUOB2kwukgFU4HqXA6SIXTQSqcDlLhdJAKp4NUOB2kwukgFU4HqXA6SIXTQSqcDlLhdJAKp4NUOB2kwukgFU4HqXA6SIXTQSqcDlLhdJAKp4NUOB2kwukgFU4HqXA6SIXTQSqcDlLhdJAKp4NUOB2kwukgFU4HqXA6SIXTQSqcDlLhdJAKp4NUOB2kwukgFU4HqXA6SIXTQSqcDlLhdJAKp4NUOB2kwukgFU4HqXA6SIXTQSqcDlLhdJAKp4NUOB2kwukgFU4HqXA6SIXTQSqcDlLhdJAKp4NUOB2kwukgDU4HaXA6SIPTQRqcDtISWs42OB2kwekgDU4HaXA6SIPTQRqcDtLgdJAGp4M0OB2kwekgDU4HaXA6SIPTQRqcDtLgdJAGp4M0OB2kwekgDU4HaXA6SIPTQRqcDtLgdJAGp4M0OB2kwekgDU4HaXA6SIPTQRqcDtLgdJAGp4M0OB2kwekgDU4HaXA6SIPTQRqcDtLgdJAGp4M0OB2kwekgDU4HaXA6SIPTQRqcDtLgdJAGp4M0OB2kwekgDU4HaXA6SIPTQRqcDtLgdJAGp4M0OB2kwekgDU4HaXA6SIPTQRqcDtLgdJAGp4M0OB2kwekgDU4HaXA6SIPTQRqcDtLgdJAGp4M0OB2kwekgDU4HaXA6SIPTQRqcDtLgdJAGp4M0OB2kwekgDU4HaXA6SIPTQRqcDtLgdJAGp4M0OB2kwekgDU4HaXA6SIPTQRqcDtLgdJAFTgdZ4HSQBU4HWeB0kCWh5ewCp4MscDrIAqeDLHA6yAKngyxwOsgCp4MscDrIAqeDLHA6yAKngyxwOsgCp4MscDrIAqeDLHA6yAKngyxwOsgCp4MscDrIAqeDLHA6yAKngyxwOsgCp4MscDrIAqeDLHA6yAKngyxwOsgCp4MscDrIAqeDLHA6yAKngyxwOsgCp4MscDrIAqeDLHA6yAKngyxwOsgCp4MscDrIAqeDLHA6yAKngyxwOsjyBB1kK/O92+3Vd+8tNN9bqFyvzu3OxSrJPl+sQnJ78etnlRN9Vj3RZ7UTfdZyos9aT/RZ23k+6xPUt8/7rPlEn5VO9FlPVDc9QeX8vM96orrJTlQ32YnqJjtR3WQnqpvKieqmcqK6qZyobionqpueMGngeZ/1RHVTOVHdVE5UN5UT1U3lRHVTPVHdVE9UN9UT1U31RHXTE6Z9PO+znqhuqieqmyp63WRJLp/VKC3oo5dCO/TRq5tt+g29YNmhj16DmOpMvyzpo5cVO/TRK4Ud+hKbPvp+vkMffYveyTyxd90We9dtoXfdmuB33a2lW1PoXbem0LtuTaF33ZpC77o1hd51a4Lfdbfpw++62/Thd91t+vC77ib9HLrXrRl+192mD7/rbtOH33W36cfedXPsXTfH3nVz7F03x951c+xdl2L3uhS716XYvS7F7nWfMHzryKKB4HfdbfqhT5grhT5hrhR716XYuy7H3nU59q7LsXddjr3rPmF82qH0Y/e6HLvX5di9Lod+r1s59ntdiX3CLLFPmCX2riuxd90nDMA7lH7sXVdi77oSe9eV2L2uxO51NXavq7F7XY39Xhd+KuEOffhdd5t+7BNm+HGAO0s39q4LP7Rvh37sXRd+tN4O/di7LvwAvB36sXtd+DF1O/Rj97rww+S2iwb4+XA79GOfMMNPcdumDz+YbXvpws9a26Efe9eFn4i2Qz/2rgs/t2yHfuxeF3662A792L0u/AywbfrwY722iwb4SV079GOfMMPP09qhH3vXhZ96tUM/9q6LP5tqm37sXRd/NtUmffzZVNv0Y/e6sWdT1dizqSr+bKrNogF/NtU2/dgnzLFnU1X82VTbSzf0rttiz6ZqsWdTtdizqVrs2VQtwe+62/RD97ot9myqFns2VcOfTbVVNDT82VSb9GPPpmqxZ1M1/NlUm0sXfzbVNv3Yu27s2VQt9myqFns2VYs9m6rFnk3VYs+marFnUzX82VSbRQP+bKpt+vC77jb90CfMDX821fbSjb3rxp5N1WLPpmqxZ1O12LOpWuzZVC32bKoWezZViz2bquHPptosGvBnU23Tj33CHHs2VcOfTbW5dPFnU23Tj73rxp5N1WLPpmqxZ1O12LOpWuzZVC32bKoWezZVw59NtVk04M+m2qYf+4Q59myqhj+banvpxt51Y8+marFnU7XYs6la7NlULfZsqhZ7NlWLPZuqxZ5N1fBnU20WDfizqbbpxz5hjj2bquHPptpeurF33dizqVrs2VQt9myqFns2VYs9m6rFnk3VYs+marFnUzX82VSbRQP+bKpN+rFnU7XYs6ka/myqzaWLP5tqm37sXTf2bKoWezZViz2bqsWeTdViz6ZqsWdTtdizqRr+bKrNogF/NtU2ffhdd5t+7BNm/NlU20s39q4bezZViz2bKqfYw6km/qH33Yl/6HZ34h+63534w2+9O/xDd7wT/9Cvdyf+od/vTvxDHzVP/EOfNeeEP6Zqe/3iz6na4R98/409qWriH3z/jT2rauIfuvmd+Ifufif+odvfiX/w/hd/YNV2/YA/sWqHf+iD54l/6JPniX/w/Rd/atUO/+D7b+y5VRP/4Ptv7MlVOcUeXTXxD97/xh5eNfEP3v/ij6/arh/w51ft8A9+/hx7gtXEP/j+iz/Dapt/7CFWE//g+2/sMVYT/+D7b+xBVhP/4P1v7FFWE//g/S/+MKvt+gF/mtU2/9jjrCb+wc+f8Qdaba9f/IlWO/yD77+xZ1pN/IPvv7GnWk38g/e/seda5RR7sNXEP3j/iz/aart+wJ9ttcMffv/d4R/8/Bl/vNXO+g2+/8YecDXxD77/xh5xNfEPvv/GHnI18Q/e/8YeczXxD97/4g+62q4f8Cdd7fAPfv4ce9ZVTvjDrrbXL/60qx3+wfff2POuJv7B99/YE68m/sH739gzryb+wfvf2FOvcsIfe7VdP+DPvdrhH/z8Ofbkq4l/8P0Xf/bVDv/g+2/s6VcT/+D7b/D5Vzn4/KscfP5VDj7/Kgeff5UT/P67WT9k/PlXO/xjnz/n4POvMv78q531G3z/DT7/Kgeff5WDz7/Kwedf5eDzr3Lw+Vc5+PyrHHz+Vcaff7VdP+DPv9rmH3z+VQ4+/yrjz7/aXr/48692+Afff4PPv8rB51/l4POvcvD5Vzn4/KscfP5VDj7/KuPPv9quH/DnX+3wh99/d/gHP3/Gn3+1s36D77/B51/l4POvcvD5Vzn4/KscfP5VDj7/Kgeff5WDz7/K+POvtusH/PlXO/yDnz8Hn3+V8edfba9f/PlXO/yD77/B51/l4POvcvD5Vzn4/KscfP5VDj7/Kgeff5Xx519t1w/48692+Ac/fw4+/yrjz7/aWb/B99/g869y8PlXOfj8qxx8/lUOPv8qB59/lYPPv8rB519l/PlX2/UD/vyrHf7Bz5+Dz7/K+POvdtZv8P03+PyrHHz+VQ4+/yoHn3+Vg8+/ysHnX+Xg869y8PlXGX/+1Xb9gD//apt/8PlXGX/+1Xb8B59/lYPPv8r48692+Afff/HnX+34P3j/iz//aod/7P2Xgs+/ouDzryj4/CsKPv+KEvz+u8M/9v5L+POvdvjH7n8Jfv5VqZerpz95yf/h+y8ntsvVqezdO1/9n83qfDWVexfXQpeLayvbF3NJ9cKjKN9e/OqZx0/WCuOZPDyz4hkanlnxDA/PrHhGhmdWPKPDMyueseGZFc+U4ZkVz9ThmRXPnLcGbvlyusXthsfdi2up7fPFtealG+m8BfOhbjxvdf0uNxpdSFcT26EhOqeA6W+SpdfPW7k/0+vn7QoOTRky3HiEG8/bbzwzB5y3l3mm18/bJx2aMs7bVB3qxtGBfZEbxS4OqdLSwo08OrAjopFHB3aIG0dL9YSNnUdL9Qyvy/D6ESljdGCHuHG0VM/IAaOleobXRwd2SMoYHdgRbpTRgR3RyMrowA6JxtGBHeLG0VI9YWN//GT14fXJ66MDOyRljA7sEDeOluoZOWC0VM/w+ujAjkgZOjqwQ9w4OrAjGlkdHdgh0Tg6sEPcKMONj9/YdbRUz/D66MAOSRmjAzvEjaOlekYOGC3VE7xuowM7ImXY6MAOcePowI5oZG10YIdEoww3HuHG0VI9Y2MfLdUzvD46sENSxujADnHjaKmekAPKaKme4fXRgR2RMsrowA5x4+jAjmhkH/+Ded9mNI4O7BA3jpbqGRv7aKme4fXRgR2SMkYHdoQb62ipnpAD6mipnuH10YEdkjJGB3aIG2W48YBGto4O7JBoHB3YIW4cLdUzNvbRUj3D66MDOyJltNGBHeLG0VI9IQe00VI9w+ujAzskZchw4xFuHB3YEY1sGx3YIdE4OrBD3Dhaqmds7KOlerzXOY0O7ICUwWl0YIe4cbRUz8gBo6V6htdleP2IlDE6sEPcODqwAxrZ6YOc1Y2Savp8sUzF/PbFjdKFRqNdGkn54r7pb2lLr5+2YXuq10/bsD3T6/m0DdtTvX7a/u6pXj9tO/hUr5+2HXyq12V4/QleP233qGQXHspUl545bUO465nT9ni7njltH7brmdP2SnueodP2M7ueOW3PseuZ0/YFu545be2+6xkZnlnxzKiB1zxz3hqYy6UnU2HduXNhunzG6e+625VNm/7clbEu36LQeSvs5/r9vPX7c/1+3u7ggX63hd/5vL1HV7/vnbrxeTub5/r9vH3Tc/1+3q7suX6X4fen+P28HeX7/C5qs9+Vdr57ll+4Xi7PJeWl30e/2sXvpcns90p3/D761ef4ffSrz/H76Fef4ncZ/epz/D761ef4ffSrz/H76Fef43cZfv8iv08N6+z3YrR05GhAD3Lk6Ci/zJG1XR3Z8lLtKedtEUXq7Miye+fpAGq+NaXl2ZKct+c72JHnbeKOdaSetys72JHnbbMOduR5+6aDHXneRuhgR8pw5DGOPG9nc7Ajz9vZHOzI0dl8mSM5XW/NzNuXC80eESrXi3O7SyTN32OWm1FD08V/PKLRM8E/otGNoT8iG30e/CMaHST8Ixq9KfwjGl0v/COS8YjQH9Ho1OEf0TgDgH9E43QB/hGN0wX4RzROF9AfURmnC/CPaJwuwD+icboA/4jG6QL8I5LxiNAf0ThdgH9E43QB/hGN0wX4RzROF+Af0ThdQH9EdZwuwD+icboA/4jG6QL8IxqnC/CPSMYjQn9E43QB/hGN0wX4RzROF+Af0ThdgH9E43QB/RG1cboA/4jG6QL8IxqnC/CPaJwuwD8iGY8I/RGN0wX4RzROF+Af0ThdgH9E43QB/hGN0wXwRyRpnC7AP6JxugD/iMbpAvwjGqcL8I9IxiNCf0RPOF2ol3sz3XzWl3v/QengbppufvvrhdIfRu72g9na/BuoJaUdI2btEj5W+Hr1iwuWD6JdAsL45jHkic/0r3/88unHHz/96+8//vz9d799+vmnX1+Q6eV/7v/6Z5H5x1qL3Nyv6h3TdHX4jSs0vXji/o9cHnd77nt76Xt77Xt763v70vf2te/tW9fb3/9xqONu33fVSt9VK31XrfRdtdJ31UrfVSt9V630XbXSd9Vq31WrfVet9l212nfVat9Vq+9dtS8Yc2CKA1MdmPZ+jCUHJjsw5MCwAyMOjCMOzBEH5ogDc8SBOeKgOOKgOOKgOOKgOOKgOOKgOOKgOOKgOOKgOOKgOOKgOuKgOuKgOuKgOuKgOuKgrsSBlRlzc3LzGWMOTHFgqgPT3o9pyYHJDgw5MOzAiAPjiIPmiIPmiIPmiIP7r1KLpcuPXk5/6htMvv9ybw+UPSDygNgDEg9IPSDzgIoHVD0gT0RkT0RkT0RkT0RkT0RkT0RkT0RkT0RkT0RkT0RkT0SQJyLIExHkiQjyRAR5IoI8EUGeiCBPRND9iND5xVGp5U+gj9sXN1lYaL0tcOpuIXe3QN0tcHcL8tUWpreUl2iVmq+nM1Pe/8OE9jdh/U2U/iZqfxNfv7Bleuf8+WKlZH8ycedN5/ye3OzmZWpOn1+mYtHJWHTowXRY6RI93DIvokcYjZCgEVI0QoZGqKARqmiEGhghTWiEMhohtEytaJla0TK1omVqRcvUipapFS1TK1qmNrRMbX0z9asJ6m+C+5v4+vyoRPM3h4nL0oT2N2H9TZRjTYgsTdT+Jlp3EyUdYGL+6rFyWj6LkvuboP4mvn51K88v7JRrWpioB5go85mwFlpm2ir9TWh/EwckkGJ5NlGX66KW/iZqfxPtWBNteVbYUn8Tub+JAxJIo8sxnbZCOyWR2SXCrbTf357pNcaiI1h0FIuOYdEpWHQqFp2GRIdSwqKTsehAZWVKUFmZElRWpgSVlSlBZWVKUFmZ0tdnZUvpUlJZEt6hM+2Sl1tPf94QavoHoQZGKCc0QhmNEKERYjRC8mBCUz1xOWGY/qxLQopGyNAIFTRCFY1QAyNECY1QRiNEaIQYjRBapia0TE1omZrQMjWhZWpCy9SMlqn58ZlabCZUbEmI0AgxGiFBI6RohAyNUEEjVNEINTBCktAIPXzZ53T5Ks70Jy0JPTyoc573skx5SejhQZ1NZ0JNl4QaGCFNaIQyGiFCI8RohASNkD6REN18UWomZGiEChqhx2dqvW4dttzLtIERsoRGKKMRIjRCjEZI0AgpGqGHZ+qpr5gTY0lLQgWNUEUj1MAIlYRGKKMRIjRCjEZI0AgpGqHH56EmM6G2PI6pD19lnOfx/JyXbVB9+CpjbTOhuvzuR2U0QoJGSNEIGRqhgkaoohFqTyQkaXkK2xIaoYxG6AmZ+rp16HIva4xGSNAIKRohQyNU0AhVNEINixCnhEYooxECy9ScwDI1J7BMzQksU3MCy9Sc+mbqVxO1v4nW3URnAcyridzfBPU3cURWmk/qLe1Lu9J8OGM51yUhQSOkaIQMjVBBI1TRCLWuhF5MHCEkyfOviFrm9pWf+QghybGECI0QoxESNEKKRsi6Eno1UfqbqP1NtO4mOPU3kfubOKLG2w7aQ2QQOyakvwntb8L6myj9TdT+Jlp3E4d8iX/HRO5vov/qlv6rW/qvbum/uqX/6pb+q1v6r27pv7q1/+rW/qtb+69u7b+6tf/q1v6rW/uvbu2/urX/6tb+q9v6r27rv7qt/+q2/qvb+q9u67+6rf/qtv6r2/qvbuu/ukv/1V36r+7Sf3WX/qu79F/dpf/qLv1Xd+m/ukv/1V36r+7af3XX/qu79l/dtf/qrv1Xd+2/umv/1V37r+7af3XX/qu79V/drf/qbv1Xd+u/ulv/1d36r+7Wf3W3/qu79V/drfvqlpT6m8j9TVB/E9zfhPQ3of1NWH8Tpb+J2t9E/9Wd+6/u3H915/6rO/df3bn/6s79V3fuv7pz/6X3JV+uq7cmXkBf8nW5JSh7QOQBsQckHpB6QOYBFQ+oekCeiGBPRLAnItgTEeyJCPZEBHsigj0RwZ6IYE9EsCcixBMR4okI8USEeCJCPBEhnogQT0SIJyLEExHiiQj1RIR6IkI9EaGeiFBPRKgnItQTEeqJCPVEhHoiwjwRYZ6IME9EmCcizBMR5okI80SEeSLCPBFhnogonogonogonogonogonogonogonogonogonogonoionoionoionoionoionoionoionoionoionoionohonohonohonohonohonoho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",
|
|
1635
|
+
"bytecode": "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",
|
|
1636
|
+
"debug_symbols": "7V3brhy3sf0XPeuBrBvJ/EpgBLbjEwgw7MB2DnAQ+N9Pb1nTM9p90y41exZFvgRbca+u1cVikcXuVfPfd//86Yf//OsfH375n19/f/e3v//33c+//vj9Hx9+/WX613/fRfr4//3+7+9/efnn7398/9sf7/4WrYT373765Z/TnymEP9+/+58PP//07m9cyp/vF1dT5vzpasp2vzomXbmaNZZPV7MWOrg6l6Sfrs4llzuTGFeujinzjXcO93uTrV0cyG4Xhxfj94u/e/8u8nDMumNkOGbdMTocs+4Y+3rHSNAbeQklzlfbXxZSdQv5rRZeQGUVlEVnzz44ayMiCtFtjENJ96slrF0dks0BFEqwh+t5LSY03kY5q4aDmMgk89X04KL1q1lvMSEU9uOHqNwCmTgeBRvPUR+Z89dEJoUxQNgDFMcAYQ8QjQH6sgFKsxspycHFJy6+xGOAsAdIxgBhD5B+/QBx1HQboFj4aIBivF1NUeRw8PN98OM9m0elNSYk8Xb15NGHmiF8fFjr6WFTTw+be3rY0tHDcujpYWNPD0s9PSz39LDS08P2tIPinnZQ3NMOinvaQXFPOyjpaQclPe2gpKcdlPS0gxLp6WF72kFJTzso6WkHJT3toKSnHZT2tIPSnnZQ2tMOSnvaQan09LA97aC0px2U9rSD0p52UNrTDsp62kFZTzso62kHZT3toEx6etiedlDW0w7KetpBWU87KOtpB5V62kGlnnZQqacdVOppB5Wkp4ftaQeVetpBpZ52UKmnHVTqaQeVe9pB5Z52ULmnHVTuaQeVpaeH7WkHlXvaQeWedlC5px1U7mkHVXraQZVvawcleu+m9CCKf3nY5dXRbBaYp5AWrvm29ltvc016cE3JC9d8W7szFZtdkw9dE+K908BD55VoaeVqCenWXkriQxMDfnHqymRlu0/WMl9N8aPXZXi9itdZ5MaEi732+re1X63p9ThfLVHy18X6t7VxxvH6fqx/Wzv4ql43mr1e5Oti/dsqJXC8vh/r31ZNU9PrFG69poQkfFWsx/BtVVc4bt8N9snycPuXul1ldvvDvX3R/m3VkDhuP4j2UZ9+odu5zPcWtnLk9mSzT3LkByZ/uV06djvx3EeahD5z+0ff9FxGHvmm52LvyDc9l2QyXx0/O7NcTWUU56WYSB8OfdZ7nPbdETWGnovOEVf14qrnsnrEVbW4ij2fG3Cem/1rTAdxFUuahyg8HgiPuFqLq54PRkZc1Yurb+zkp8xXG6WDuCqJb1eXJPdDBVv/2RPOMq+D8nCq8Olnm+I3dpjzRE/K5Z6k+Vctpj1O+OzeHxldfyrCepvj9PmB1ydGBscowTHKcIwKGiMKcIwiHCOCY8RwjASOEVzOJricTXA5m+ByNsHlbIbL2QyXsxkuZzNczma4nM1wOZvhcjbD5WyGy9kMl7MFLmcLXM4WuJwtcDlb4HK2wOVsgcvZApezBS5nC1zOVricrXA5W+FytsLlbIXL2QqXsxUuZytczla4nK1wOdvgcrbB5WyDy9kGl7MNLmcbXM42uJxtcDnb4HK2weXsBJezE1zOTnA5O8Hl7ASXsxNczk5wOTvB5ewEl7MTXM7OcDk7w+XsDJezM1zOznA5O8Pl7AyXszNczs5wOTvD5ewCl7MLXM4ucDm7wOXsApezC1zOLnA5u8Dl7AKXswtazqaAlrMpoOVsCmg5mwJazqaAlrMpoOVsCmg5mwJazqaAlrMpwOXsCJezI1zOjnA5O8Ll7AiXs+F0kASngyQ4HSTB6SAJTgdJcDpIgtNBEpwOkuB0kASngyQ4HSTB6SAJTgdJcDpIgtNBEpwOkuB0kASngyQ4HSTB6SAJTgdJcDpIgtNBEpwOkuB0kASngyQ4HSTB6SAJTgdJcDpIgtNBEpwOkuB0kASngyQ4HSTB6SAJTgdJcDpIgtNBEpwOkuB0kASngyQ4HSTB6SAJTgdJcDpIgtNBEpwOkuB0kASngyQ4HSTB6SAJTgdJcDpIgtNBEpwOkuB0kASngyQ4HSTB6SAJTgdJcDpIgtNBEpwOkuB0kASngyQ4HSTB6SAJTgdJcDpIgtNBEpwOkuB0kASngyQ4HSTB6SAJTgdJcDpIgtNBEpwOkuB0kASngyQ4HSTB6SAJTgfJcDpIhtNBMpwOkuF0kBzQcjbD6SAZTgfJcDpIhtNBMpwOkuF0kAyng2Q4HSTD6SAZTgfJcDpIhtNBMpwOkuF0kAyng2Q4HSTD6SAZTgfJcDpIhtNBMpwOkuF0kAyng2Q4HSTD6SAZTgfJcDpIhtNBMpwOkuF0kAyng2Q4HSTD6SAZTgfJcDpIhtNBMpwOkuF0kAyng2Q4HSTD6SAZTgfJcDpIhtNBMpwOkuF0kAyng2Q4HSTD6SAZTgfJcDpIhtNBMpwOkuF0kAyng2Q4HSTD6SAZTgfJcDpIhtNBMpwOkuF0kAyng2Q4HSTD6SAZTgfJcDpIhtNBMpwOkuF0kAyng2Q4HSTD6SAZTgfJcDpIhtNBMpwOkuF0kAyng2Q4HSTD6SAZTgfJcDpIhtNBMpwOkuF0kAyng2Q4HSTD6SAZTgfJcDpIhtNBMpwOkuF0kAyngxQ4HaTA6SAFTgcpcDpICWg5W+B0kAKngxQ4HaTA6SAFTgcpcDpIgdNBCpwOUuB0kAKngxQ4HaTA6SAFTgcpcDpIgdNBCpwOUuB0kAKngxQ4HaTA6SAFTgcpcDpIgdNBCpwOUuB0kAKngxQ4HaTA6SAFTgcpcDpIgdNBCpwOUuB0kAKngxQ4HaTA6SAFTgcpcDpIgdNBCpwOUuB0kAKngxQ4HaTA6SAFTgcpcDpIgdNBCpwOUuB0kAKngxQ4HaTA6SAFTgcpcDpIgdNBCpwOUuB0kAKngxQ4HaTA6SAFTgcpcDpIgdNBCpwOUuB0kAKngxQ4HaTA6SAFTgcpcDpIgdNBCpwOUuB0kAKngxQ4HaTA6SAFTgcpcDpIgdNBCpwOUuB0kAKngxQ4HaTA6SAFTgcpcDpIgdNBCpwOUuB0kAKngxQ4HaTA6SAFTgcpcDpIgdNBKpwOUuF0kAqng1Q4HaQGtJytcDpIhdNBKpwOUuF0kAqng1Q4HaTC6SAVTgepcDpIhdNBKpwOUuF0kAqng1Q4HaTC6SAVTgepcDpIhdNBKpwOUuF0kAqng1Q4HaTC6SAVTgepcDpIhdNBKpwOUuF0kAqng1Q4HaTC6SAVTgepcDpIhdNBKpwOUuF0kAqng1Q4HaTC6SAVTgepcDpIhdNBKpwOUuF0kAqng1Q4HaTC6SAVTgepcDpIhdNBKpwOUuF0kAqng1Q4HaTC6SAVTgepcDpIhdNBKpwOUuF0kAqng1Q4HaTC6SAVTgepcDpIhdNBKpwOUuF0kAqng1Q4HaTC6SAVTgepcDpIhdNBKpwOUuF0kAqng1Q4HaTC6SAVTgepcDpIhdNBKpwOUuF0kAqng1Q4HaTC6SAVTgepcDpIhdNBKpwOUuF0kAqng1Q4HaTC6SANTgdpcDpIg9NBGpwO0gJazjY4HaTB6SANTgdpcDpIg9NBGpwO0uB0kAangzQ4HaTB6SANTgdpcDpIg9NBGpwO0uB0kAangzQ4HaTB6SANTgdpcDpIg9NBGpwO0uB0kAangzQ4HaTB6SANTgdpcDpIg9NBGpwO0uB0kAangzQ4HaTB6SANTgdpcDpIg9NBGpwO0uB0kAangzQ4HaTB6SANTgdpcDpIg9NBGpwO0uB0kAangzQ4HaTB6SANTgdpcDpIg9NBGpwO0uB0kAangzQ4HaTB6SANTgdpcDpIg9NBGpwO0uB0kAangzQ4HaTB6SANTgdpcDpIg9NBGpwO0uB0kAangzQ4HaTB6SANTgdpcDpIg9NBGpwO0uB0kAangzQ4HaTB6SANTgdpcDpIg9NBGpwO0uB0kAangzQ4HaTB6SANTgdpcDpIg9NBGpwO0uB0kAlOB5ngdJAJTgeZ4HSQKaDl7ASng0xwOsgEp4NMcDrIBKeDTHA6yASng0xwOsgEp4NMcDrIBKeDTHA6yASng0xwOsgEp4NMcDrIBKeDTHA6yASng0xwOsgEp4NMcDrIBKeDTHA6yASng0xwOsgEp4NMcDrIBKeDTHA6yASng0xwOsgEp4NMcDrIBKeDTHA6yASng0xwOsgEp4NMcDrIBKeDTHA6yASng0xwOsgEp4NMcDrIBKeDTHA6yASng0xwOsj0BB2kltu9yWI6uLfQfG+hdL93XLtYJdini1VIHi/++KzW0bOmjp41d/SspZ9nfYKS9XnPGjt6VuroWbmjZ5WOnrWjfZN1tG+yjvZN1tG+yTraN6WO9k2po31T6mjflDraNz1Btf+8Z+1o35Q62jeljvZNqaN9U+po35Q72jfljvZNuaN9U+5o3/SEzhnPe9aO9k25o31T7mjflDvaN2X0fZMFuT2rUXhNv6BvhQ7oo+9uDuijb1gO6KPvQUx1pp+W9KVt+ug7hQP66Iv/AX309fyAPvoSfZB5ml51c2h61c2h6VU3B/hVd2/q5tD0qptD06tuDk2vujk0verm0PSqmwP8qrtPH37V3aUf4Vfdffrwq+4+/aZr3RzhV919+vCr7j59+FV3n37bq25se9WNba+6se1Vl9pedantVZfarnWp7Vr3CS2yTqXfdq1L8Kvu7qaB4FfdffpNnzBnavuEmdtedbntVZfbXnW57VX3CU3OTqXf9qrLbde63Haty23Xutx2rSttv9eVtt/rStsnzNL2CfMT2tSdOnXbXnWl7VVX2l51pe1VV9pedbXtWlfbrnW17VpX2651n9Bo8MxNA3xXwgP6bZ8ww/cOPKDf9qoL3+Fvnz58074D+m2vuvCt9Q7ot73qwjfAO6Dfdq0L36bugH7btS58M7n9TQN8f7h9+vAt3w7ot33CDN+YbX/qwvdaO6Df9qoL3xHtgH7bqy5837ID+m3XuvDdxfbpwzcMO6Dfdq0L39Zrf9MA36nrgD78qrtPv+0TZvgWWQdTt+1VF76R1QH9tldd/N5U+/TbXnXxe1Pt02+71m27N1VuuzdVxu9NtbtpwO9NtU+/7RPmtntTFfzeVHtTt+D3ptqn3/SqW9ruTVVC06tuabs3VWm7N1VpuzdVabs3VWm7N1XB7021u2nA7021T7/pE+bSdm+qgt+ban/qtr3qtt2bqrTdm6q03ZuqtN2bqrTdm6q03ZuqtN2bqrTdm6rg96ba3TTg96bap9/0CXNpuzdVwe9NtT9121512+5NVdruTVXa7k1V2u5NVdruTVXa7k1V2u5NVdruTVXwe1Ptbhrwe1Pt0m+7N1VpuzdVwe9NtTt18XtT7dNve9VtuzdVabs3VWm7N1VpuzdVabs3VWm7N1VpuzdVwe9NtbtpwO9NtU8fftXdp9/2CTN+b6r9qdv2qtt2b6rSdm+q0nZvqtJ2b6rSdm+q0nZvqtJ2b6rSdm+qgt+banfTgN+bap9+2yfMbfemKvi9qXanLn5vqn36ba+6bfemKm33pipt96YqbfemKm33pipt96YqbfemKvi9qXY3Dfi9qfbpt33C3HZvqoLfm2p/6ra96rbdm6q03ZuqtN2bqrTdm6q03ZuqtN2bqrTdm6q03Zuq4Pem2t004Pem2qff9glz272pCn5vqv2p2/SqG0Pbzakm/k2vuxP/phfeiX/TK+/EH37pPeDfdMU78W+65J34N13zTvybfsE78W/6DW8Mbbepmvg3fdo88W98/cXvVHXAv/H1t+1eVRP/xtfftrtVTfybLn8n/o3Xv203rJr4N17/4res2t8/4PesOuAPv/4e8G/67Hni3/j6i9+36oB/4+tv252rYmi7ddXEv/H1t+3mVRP/xuvftttXTfwbr3/xG1jt7x/wO1gd8G/8/LntHlYx4Dex2p+/+F2sDvg3vv623cdq4t/4+tt2J6uJf+P1b9u9rCb+jde/bXezigG/ndX+/gG/n9UB/8bPn9vuaDXxb3z9xe9pdcC/8fW37a5WE//G19+2+1rF0HZjq4l/4/Vv262tJv6N17/4za329w/43a0O+Dd+/tx2f6uJf+PrL36Hq33+bbe4mvg3vv623eRq4t/4+tt2m6uJf+P1b9uNrib+jde/+K2u9vcP+L2u9vm33exq4t/4+TN+u6v9+Yvf7+qAf+Prb9sdryb+ja+/bfe8mvg3Xv+23fUqhrbbXk38G69/8Rtf7e8f8DtfHfCHX38P+Dd+/ozf/Opg/ja+/rbd/mri3/b6GxvvfxUb738VG+9/FRvvfxUD/Pp7wL/t+jfi97/a3T9E/P5XB/zbPn+Ojfe/ivj9r/bnL37/qwP+ja+/jfe/io33v4qN97+Kjfe/io33v4qN97+Kjfe/ivj9r/b3D/j9rw74t33+HBvvfxXx+18dzN/G19/G+1/Fxvtfxcb7X8XG+1/Fxvtfxcb7X8XG+1/FxvtfRfz+V/v7B/z+Vwf8Gz9/brz/VcTvf3UwfxtffxvvfxUb738VG+9/FRvvfxUb738VG+9/FRvvfxUb738V8ftf7e8f8Ptf7fNvvP9VbLz/VcTvf7U/f/H7Xx3wb3z9bbz/VWy8/1VsvP9VbLz/VWy8/1VsvP9VbLz/VcTvf7W/f8Dvf3XAH379PeDf+Pkzfv+rg/nb+PrbeP+r2Hj/q9h4/6vYeP+r2Hj/q9h4/6vYeP+r2Hj/q4jf/2p//4Df/+qAf+Pnz433v4r4/a/25y9+/6sD/o2vv433v4qN97+Kjfe/io33v4qN97+Kjfe/io33v4r4/a/29w/4/a8O+Dd+/ozf/+og/uHX3wP/N37+jN//6oB/4+svfv+rA/+3Xf8Sfv+rA/5tr7/UeP8rarz/FQX49feAf9v1L+H3vzrg3/b6S/j9rw74t13/Enz/q5TjjX/KvOR//fprFmb+5eje8e7/aJbnqymtXZwTzbRL2r+YU8g31kn58eK/PEPDMxue4eGZDc/I8MyGZ3R4ZsMzNjyz4Zk0PLPhmTw8s+GZMjyz7pkndIprxTP97oFLvJ1ucUlx/+Kccvl0cc5xxY39bphPdWO/u+s3udHIbm40sQMaonMKmP4mWXpdhtef4PV+q4JTU0a/JcSpbuy33nhmDui3lnmm1/utk85MGdxvUXWqG0cF9kVuFLu9zMlSwtKNowI7JRpHBXaKG2W48fqFnUdJ9QyvjwrslJQxKrBT3DhKqmfkgFFSPcHrMiqwM1KGjArsFDeOCuyMQlZGBXZKNMpw4xluHCXVMxb2UVI9w+ujAjslZYwK7BQ3jpLqCTlAR0n1DK+PCuyMlKGjAjvFjaMCO6OQfcLPQ3yT0TgqsFPcOEqqZyzso6R6htdHBXZKyhgV2BlutFFSPSEH2CipnuH1UYGdkjJGBXaKG2W48YRC1kYFdko0jgrsFDeOkuoZC/soqZ7h9VGBnZEy0qjATnHjKKmekAPSKKme4fVRgZ2SMmS48Qw3jgrsjEI2jQrslGgcFdgpbhwl1TMW9lFSPcHreVRgZ6SMPCqwU9w4Sqpn5IBRUj3D6zK8fkbKGBXYKW4cFdgZhWweFdgp0TgqsFPcOEqqJyzsZZRUz/D6qMDOSBllVGCnuHGUVM/IATK8/gSvjwrslJQxKrBT3DgqsDMK2TIqsFOicVRgJ7iRwyiprl/YOYyS6hleHxXYKSljVGCnuFGGG5+QA0ZJ9QyvjwrslJQxKrBT3DgqsBMKWQ7dVmAS8o2HTJXo/sWFwo1GoUMaQfnm9OlvKQuvx24Ltqd6vduC7ale77Zge6rXu63vnup1GV5/gte7LQef6vVuy8Gner3b6lEnIp8uVqa89Ey3BeGhZ7qt8Y48Q93WYYee6bZWOvRMt/XMoWe6rTkOPSPDMxue6XbvfuiZbvfXh54Ze+Atz/S7B+Z046HCenDnNMXQ7daJ82FVNm0U56qMdfkWhfrdYT/V79zv/v25fu+3OrjQ77b0e7+1R1W/H526cb+VzXP9LsPvT/F7v1XZc/3eb833XL/3W1G+ze+iNvtd6eDbs/jC9XZ5TCEu/T7q1Sp+T0Vmv2da8fuoV5/idxn16nP8PurV5/h91KvP8fuoV5/jdxl+f4rfR736HL+PevXL/D4VrLPfk9HSkaMAPcmRo6L8MkfmcndkiUu1p/RbIork2ZHp8M7TAdR8awrLsyXtt+Y72ZH9FnEnO7LfquxkR/ZbZp3sSBmOPMeR/RZCJzuy38rmZEf2W9mc7Mh+K5uTHTkqmy9zJIf7rZl5/3Kh2SNC6X5xLKtEwvwdszy0Gpou/jhENmom+CEa1Rj8EI06D36IRgUJP0Qyhgh9iEbVCz9Eo56GH6JRqcMP0TgDgB+icbqAPkRpnC7AD9E4XYAfonG6AD9E43QBfohkDBH6EI3TBfghGqcL8EM0Thfgh2icLsAP0ThdQB+iPE4X4IdonC7AD9E4XYAfonG6AD9EMoYIfYjG6QL8EI3TBfghGqcL8EM0Thfgh2icLqAPURmnC/BDNE4X4IdonC7AD9E4XYAfIhlDhD5E43QBfojG6QL8EI3TBfghGqcL8EM0ThfAh0jCOF2AH6JxugA/RON0AX6IxukC/BDJGCL0IRqnC/BDNE4X4Ifo+tOFFG73pqzps3v/RenkapoefvvrhdJfRtbrQSvzb6CmEA6MpEi3Zn8p6n2QzdYGotwCwvg+DDn/+d30jx9++/Dzzx/+9Y+ff/3x+z8+/PrL7y/A8PI/6z92m4RuvymXHtutT6TXPJ5vF/ODKzS+eGL9R11PvD9Xvr9Uvr9Wvr9Vvn+qfP9c+f6l7v3XfxTtxPtXnr9Sef5K5fkrleevVJ6/Unn+SuX5K5Xnr1Sev1p5/mrl+auV569Wnr9aef7qm+fvC8g8oOQBZQ+oOEAWPKDoAZEHxB6QeECeiDBPRJgnIswTEeaJiOSJiOSJiOSJiOSJiOSJiOSJiOSJiOSJiOSJiOSJiOyJiOyJiOyJiOyJiOyJiLwREfMvgk9/lgXIPKDkAWUPqDhAJXhA0QMiD4g9IPGAPBFRPBFRPBFRPBGx/k1Dsvl8bfrTXoPi+mv2Q1R0ociFYhdKXCh1ocyFSi5UdqFcsRFdsRFdsRFdsRFdsRFdsRFdsRFdsRFdsRFdsRFdsUGu2CBXbJArNsgVG+SKDXLFBrlig1yxQeuxoVJuqJw+R73fv7ro0kapb4PDBTbiBTboAht8gQ35ehuS5p/Jkvzwnq3Ev0xofRNW30SqbyLXN3HCFJccb1drfAipycTaG+vbu3CV+zvVaZPx6cUtFp2IRYcupsMab8HDJdDr4BEG4yNgfBSMj4HxSWB8MhifgsVHAxifCMYHLD8rWH5WsPysYPlZwfKzguVnBcvPCpafDSw/W938/NEE1TfB9U2ckBiV4u2bWCWyhQmtb8Lqm0gnm3j4GvtmItc3UaqbSOEME/luoizGIsX6Jqi+iRNmt7LOX+Hzw4u8TybyGSasyM1EiovhzlLfhNY3cUYCSRpnE0kWJlJ9E7m+iXKyiRxfmyihvolY38QZCSTHOWizyv6OSO907OHGnw7wCmPRESw6ikXHsOgkLDoZi05BokMhYNGJWHSgsjIFqKxMASorU4DKyhSgsjIFqKxM4ZSsnGc6hXifzrRK3r5hnP68lz5c8l+EChihGNAIRTRChEaI0QjJxYSm/cTtDGP6My8JKRohQyOU0AhlNEIFjBAFNEIRjRChEWI0QmiZmtAyNaFlakLL1ISWqQktUzNapubrM7XYTOjh1jMhQiPEaIQEjZCiETI0QgmNUEYjVMAISUAjdPm0j2FuIRgfPlmaCV0e1HH+kGM6eolLQpcHdbS5g1/8rMniJ0IFjJAGNEIRjRChEWI0QoJGSJ9IaErVS0KGRiihEbo+U+t96bDlWqYFjJAFNEIRjRChEWI0QoJGSNEIXZ6pp7piTowpLAklNEIZjVABI5QCGqGIRojQCDEaIUEjpGiErs9D8wf49CiGuBHKl88yjrfvmaY/l2VQvnyWsZaZUF5++5EZjZCgEVI0QoZGKKERymiEyhMJSViewpaARiiiEXpCpr4vHbpcywqjERI0QopGyNAIJTRCGY1QwSLEIaARimiEwDI1B7BMzQEsU3MAy9QcwDI1h7qZ+qOJXN9EqW6isgDmo4lY3wTVN3FGVio8N58oSvshbmE+LbJgsuAjYHwUjI+B8UlgfDIYn1KVz4uJMyQkE/U0P0XWr3rkMxQkp/IhMD4MxkfA+CgYH6vK56OJVN9Erm+iVDfBob6JWN/EKRlpN2iZ65uQ+ia0vgmrbyLVN5HrmyjVTUiobyLWN1F/dkv92S31Z7fUn91Sf3ZL/dkt9We31J/dWn92a/3ZrfVnt9af3Vp/dmv92a31Z7fWn91af3Zr/dlt9We31Z/dVn92W/3ZbfVnt9Wf3VZ/dlv92W31Z7fVn92p/uxO9Wd3qj+7U/3ZnerP7lR/dqf6szvVn92p/uxO9Wd3rj+7c/3ZnevP7lx/duf6szvXn925/uzO9Wd3rj+7c/3ZXerP7lJ/dpf6s7vUn92l/uwu9Wd3qT+7S/3ZXerP7lJ9dksI9U3E+iaovgmub0Lqm9D6Jqy+iVTfRK5vov7sjvVnd6w/u2P92R3rz+5Yf3bH+rM71p/dsf7U+5LP6spnJl5QX/Kl3AoqulDkQrELJS6UulDmQiUXKrtQrthgV2ywKzbYFRvsig12xQa7YoNdscGu2GBXbLArNsQVG+KKDXHFhrhiQ1yxIa7YEFdsiCs2xBUb4ooNdcWGumJDXbGhrthQV2yoKzbUFRvqig11xYa6YsNcsWGu2DBXbJgrNswVG+aKDXPFhrliw1yxYa7YSK7YSK7YSK7YSK7YSK7YSK7YSK7YSK7YSK7YSK7YyK7YyK7YyK7YyK7YyK7YyK7YyK7YyK7YyK7YyK7YKK7YKK7YKK7YKK7YKK7YKK7YKK7YKK7YKK7YKJ7Y0BBcqOhCkQvFLpS4UOpCmQuVXKjsQrliI7piI7piI7piI7piI7piI7piI7piI7piI7piw3Uuqq5zUXWdi6rrXFRd56LqOhdV17mous5F1XUuqq5zUXWdi6rrXFRd56LqOhfVLzgXffjpgfXXDTHzrUtGzHL/rS2Nf5mQ+ia0vgmrbyLVN5HrmyjVTXzBkfJXm4j1TVB9E/Vnt9Sf3VJ/dkv92S31Z7fUn91Sf3Zr/dmt9Wf39T9kst+4W6//IROm+cdwmMOSEKERYjRCgkbo+iaDMd8JxSUhQyOU0AhlNEIFjND1P2RyRCiiEbo+U+/+5oNe/0MmR4QEjZCiETI0QgmNUEYjVMAI5YBGCOzHcDSjZeqMlqmv/6mX/Z+T1ut/6iXy7KHIy0Lx+p96OSJUwAhd/1MvR4Su/5FSkjuhtCREaIQYjZCgEVI0QoZGKKERuj5Tx/vvytKyULz+p172Cdn1P/VyRCiiESI0QoxGSNAIKRohQyOU0AiBZWoLaJl6/VOZIvn2QqJoeK1ktfWvV4TmXz8XSndesaw9hAS7PYSQPF780YJUt6DVLVh1C6m6hVzdQqltYf2zlR0LH0HRAyIPqHqYSPUwkephItXDREN1C7G6BapugR0hruIBvTVBfzf9I75cuv55dQzzCWUM/PCZSV7xQgq3JTZFerx0Yrb+HfZ5t7evvz3z7fZSXt8+nXB7ut3e+PXtc93bl6+/fZ73WiW9uv36R+Xn3T5+9e0z3WZnlteRs/6Z+htvf9v35Yefcvx0e/7626fb0Oalc+TE25dX02r6B31MDevLSJpTXrxHHE8O3oyJfUh8O4TeDuG3Q+SNkOlf/HLl+kvS6b3XbXCmP+8ep/RibP095j5m/VXjASY6MOTAsAMjDow6MObAJAfGEQfZEQfFEQfFEQfFEQfFEQfFEQfFEQfrh/ef/xhjeY1JDkx2YMrbMXH9JPkIFA9BSRagDdfl2zda0yEyLUCrz2RkM4jKArQuazwCRQ+IPKD1Z1K+bQ2mrXl6DVpfJY9A0QMiD4g9IFkHmc2gnBcg9YDMA0oeUD4EFX4NWte4mcUZNMXRAsQekHhA6gGZB7TuvSl4ZpAtEouwB7R+th/yXBuFsgStz1wrt5LEUgivQevnHkeg6AGth1GW2eVZFwG7fuBwBBIPSD0g84CSB5Q9oOIA2cY4xTlgMy1yxIZGIcyv0lOwxVKzoSM4ACXH1Nj4Hv8AVBygje/aD0DRAyIPiD0g8YDUA/LkveSJiOSJiOSJiOyJiOyJiOyJiHyc95aTMJsHlDyg7AFt5L1Zq2clLFb39SLNynweaUV0AVIPyDyg5AGte69QvoNsASpvB9F6pXYEih4QeUDsAYkHtDFO+R57WRegfLgSiixAxQHaaKpzAIoeEHlA7AGJB6Qe0Mb6JGl7x0Ib3XR2tzkUswdUHCAKHlD0gMgDYg9IPCDHHpbWN4lRaNYfvPz9erGh9W3iMWz9JYzcFcTT37xIL+sbuGOY+mDmgyUfLPtgxQXLwQeLPhhtwOZjihfYYgnK7IOJD6Y+mPlg6e2w6R/ycrFtvIBVvr9kVHk96YxcKHahxIVSF8pcqORCZReqeFAbqVVLuS3S0QK9Pp5aL8EPUeRCsQu1HhvTleWOkgVKXah1z9u0KM2o6cznFWojOdpU+c0oCq83VRu58QhFLhS7UBueJ5E7Sl+nqo28eIQyFyq5UNmFKh5UCS7URmyQ5jvKFq8ayYViF2orNh7mF6XP5tdKV6Npwzoboen93MHlei84pr8Xr66KAnIyQE4JkFMG5FTwOG18GvBsUhGRFCGS4qeQ4vxAavHqK5yVzMOdVFqcrwa9xIpdYiVdYiVfYqVcYSWGS6zES6xsZZb4sKmjJYx9MPHB1AczHyz5YNkHKy4YBR8s+mC+KCFflNBWlJT5qM0eW9TcYOqDmQ+WfLDsgvHGcHO5JwNZfEwaOfpgGy6R+1mnCS82BLwRypru5ZeufPQUfLDog5EPxj6Y+GDqg5kPlnywjVC2WeEy/c2LHZqULdg9uEzj/rp2oiJu4/u5ZxKKaIQIjRCjERI0QopGyOoS+m7zs8yTbeQLbLw9Rb7ALPhg0Qfbcna6v2CwtPjMdOPdjqW7THBCLVaNtJWCyn2xSWFBMrEPJj6Y+mDmgyUfLPtgxQXbeqF0BNuIyUSPUbLYgW69UjqCsQ8mPthGlCS7V0UpLz6+33qtdARLPlj2wYoLtvVq6QgWfbCNKMnhDstxkbm23i4dwcQHUx9sK0rKI2yxl996j3IEyz5Y8cBo633BESz6YOSDbUXJ/dzasqQFTHww9cHMB9uIkkyPsLyAZR+suGBbp7NHsOiDkQ/GPthWlDzsuXKOC5j6YOaDJR9sK0rsEfaFH8wewrbOT49g0QcjH4x9MPHBtvYlct/O5M+1pSsvHDjleWfHqSw+iNw6bn2jlRzmicKZFll463T2ZCv5EivlCitbJ8wnW4mXWKFLrPAlVuQcK5TuVpbf5LKe/ywrVuwSK+kSK/kSKyfN/bk96fT34qNPknCJlXiJFbrECl9iRS6xopdYsUusnDT37WFWpkUdJPn8Z1mxUq6wouESK/ESKyfN/TJ/MsMlLHKy8iVW5BIreokVu8RKusRKvsRKucKKnTP3S7jPyhIXhxYWz3+WFSt0iRW+xIpcYkU9b+LIzAdLPlj2wYoL5ns5SSn6YOSDsQ8mPpgvSpIvSpIvSpIvSpIvSrIvSrbeMu5/Vbel6TW5fzdvYmEBUx/MfLDkg2UfrLhgW28Zj2DRByMfjH0wX5QUX5QUX5QUX5QUX5QUV5TwxnuIg74OHF1dJJi2+gPsthVgYh9MfDD1wcwHSz5Y9sFcXSSYgw+21UVit2UCM/lg7IOJD6Y+mKOLxPQPfbl4/bAv0dwtTe/TO39sUr9+cLeLkDcj9M0Iexviz+lf//v9bx++/+Hnn36fEC//8T+//PjHh19/+fTPP/7v37f/8sNvH37++cO//vHv33798ad//ue3n/7x868/vvy3d+HT//zdNL+3VL772Cz+7xbpvRF99yKoevkn8fTP/PLPl+i1HN5P76nvP9bxcs30doFpbtLPn/6fdLsF5/fCcy/6jwCx91NNcLNo75PdLp5eq72fXq7c7L0ImKZT3bkFyMf7Cb9nk0/o6VBIy2wq0HsO6Ybm6XydY5gjhj/+f+8l3K6fFgOdqP05OfX/AQ==",
|
|
1723
1637
|
"brillig_names": [
|
|
1724
1638
|
"get_note_internal",
|
|
1725
1639
|
"decompose_hint",
|
|
@@ -1731,28 +1645,8 @@
|
|
|
1731
1645
|
"directive_integer_quotient",
|
|
1732
1646
|
"directive_to_radix"
|
|
1733
1647
|
],
|
|
1734
|
-
"verification_key": "
|
|
1735
|
-
"artifact_hash": "
|
|
1736
|
-
},
|
|
1737
|
-
{
|
|
1738
|
-
"name": "sync_notes",
|
|
1739
|
-
"is_unconstrained": true,
|
|
1740
|
-
"custom_attributes": [],
|
|
1741
|
-
"abi": {
|
|
1742
|
-
"error_types": {
|
|
1743
|
-
"17843811134343075018": {
|
|
1744
|
-
"error_kind": "string",
|
|
1745
|
-
"string": "Stack too deep"
|
|
1746
|
-
}
|
|
1747
|
-
},
|
|
1748
|
-
"parameters": [],
|
|
1749
|
-
"return_type": null
|
|
1750
|
-
},
|
|
1751
|
-
"bytecode": "H4sIAAAAAAAA/9VUyw6CMBBseURBOaiJ3kz8gyIYOJJ49x8akKMe8OKNT5eabbqpVRKlJkzSbEs3szNlW0oUKESPvAH9tGnIFdhBDCA6aN/tRgFr9hviQKs7JH/O0iQw+BtQ/5OfWtIvIPktnT+bAM+xVfzYi6w77UaIesKWZ/nPbHpe9fhc/MFnh32k1caghm+uIYci3RuYR4Y8iRlRd9prh/eV5YzJei7w++RVO67va/lrWIeafvmOFV/qrDMe1wmv+YFXVVrypcYv4KBzGnMvbGHe1wvY45yo3mjul/J0vZ0b0gNB8gCVxsvQjgYAAA==",
|
|
1752
|
-
"debug_symbols": "ndLBCoQgFAXQf3nrFmmZ2a/EEFYWgmiYDQzRv49FMzRDG908vOJ5bu4KvWiXsZF6MDNU9QrKdNxJo31atwRaK5WSY3O9hnQfCB3v54nrPc6OWwcVIjQBoXt/Koj3g1QCqowV2yMBhMNJFk7ycEKCCb79heUkPQ3LKf0ihPCBSAwqYhCNQWUEym57wEjGPoiQ8hdtPj65lbxV4uzZsOjuUjv3msRfAydrOtEvVuxdvNTQzxrRBGO/1q9+Aw==",
|
|
1753
|
-
"brillig_names": [
|
|
1754
|
-
"sync_notes"
|
|
1755
|
-
]
|
|
1648
|
+
"verification_key": "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",
|
|
1649
|
+
"artifact_hash": "ff6671ddb572df3d961df43ed4c3adf75a7d3763-685d036339107ba6143fd0816eb41cbf-client-ivc-true"
|
|
1756
1650
|
},
|
|
1757
1651
|
{
|
|
1758
1652
|
"name": "constructor",
|
|
@@ -1810,10 +1704,6 @@
|
|
|
1810
1704
|
"error_kind": "string",
|
|
1811
1705
|
"string": "attempt to add with overflow"
|
|
1812
1706
|
},
|
|
1813
|
-
"5727012404371710682": {
|
|
1814
|
-
"error_kind": "string",
|
|
1815
|
-
"string": "push out of bounds"
|
|
1816
|
-
},
|
|
1817
1707
|
"6485997221020871071": {
|
|
1818
1708
|
"error_kind": "string",
|
|
1819
1709
|
"string": "call to assert_max_bit_size"
|
|
@@ -1825,10 +1715,6 @@
|
|
|
1825
1715
|
"8193989641828211937": {
|
|
1826
1716
|
"error_kind": "string",
|
|
1827
1717
|
"string": "ciphertext length mismatch"
|
|
1828
|
-
},
|
|
1829
|
-
"8270195893599566439": {
|
|
1830
|
-
"error_kind": "string",
|
|
1831
|
-
"string": "Invalid public keys hint for address"
|
|
1832
1718
|
}
|
|
1833
1719
|
},
|
|
1834
1720
|
"parameters": [
|
|
@@ -2174,7 +2060,7 @@
|
|
|
2174
2060
|
}
|
|
2175
2061
|
],
|
|
2176
2062
|
"kind": "struct",
|
|
2177
|
-
"path": "authwit::aztec::protocol_types::
|
|
2063
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
2178
2064
|
}
|
|
2179
2065
|
},
|
|
2180
2066
|
{
|
|
@@ -3292,7 +3178,7 @@
|
|
|
3292
3178
|
}
|
|
3293
3179
|
],
|
|
3294
3180
|
"kind": "struct",
|
|
3295
|
-
"path": "authwit::aztec::protocol_types::
|
|
3181
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
3296
3182
|
}
|
|
3297
3183
|
},
|
|
3298
3184
|
{
|
|
@@ -3403,15 +3289,14 @@
|
|
|
3403
3289
|
"visibility": "databus"
|
|
3404
3290
|
}
|
|
3405
3291
|
},
|
|
3406
|
-
"bytecode": "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",
|
|
3407
|
-
"debug_symbols": "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",
|
|
3292
|
+
"bytecode": "H4sIAAAAAAAA/+x9B5wU1bP1AhtYBHbBgIoBFLNg3+6e6RkFQQUEAwpmMM1MT5vADAYQUEAwgGAGM2bBDGYwY84JVFRADKAYQMEAfvdiz2MYLuwuc+q+6u/Z71ePoeR/qVN1bt063b1DvZJ/r3ktSkrmb/7v53rSGoS/1pfWqsCX+zX/c5nmz22g8TXR+Ko0vmYa3ybSOhX4ttb8uVYaX2uNbxuNbzuNb3tpDQt8O2h8O2p8O2l8O2t8u2h8u2p8bTW+dhrfbhqfpfEJjc/W+ByNz9X4YhpfXOPzNL6ExpfU+HbX+PbQ+NprfB00vj01vo4aXyeNby+Nb2+Nbx+Nr7PG10Xj66rx7avxddP4umt8+2l8+2t8B2h8B2p8PTS+gzS+gzW+nhpfL43vEI3vUI3vMI3vcI3vCI3vSI3vKI2vt8bXR+M7WuM7RuM7VuM7TuM7XuNLaXxpjS+j8fkaXzb05V/1wl87hb86Vtx1s56dFY5IWXYynYhZbiwdT4iEiCVivp1wnGzCTXjJdNKzksJ1siKIJZ3A+vfq3mDVWlZRl52hjHO/9Y7TFYUeFVtzaaV5sao8rAg/qzMm93mHvM/7hX8m97/bX/7+AGkHSuvRYJU/dzUoyIFV3CV2BK61fwNcbQ6CcciyKPO3E3CtA4D5Ozgi+dsZuNaBwPz1BOZP1xsOyusNB+d97pn3uUdBb+glf3+ItEOlHWagN+wCXKsXsDaHR4TbuwLXOgSYvyMikr+2wLUOBebvSOLecHheDzgi7/OReZ8PK+gNR8nf95bWR9rRBnpDO+BaRwFrc0xEuL0bcK3ewPwdG5H8WcC1+gDzdxxxbzgmrwccm/f5uLzPRxf0huPl71PS0tIyBnqDAK51PLA2fkS4bQPXSgHzl41I/hzgWmlg/gLi3uDn9YBs3ucg73OmoDecIH9/orSTpJ1soDe4wLVOANbmlIhwOwZc60Rg/vpGJH9x4FonAfPXj7g3nJLXA/rmfe6X9/nkgt5wqvz9adJOl3aGgd7gAdc6FVibMyPC7QRwrdOA+TsrIvlLAtc6HZi/s4l7w5l5PeCsvM9n530+o6A39Je/HyDtHGnnGugNuwPX6g+szXkR4fYewLUGAPN3fkTy1x641jnA/A0k7g3n5fWA8/M+D8z7fG5Bbxgkf3+BtMHShhjoDR2Aaw0C1mZoRLi9J3CtC4D5uzAi+esIXGswMH8XEfeGoXk94MK8zxflfR5S0BuGyd8PlzZC2sUGekMn4FrDgLUZGRFu7wVcazgwf6Mikr+9gWuNAObvEuLeMDKvB4zK+3xJ3ueLC3rDpfL3l0m7XNpoA71hH+BalwJrMyYi3O4MXOsyYP6uiEj+ugDXuhyYv7HEvWFMXg+4Iu/z2LzPowt6wzj5+yulXSXtagO9oStwrXHA2lwTEW7vC1zrSmD+ro1I/roB17oKmL/riHvDNXk94Nq8z9flfb66oDdcL38/XtoEaTcY6A3dgWtdD6zNjRHh9n7AtcYD83dTRPK3P3CtCcD83UzcG27M6wE35X2+Oe/zDQW94Rb5+1ul3SZtooHecABwrVuAtbk9Itw+ELjWrcD83RGR/PUArnUbMH93EveG2/N6wB15n+/M+zyxoDfcJX9/t7R7pN1roDccBFzrLmBt7osItw8GrnU3MH+TIpK/nsC17gHmbzJxb7gvrwdMyvs8Oe/zvQW94X75+wekPSjtIQO9oRdwrfuBtXk4Itw+BLjWA8D8PRKR/B0KXOtBYP4eJe4ND+f1gEfyPj+a9/mhgt4wRf5+qrTHpD1uoDccBlxrCrA2T0SE24cD15oKzN+TEcnfEcC1HgPm7yni3vBEXg94Mu/zU3mfHy/oDU/L3z8jbZq06QZ6w5HAtZ4G1ubZiHD7KOBazwDz91xE8tcbuNY0YP6eJ+4Nz+b1gOfyPj+f93l6QW94Qf7+RWkvSXvZQG/oA1zrBWBtZkSE20cD13oRmL9XIpK/Y4BrvQTM36vEvWFGXg94Je/zq3mfXy7oDa/J378u7Q1pbxroDccC13oNWJu3IsLt44BrvQ7M39sRyd/xwLXeAObvHeLe8FZeD3g77/M7eZ/fLOgN78rfvyftfWkfGOgNKeBa7wJr82FEuJ0GrvUeMH8fRSR/GeBa7wPz9zFxb/gwrwd8lPf547zPHxT0hk/k72dKmyXtUwO9wQeu9QmwNp9FhNtZ4Fozgfn7nJjbn+Vx+PO8z7PyPn9awO3Z8vdfSPtS2lcabtcH12a7Elw+5+DyKfK/v1et26ogt4VXPXBe6pVguZGLsTr8PFdimifta2nzpX0j7Vtp30n7XtoCaQul/SDtR2mLpP0k7WdpvzQIk9E4jxCUyfiOqNGUYOO083Pxa9jFFudYlPtV/YflBT71hwpZhe6C3wE6Vzb49/oV2AUXExUX3amQmJfkrSUSjm17jvpzCd8Srp+xE7btp10rY6UydjbpimTg2q6T8TNpuWZKBFaQyiSDxL9xqY3YpMRMV1rSAN+V1PVbA8KAf2uAX/d3IBmocP/eYFWCQetqY0U0gN8b4NddCiZrrlmrdVVzMXkCLozgCbgs5N8fhSfgMs0J+IeBE3Ah8ARcBmwAf0TkBERi/jOiJ+CfRCfgXw0IA/6L4AT8m/kJqHD/HZET8I8wVvS6y4lOwOX/CyfgogiegCtC/v1TeAKu0JyA/xg4ARcBT8AVwAbwT0ROQCRmtXtya0XpBMyP2yryyo+3XilhwGpx9Lr1S3mfgAp3/bz7t6B1SU5A1QDql+LXbVBKcwKqdU2fgL9E8AQsDflXVlqy+mmn/kPhCVhWSn8C/gI8AUuBDaCsNBonIBJzeURPwHKiE7CilDDgCoITsCHzE1DhbhiRE7AsjBW9biXRCVhZuuaph469ESz2le8HkcW5wfrH6RY6dA/yVR5yD+zn5j28n5/3eYPS1R/kN5YfmkhrKq2qlP4llXnAh++NgX2lGsz/wtpU59WmSd7npnmfqwpq00x+aC5tQ2kbaWqD5ufG658DpzY5yOfn13mcbJbn37ggB5vIDy2kbSptMwM52BzGA8eljLPl+sfpW7Wo1eZ5Nfkmr1bf5n1uWVCrLeSHLaVtJW1rA70E+EqA2ALYS1oRDeno/H0PzN+WwPy1jkj+FgDztxUwf9sQn2Wt8npD67zP2+R93rqgN2wrP7SRtp207Q30BuDDUrEtsDY7RITbPwDz1waYvx0jkr8fgfnbDpi/nYh7ww55PWDHvM875X3evqA37Cw/7CJtV2ltDfQG4GMksTOwNu0iwu2fgPnbBZi/3SKSv5+B+dsVmD+LuDe0y+sBu+V9tvI+ty3oDeqOrS3NkeYa6A3AG+xCAGsTI65NLK8Gdt5nJ++zW1CbuPzgSUtISxrQ5rvjchDocrB7HtZ43udN1nF/Yg/5ob20DtL2DHNQGv5ZEw8Z9gDyIv8+bccQYKccmNwNXfUfhhb4OoW+/Au9MfcAbqaOtV8rU8NaohOwACrX9Uv0j4lL6pjPmuIuISRlR3Czyl17FZJROWp6FIwkSw2xihr+u7UXkMR7l8LIsNoTm71rsZmLjb0TMA/InO5Th5zW9Hfl53SfvKbZMC+f+Tm1irvEinWvZ2cC4cSyXsyKp9yYH3ds3/Ys340FQgZsJ12ZmiDjJvyE7QS2Z2dWYONbybFcY8sdJLlTtVP4ubP8tYu0rqVm35npSqQcwDVe7Z2ZfcMTulthU1T/ofCdmW61aJRWcddqSSz2nZl9gZu6G1Fx0e/MIDF3L43mOzPdiSaH/UoJA96vFL/u/kAyUOHeP0/wgdYleWemWxgret0DwGTNNWu1buGpR/nsr9g8dAZy9UCwnDLVuA4kalw9SgkD7kHQuA5i3rgU7oOIGlfuonzQXGxOuwDrc3BEN+vBRJu1ZylhwD0JNmsv5ptV4e4Vsc3auZRnMz0ETPrKsN6H5On4LnmfDypddRf8+7y3xhbkfc79OP+h8s8eJu3w8H+TW7vzWtbulrd2TX/mCPnrkdKOKqXZmweFHEVPl73BshUdHxXuPsD9U5J31QfH2Q24N48GY0bfmlD7E1kXtSd7E3DnGEO3epBf5VHsWscy547q/cBbcELtlWMIuHMcmDvoPCrOIGcLxZvjCPJYr4RmD6LjPB6XS1/3NsHxebOI4kLu8+wGa3+bICU/pKVlpPml9F+rOR/Yh1IRFYPAn0haTQxmSwkDzhKIwYC5GFS4g4iJwfy1is3pPOBmPSGimxUZd368J5YSBnwiwWY9iflmVbhPisjzoSCMFX26BqV865270JjnAJvUycD85T9fU+u2Kln3e5pbr5mXGt/uWte1fWGOi1hthzXrtd6r7air/XqutlOJtl7rtdrOJWup/XqstkvJWnlU59V2LVkHJ+u4WtuSdfK7Tqu1K6lhr9Rhtd1Katx3tV+tpBZ7uJaridqsVcvV7NqtVavVnNquVYvV3NqvVeNqsbqsVcNq8bqttc7VvLqutY7VEnVfa62rJddnrbWstvv6raVdbY/1XUuzWvv1X2uN1ToUs1bBansWt9Zqq3Usdq281ToVv9b/rLYXYq1wtb0xa61cbR/UWurpJ26t1X4e5ZRQS/QtvCXWOvw17y/9b1Cr4fpvULPqdP03qNVttf8Gtbqt9t+gVrfV/hvU6rbaf4Na3Vb7vzaoFXuj7pTa35ys8edp+4KfTKztBh/6hncX3FqrDb79woH31MLBF/2oqguQEP2AhDjVECHQd3y7luCExL4lOCHRrQQnJLqX4ITEfiU4IbF/CU5IHFCCExIHluCERI8SnJA4qKTGPVbr1Q4uqcV+reVqPWuzVi1X61W7tWq12iG1XasWqx1a+7VqXO2wuqxVw2qH122tda52RF3XWsdqR9Z9rbWudtT6rLWW1Xqv31ra1fqs71qa1Y5e/7XWWO2YYtYqWO3Y4tZabbXjil0rb7Xji1/rf1ZLIdYKV0tj1lq5Wga1lgX9Z+dXG3xPCwfe06nv+P43qNXt+m9Q+29QK7z+G9Tqttp/g1rdVvtvUKvbav8NanVb7f/aoFbsDb7TgDf4To/oHd8sbq3VBt8zwoH3TOo7vlkgIc4AEuLMiBIC+ZNv+YQ4KyTC2dSEqAckxFlAQpwN/qkP9RWMzfPyuCpO145n424qm3WsbDKZyAgnk8hksxk/5aQ8L2F5fjqb8mN2OmMHTjqwsqlsIibSbtoTVmaNr2AUEm8snrLiiSBuOZbt2K6VScbTrp+KuZ4bj8vlnHTCEyITs0XGcxO2sFMils5YjptNxSm+gjF/PTthxzJeMpOJp2KZdDqbDTw/nkoEIh1PCTvtyGBSjpNwXSuVDbJp10nGhZvIJGSFvIzlJtfAK0sb+EKhS3tW3Pbj6ZgqfNaJp5OW58SdmBXEg3TKEradyLgSsm0lkzErGcQ82Y+o8VpZPy2ydtLJOJlsUqQDCSIrP6ZSMcu3MzFXBKmkLwko45JwLScbpEUmSNmZtOPEvGANvI4r/LgXC1KyutlM1pEFl+xwMinHlXlw0iKZjmeTXty23Lgnfa5Mn+1mXJllP+vE6PFafsq37ZgVSziBnUoGViqTlpj9rB8ImXG5EdOWI/ORynoxJ5CVEm46kUgFCZFJx+w14kt6TtqSicqkUhnHSWazroTrp9Ix4djJpG0FXnoleSy5kHRnY34Q9yzXSjuWlYzb5HwOHMe1s0nLykp2SRx2Iik7TiobT8i+4jmJwM/EJTpfckBYftZLO7aVkVNW0rKthOevUd90kIwl5P/GkVlL+rGkLTuZ5cgWFk/KjR/340HSdpNyO9uuK1d0YiKQFLD9QKYiYyXI6+vKfeTIzShbqSV7qp9J2NlEKhZLJWO276ow7Fg8yFqyl/pJNyndcs+lLEvyQBZqTf6lEor5ccu35P8LYn5Ctmk36buJQLZG17fk9rfSyUTW94SXSqZjjp0K4o7sfDHH8pKCAm/jcC31+ZS8H6num/e5X97nU/M+n5b3+fS8z2fkfT4z7/NZeZ/PDj8D8cDzo9brL+McIO2c8MfF1UxQVrL2C4WFZG03I1w5IdTTYKgPjv+U2s8UNd4ZQr6zksPL+f0UqpqcBqzJ6RGoCVJBUsVo6us8rOIu0b80GnGeTBTn/1zoTXky8CePzyX6id5z836it7Rk9e+Zj5XoL0wcrkOzbjwgWjdLs67nEsUbI4o3Ea082ER1o+IDFX+jxrMY1T4m4m9cENWNqk9S5YGq7xDlwc4QrWsR5ZeIZ/E4Ud2idr7ZNOtS8cGjWjdi+5isnyWJ1qWaHzyadcn6GVUeqPj7X37/Xfe/OXXlRVa3/+bUf+MlyoOTolmX7JxPE+WBKt6V3+1bXbB2VG5eAmP8b93/1v1v3f/W/f9vXZPfX3wy+E223HVeKWHA5xF8f/H5zL+/WOE+n+D7i9WSTUtW/xegc9f/tVcc8i/M2jbd2mLVhlO/tgo/D5R5GSTtAmmDpQ2RNlTahdIukjZM2nBpI6RdLG2ktFHSLpF2qbTLpF0ubbS0MdKukDZW2jhpV0q7StrV0q6Rdq2066RdL228tAm5l5tzj0FVMA0LfIM0vgs0vsEa3xCNb6jGd6HGd5HGN0zjG67xjdD4Ltb4Rmp8ozS+SzS+SzW+yzS+yzW+0RrfGI3vCo1vrMY3TuO7UuO7SuO7WuO7RuO7VuO7TuO7XuMbr/FNCH351zbhr53CX63iLrIGVuyBMxCw1r//0rklBoHWUjm4ALLWv/kcXPxadu79/SHFruWu+lmAocWtZeX/XMGFxaxlr/4zChet/1pW4c87DFvPteLBmj87MXz91krofg5jxPqsldD/TMfFdV/LW9vPh4ys61re2n/WZFTd1rLX9XMrl9RlLW/dPwNzKfDnaS6r7Vpejb1QXF67taxa9FUxujZrWbXq0WJMzWvFatnvxRU1reXW+uwQY9e5lhvU4RwS49a1llenM01cufa1EnU8H8VVa1krGdT5rBVX69ey1uPcFtfo1rLWawYQ1665lljPeUJcV7iWv96zibh+9bWcIuYcMT5vLTsoamYSE4gEZKFoLna2mwCcE2+AYXaM/itbNwBrlR/vjaWEAd9IcJfqJuZ3qRTum0pXJRi07kqyqR+8ql9CTzZcY/BJ7/7k5+LmMOe3FN6Bubl01Y+b53y3aJQy+ie3EV0rp0hvBpL+FnBxKTb4zaX4f1Lu5oicduOBtb4VhjnumjztbiU67W4rJQz4NoLTbiLz007hnhjx0248jGzJjCZcktPu9jDndxSedrdrTrs7DJx244Gn3e1A0t9BVFx010divhPXPVe+0oc+iW8Kmwb64SpSGtwFnhbQTUvV+C6CKYk77ptC3Oj9h+TO3cT7zyruEip/dxNw5x7w1JY7v+4pXXPqRNf/emD974Xlwc2anLrvBdcvd91XShjwfQRT9yTmU7fCPSniU/f1MLKlbU24JFP35DDn9xdO3ZM1U/f9BqZuRNfKTd2TgaS/n6i46K6PxPwA81P/7rBpNADn8G5gDpGN90Hm9VB8eZBgCgPi1h5eCL48WIrvhcip+0EgDx9irqgU1ocIePgwkRp42IAauA5Y/0dgefBsk2rgEXD9ctejpYQBP0qgBqYwVwMK95SIq4HrYGRLZDXhkqiBqWHOHytUA1M1auAxA2oA0bVyamAqkPSPERUX3fWRmB9nPn0+FDYNtBp4CJhDZON9gnk9FF+eIJjCniCePhF8eYJADQCnbvEEkIdPMlcDCuuTBDx8ikgNPGVADVwLrP/TsDxkhUk18DS4frnrmVLCgJ8hUAPTmKsBhXtaxNXAtTCyiUATLokamB7m/NlCNTBdowaeNaAGEF0rpwamA0n/LFFx0V0fifk55tPnk2HTQKuBJ4E5RDbe55nXQ/HleYIp7Hni6RPBl+cJ1ABw6hbPA3n4AnM1oLC+QMDDF4nUwIsG1MA1wPq/BMuDY1QNvASuX+56uZQw4JcJ1MAM5mpA4Z4RcTVwDYxsGWNq4JUw568WqoFXNGrgVQNqANG1cmrgFSDpXyUqLrrrIzG/xnz6fCFsGmg18AIwh8jG+zrzeii+vE4whb1OPH0i+PI6gRoATt3idSAP32CuBhTWNwh4+CaRGnjTgBq4Glj/t2B5SBn9boq3wPXLXW+XEgb8NoEaeIe5GlC434m4GrgaRra4se+meDfM+XuFauBdjRp4z4AaQHStnBp4F0j694iKi+76SMzvM58+3wibBloNvAHMIbLxfsC8HoovHxBMYUDcJGrgjRA3uhcCp27xAZCHHzJXAwrrhwQ8/IhIDXxkQA1cBaz/x7A82EmTauBjcP1y1yelhAF/QqAGZjJXAwr3zIirgatgZPM9TbgkamBWmPNPC9XALI0a+NSAGkB0rZwamAUk/adExUV3fSTmz5hPnx+GTQOtBj4E5hDZeD9nXg/Fl88JprDPiadPBF8+J1ADwKlbfA7k4WzmakBhnU3Awy+I1MAXBtTAlcD6fwnLQzphUg18Ca5f7vqqlDDgrwjUwBzmakDhnhNxNXAljGxuQhMuiRqYG+Z8XqEamKtRA/MMqAFE18qpgblA0s8jKi666yMxf818+pwdNg20GpgNzCGy8c5nXg/Fl/kEU9h84ukTwZf5BGoAOHWL+UAefsNcDSis3xDw8FsiNfCtATUwDlj/72B5iBl9U+g7cP1y1/elhAF/T6AGFjBXAwr3goirgXE4yWzsTaGFYc5/KFQDCzVq4AcDagDRtXJqYCGQ9D8QFRfd9ZGYf2Q+fX4TNg20GvgGmENk413EvB6KL4sIpjAgbhI18E2IG90LgVO3WATk4U/M1YDC+hMBD38mUgM/G1ADY4H1/wV3ZyxmUg38Aq5f7vq1lDDgXwnUwGLmakDhXhxxNTAWNzCmNeGSqIElYc5/K1QDSzRq4DcDagDRtXJqYAmQ9L8RFRfd9ZGYf2c+ff4UNg20GvgJmENk413KvB6KL0sJprClxNMngi9LCdQAcOoWS4E8XMZcDSisywh4+AeRGvjDgBq4Alj/P3FnYdykGvgTXL/c9VcpYcB/EaiBv5mrAYX774irgStwkjmlCZdEDSwPc76iUA0s16iBFQbUAKJr5dTAciDpVxAVF931kZj/YT59LgubBloNLAPmENp4y3jXQ/FFxYiewoC4SdTAshA3uhcuQ+6/MhzeesT1sIq7VmKtR8DD+mXYaTJ3rtYvo1cDY4B9qAEsDwmj3zDaAFy/3FVaRhhwaRl+3TJgM6DCXVa2KsGgdY2qgTGw5u0Z+4bR8jDnFWUlq0/+5WVrqgH1h6jVwBigGigHkr6ijKa46K6PxNyQ+fRZL2waaDVQD5hDZOOtZF4PxZdKgimskrkaqBfiRvdC4NQtKoE8bMRcDSisjQh4uAGRGtjAgBoYDVQDjSOqBhqD65e7mpQRBtyEQA00Za4GFO6mEVcDoyOoBqrCnFcXqoEqjRqoNqAGRgPVQBWQ9NURUQNIzM2YT5+NwqaBVgONgDlENt7mzOuh+NKcYAprTjx9IvjSnEANAKdu0RzIww2ZqwGFdUMCHm5EpAY2MqAGLgeqgY1heYgZ/U6hjcH1y12blBEGvAmBGmjBXA0o3C0irgYuh6mBlLHvFNo0zPlmhWpgU40a2MyAGrgcqAY2BZJ+szKa4qK7PhLz5synzw3DpoFWAxsCc4hsvC2Z10PxpSXBFNaSePpE8KUlgRoATt2iJZCHWzBXAwrrFgQ83JJIDWxpQA1cBlQDW+HUgG9SDWwFrl/u2rqMMOCtCdRAK+ZqQOFuFXE1cBlODTiacEnUQOsw59sUqoHWGjWwjQE1cBlQDbQGkn6bMpriors+EvO2zKfPLcKmgVYDWwBziGy8bZjXQ/GlDcEU1oZ4+kTwpQ2BGgBO3aINkIfbMVcDCut2BDzcnkgNbG9ADVwKVAM7wPJgG302sAO4frlrxzLCgHckUAM7MVcDCvdOEVcDl8LUgG/s2cDOYc53KVQDO2vUwC4G1MClQDWwM5D0u5TRFBfd9ZGYd2U+fW4XNg20GtgOmENk423LvB6KL20JprC2xNMngi9tCdQAcOoWbYE8bMdcDSis7Qh4uBuRGtjNgBq4BKgGLFgeHMekGrDA9ctdoowwYEGgBmzmakDhtiOuBi6BqYGMrwmXRA04Yc7dQjXgaNSAa0ANXAJUAw6Q9G4ZTXHRXR+JOcZ8+mwXNg20GmgHzCGy8caZ10PxJU4whcWJp08EX+IEagA4dYs4kIceczWgsHoEPEwQqYGEATUwCqgGkrA8ZI0+G0iC65e7di8jDHh3AjWwB3M1oHDvEXE1MAqmBoSxZwPtw5x3KFQD7TVqoIMBNTAKqAbaA0nfoYymuOiuj8S8J/Pp0wubBloNeMAcIhtvR+b1UHzpSDCFdSSePhF86UigBoBTt+gI5GEn5mpgJVYCHu5FpAb2MqAGRgLVwN6wPLhG1cDe4Prlrn3KCAPeh0ANdGauBhTuzhFXAyNx/yiHMTXQJcx510I10EWjBroaUAMjgWqgC5D0Xctoiovu+kjM+zKfPjuFTQOtBjoBc4hsvN2Y10PxpRvBFNaNePpE8KUbgRoATt2iG5CH3ZmrAYW1OwEP9yNSA/sZUAMXA9XA/rA8eEmTamB/cP1y1wFlhAEfQKAGDmSuBhTuAyOuBi6GqYGEpwmXRA30CHN+UKEa6KFRAwcZUAMXA9VADyDpDyqjKS666yMxH8x8+uweNg20GugOzCGy8fZkXg/Fl54EU1hP4ukTwZeeBGoAOHWLnkAe9mKuBhTWXgQ8PIRIDRxiQA2MAKqBQ3F3xoyqgUPB9ctdh5URBnwYgRo4nLkaULgPj7gaGIH752qNqYEjwpwfWagGjtCogSMNqIERQDVwBJD0R5bRFBfd9ZGYj2I+ffYKmwZaDfQC5hDZeHszr4fiS2+CKaw38fSJ4EtvAjUAnLpFbyAP+zBXAwprHwIeHk2kBo42oAaGA9XAMbhnA5ZJNXAMuH6569gywoCPJVADxzFXAwr3cRFXA8NhaiBpacIlUQPHhzlPFaqB4zVqIGVADQwHqoHjgaRPldEUF931kZjTzKfPPmHTQKuBPsAcIhtvhnk9FF8yBFNYhnj6RPAlQ6AGgFO3yAB56DNXAwqrT8DDLJEayBpQA8OAaiDAnYVG/y3iAFy/3HVCGWHAJxCogROZqwGF+8SIq4FhMDUQN/ZvEZ8U5vzkQjVwkkYNnGxADQwDqoGTgKQ/uYymuOiuj8R8CvPp0w+bBloN+MAcIhtvX+b1UHzpSzCF9SWePhF86UugBoBTt+gL5GE/5mpAYe1HwMNTidTAqQbUwEVANXAa7jm50W8YPQ1cv9x1ehlhwKcTqIEzmKsBhfuMiKuBi3A/RWzsG0bPDHN+VqEaOFOjBs4yoAYuAqqBM4GkP6uMprjoro/EfDbz6bNf2DTQaqAfMIfIxtufeT0UX/oTTGH9iadPBF/6E6gB4NQt+gN5OIC5GlBYBxDw8BwiNXCOATVwIVANnAvLQ9bos4FzwfXLXeeVEQZ8HoEaOJ+5GlC4z4+4GrgQ9w2jxp4NDAxzPqhQDQzUqIFBBtTAhUA1MBBI+kFlNMVFd30k5guYT58DwqaBVgMDgDlENt7BzOuh+DKYYAobTDx9IvgymEANAKduMRjIwyHM1YDCOoSAh0OJ1MBQA2pgKFANXAjLQxAzqQYuBNcvd11URhjwRQRqYBhzNaBwD4u4GhgKUwNWWhMuiRoYHuZ8RKEaGK5RAyMMqIGhQDUwHEj6EWU0xUV3fSTmi5lPn0PCpoFWA0OAOUQ23pHM66H4MpJgChtJPH0i+DKSQA0Ap24xEsjDUczVgMI6ioCHlxCpgUsMqIEhQDVwKSwPSaNvCl0Krl/uuqyMMODLCNTA5czVgMJ9ecTVwBDczw0Ye1NodJjzMYVqYLRGDYwxoAaGANXAaCDpx5TRFBfd9ZGYr2A+fY4KmwZaDYwC5hDZeMcyr4fiy1iCKWws8fSJ4MtYAjUAnLrFWCAPxzFXAwrrOAIeXkmkBq40oAYGA9XAVbhnA0a/U+gqcP1y19VlhAFfTaAGrmGuBhTuayKuBgbj3hQy9p1C14Y5v65QDVyrUQPXGVADg4Fq4Fog6a8roykuuusjMV/PfPocFzYNtBoYB8whsvGOZ14PxZfxBFPYeOLpE8GX8QRqADh1i/FAHk5grgYU1gkEPLyBSA3cEMZqcjK+oBSLJXfdWEYY8I0Ek/FNzCdjhfsmgslYFyuiMahY64NzAGw40Hqb3LCDiDbszWWEAd9MsGFvYb5hFe5bIrRhb2G+YdH1zl1o5TUQeL/tVmD+TDapW8tomtRtZYQB30bQpCYyb1IK90RDTcoq7lrZTCYSyPwJwBoh6307c5mvGt3tBPLqDuayUmG+gwD3nUSy8k7N7Vp0TqhrhtjjtxPcmkEOOLcDe8ddEdhDdxHsobuJ9tDdmge16JzcBVakTUtW8Z0y7i4lWK4VXpi1bdJnafXyctsq/HyPrOe90u6TNknaZGn3S3tA2oPSHpL2sLRHpD0qbYq0qdIek/a4tCekPSntKWlPS3tG2jRp06U9K+05ac9Le0Hai9JekvaytBnSXil8jndPeAjk++7V+O7T+CZpfJM1vvs1vgc0vgc1voc0voc1vkc0vkc1vika31SN7zGN73GN7wmN70mN7ymN72mN7xmNb5rGN13je1bje07je17je0Hje1Hje0nje1njm6HxvaIZOFqHv3YKf7WKu1ZrOsU2y3sAjTf3rPle0FoK432Qtf7N16Ti17LDfInJxa7l/k/uxf3FrWXl1VE8UMxa9mqcEA+u/1pWAb/EQ+u5VjxYg6vi4fVbK6HhvXhkfdZKaPeQeLTua3lr2Y9iSl3X8ta6t8XUuq1lr6NPiMfqspa3zp4jHq/9Wpka+pd4orZreTX2QvFk7dayatFXxVO1WcuqVY8WT9e8VqyW/V48U9Nabq3PDjFtnWu5QR3OITF9XWt5dTrTxLNrXytRx/NRPLeWtZJBnc9a8bx+LWs9zm3xgm4ta71mAPHimmuJ9ZwnxEuFa/nrPZuIl1dfyylizhEz8tayg6JmJvEK+AZD7kI/jXmlDLfWqzDMjtFHxq8Ca5Uf72tlhAG/VoZf93UgGahwv162KsGgdY2+/YxrDL6xt5/fCHP+ZuFdkzfK1nz7+c0y+refEV0rp0jfAJL+TXBxKTb4G2X428pvROS0mwGs9VswzHHX5Gn3FtFp93YZYcBvE5x27zA/7RTudyJ+2s2AkS2Z0YRLctq9G+b8vcLT7l3NafeegdNuBvC0exdI+veIiovu+kjM7+O6p/alk2Ljez1sGug3FZHS4APwtIBuWqrGHxBMSdxxvx7iRu8/JHc+JN5/VnGXUPn7kIA7H4Gnttz59VHZmlMnuv4vA+v/MSwPbtbk1P0xuH6565MywoA/IZi6ZzKfuhXumRGful+GkS1ta8IlmbpnhTn/tHDqnqWZuj81MHUjulZu6p4FJP2nRMVFd30k5s+Yn/ofhk0D/er9h8AcIhvv58zrofjyOcEUBsRN8hr3hyFudC9ETt2fA3k4m7miUlhnE/DwCyI18IUBNfASsP5fwvLg2SbVwJfg+uWur8oIA/6KQA3MYa4GFO45EVcDL8HIlshqwiVRA3PDnM8rVANzNWpgngE1gOhaOTUwF0j6eUTFRXd9JOavmU+fs8OmgVYDs4E5RDbe+czrofgyn2AKA+ImUQOzQ9zoXgicusV8IA+/Ya4GFNZvCHj4LZEa+NaAGngRWP/vYHkw++90fweuX+76voww4O8J1MAC5mpA4V4QcTXwIoxs5v6d7oVhzn8oVAMLNWrgBwNqANG1cmpgIZD0PxAVF931kZh/ZD59fhM2DbQa+AaYQ2TjXcS8HooviwimsEXE0yeCL4sI1ABw6haLgDz8ibkaUFh/IuDhz0Rq4GcDauAFYP1/geXBMaoGfgHXL3f9WkYY8K8EamAxczWgcC+OuBp4AUa2jDE1sCTM+W+FamCJRg38ZkANILpWTg0sAZL+N6Liors+EvPvzKfPn8KmgVYDPwFziGy8S5nXQ/FlKcEUtpR4+kTwZSmBGgBO3WIpkIfLmKsBhXUZAQ//IFIDfxhQA88D6/8nLA8po99N8Se4frnrrzLCgP8iUAN/M1cDCvffEVcDz8PIFjf23RTLw5yvKFQDyzVqYIUBNYDoWjk1sBxI+hVExUV3fSTmf5hPn8vCpoFWA8uAOYQ23nLe9VB8UTGipzAgbhI1sCzEje6Fy5D7rxyHtx5xPazirpVY6xHwsH45dprMnav1y+nVwHPAPtQAlgc7aVINNADXL3eVlhMGXFqOX7cM2AyocJeVr0owaF2jauA5WPP2PU24JGqgPMx5RXnJ6pN/efmaakD9IWo18BxQDZQDSV9RTlNcdNdHYm7IfPqsFzYNtBqoB8whsvFWMq+H4kslwRRWyVwN1Atxo3shcOoWlUAeNmKuBhTWRgQ83IBIDWxgQA08C1QDjWF5SCdMqoHG4PrlriblhAE3IVADTZmrAYW7acTVwLMwNeAmNOGSqIGqMOfVhWqgSqMGqg2ogWeBaqAKSPrqcpriors+EnMz5tNno7BpoNVAI2AOkY23OfN6KL40J5jCmhNPnwi+NCdQA8CpWzQH8nBD5mpAYd2QgIcbEamBjQyogelANbAxLA8xo28KbQyuX+7apJww4E0I1EAL5mpA4W4RcTUwHaYG0sbeFNo0zPlmhWpgU40a2MyAGpgOVAObAkm/WTlNcdFdH4l5c+bT54Zh00CrgQ2BOUQ23pbM66H40pJgCmtJPH0i+NKSQA0Ap27REsjDLZirAYV1CwIebkmkBrY0oAamAdXAVrg7YzGTamArcP1y19blhAFvTaAGWjFXAwp3q4irgWk4NZDWhEuiBlqHOd+mUA201qiBbQyogWlANdAaSPptymmKi+76SMzbMp8+twibBloNbAHMIbLxtmFeD8WXNgRTWBvi6RPBlzYEagA4dYs2QB5ux1wNKKzbEfBweyI1sL0BNfAMUA3sgDsL4ybVwA7g+uWuHcsJA96RQA3sxFwNKNw7RVwNPIN7UyilCZdEDewc5nyXQjWws0YN7GJADTwDVAM7A0m/SzlNcdFdH4l5V+bT53Zh00Crge2AOUQ23rbM66H40pZgCmtLPH0i+NKWQA0Ap27RFsjDdszVgMLajoCHuxGpgd0MqIGngWrAguUhYfQbRi1w/XKXKCcMWBCoAZu5GlC47YirgadhasALNOGSqAEnzLlbqAYcjRpwDaiBp4FqwAGS3i2nKS666yMxx5hPn+3CpoFWA+2AOUQ23jjzeii+xAmmsDjx9IngS5xADQCnbhEH8tBjrgYUVo+AhwkiNZAwoAaeAqqBZETVQBJcv9y1ezlhwLsTqIE9mKsBhXuPiKuBpyKoBtqHOe9QqAbaa9RABwNq4CmgGmgPJH2HiKgBJOY9mU+fXtg00GrAA+YQ2Xg7Mq+H4ktHgimsI/H0ieBLRwI1AJy6RUcgDzsxVwMrsRLwcC8iNbCXATXwJFAN7A3LQ8zodwrtDa5f7tqnnDDgfQjUQGfmakDh7hxxNfAk7h/lMPadQl3CnHctVANdNGqgqwE18CRQDXQBkr5rOU1x0V0fiXlf5tNnp7BpoNVAJ2AOkY23G/N6KL50I5jCuhFPnwi+dCNQA8CpW3QD8rA7czWgsHYn4OF+RGpgPwNq4AmgGtgfpwZ8k2pgf3D9ctcB5YQBH0CgBg5krgYU7gMjrgaewKkBRxMuiRroEeb8oEI10EOjBg4yoAaeAKqBHkDSH1ROU1x010diPpj59Nk9bBpoNdAdmENk4+3JvB6KLz0JprCexNMngi89CdQAcOoWPYE87MVcDSisvQh4eAiRGjjEgBp4HKgGDoXlwTb6bOBQcP1y12HlhAEfRqAGDmeuBhTuwyOuBh7H/etjxp4NHBHm/MhCNXCERg0caUANPA5UA0cASX9kOU1x0V0fifko5tNnr7BpoNVAL2AOkY23N/N6KL70JpjCehNPnwi+9CZQA8CpW/QG8rAPczWgsPYh4OHRRGrgaANq4DGgGjgGlgfHMakGjgHXL3cdW04Y8LEEauA45mpA4T4u4mrgMZgayPiacEnUwPFhzlOFauB4jRpIGVADjwHVwPFA0qfKaYqL7vpIzGnm02efsGmg1UAfYA6RjTfDvB6KLxmCKSxDPH0i+JIhUAPAqVtkgDz0masBhdUn4GGWSA1kDaiBqUA1EMDykDX6bCAA1y93nVBOGPAJBGrgROZqQOE+MeJqYCpMDQhjzwZOCnN+cqEaOEmjBk42oAamAtXASUDSn1xOU1x010diPoX59OmHTQOtBnxgDpGNty/zeii+9CWYwvoST58IvvQlUAPAqVv0BfKwH3M1oLD2I+DhqURq4FQDamAKUA2cBsuDa1QNnAauX+46vZww4NMJ1MAZzNWAwn1GxNXAFNy/PmZMDZwZ5vysQjVwpkYNnGVADUwBqoEzgaQ/q5ymuOiuj8R8NvPps1/YNNBqoB8wh8jG2595PRRf+hNMYf2Jp08EX/oTqAHg1C36A3k4gLkaUFgHEPDwHCI1cI4BNfAoUA2cC8uDlzSpBs4F1y93nVdOGPB5BGrgfOZqQOE+P+Jq4FGYGkh4mnBJ1MDAMOeDCtXAQI0aGGRADTwKVAMDgaQfVE5TXHTXR2K+gPn0OSBsGmg1MACYQ2TjHcy8HoovgwmmsMHE0yeCL4MJ1ABw6haDgTwcwlwNKKxDCHg4lEgNDDWgBh4BqoELcXfGjKqBC8H1y10XlRMGfBGBGhjGXA0o3MMirgYewf1bxMbUwPAw5yMK1cBwjRoYYUANPAJUA8OBpB9RTlNcdNdHYr6Y+fQ5JGwaaDUwBJhDZOMdybweii8jCaawkcTTJ4IvIwnUAHDqFiOBPBzFXA0orKMIeHgJkRq4xIAaeBioBi7FPRuwTKqBS8H1y12XlRMGfBmBGricuRpQuC+PuBp4GKYGkpYmXBI1MDrM+ZhCNTBaowbGGFADDwPVwGgg6ceU0xQX3fWRmK9gPn2OCpsGWg2MAuYQ2XjHMq+H4stYgilsLPH0ieDLWAI1AJy6xVggD8cxVwMK6zgCHl5JpAauNKAGHgKqgatwZ6HRf4v4KnD9ctfV5YQBX02gBq5hrgYU7msirgYegqmBeKAJl0QNXBvm/LpCNXCtRg1cZ0ANPARUA9cCSX9dOU1x0V0fifl65tPnuLBpoNXAOGAOkY13PPN6KL6MJ5jCxhNPnwi+jCdQA8CpW4wH8nACczWgsE4g4OENRGrgBgNq4EGgGrgR95zc6DeM3giuX+66qZww4JsI1MDNzNWAwn1zxNXAg7ifIjb2DaO3hDm/tVAN3KJRA7caUAMPAtXALUDS31pOU1x010divo359DkhbBpoNTABmENk453IvB6KLxMJprCJxNMngi8TCdQAcOoWE4E8vJ25GlBYbyfg4R1EauAOA2rgAaAauBOWh6zRZwN3guuXu+4qJwz4LgI1cDdzNaBw3x1xNfAA7htGA024JGrgnjDn9xaqgXs0auBeA2rgAaAauAdI+nvLaYqL7vpIzPcxnz5vD5sGWg3cDswhsvFOYl4PxZdJBFPYJOLpE8GXSQRqADh1i0lAHk5mrgYU1skEPLyfSA3cb0AN3A9UAw/A8hDETKqBB8D1y10PlhMG/CCBGniIuRpQuB+KuBq4H6YGrLQmXBI18HCY80cK1cDDGjXwiAE1cD9QDTwMJP0j5TTFRXd9JOZHmU+fk8OmgVYDk4E5RDbeKczrofgyhWAKm0I8fSL4MoVADQCnbjEFyMOpzNWAwjqVgIePEamBxwyogclANfA4LA9Jo28KPQ6uX+56opww4CcI1MCTzNWAwv1kxNXAZNzPDRh7U+ipMOdPF6qBpzRq4GkDamAyUA08BST90+U0xUV3fSTmZ5hPn1PDpoFWA1OBOUQ23mnM66H4Mo1gCptGPH0i+DKNQA0Ap24xDcjD6czVgMI6nYCHzxKpgWcNqIFJQDXwHO7ZgNHvFHoOXL/c9Xw5YcDPE6iBF5irAYX7hYirgUm4N4WMfafQi2HOXypUAy9q1MBLBtTAJKAaeBFI+pfKaYqL7vpIzC8znz6nh00DrQamA3OIbLwzmNdD8WUGwRQ2g3j6RPBlBoEaAE7dYgaQh68wVwMK6ysEPHyVSA28GsZqcjK+rwyLJXe9Vk4Y8GsEk/HrzCdjhft1gslYFyuiMahY64NzAGw40Hqb3LD3Em3YN8oJA36DYMO+yXzDKtxvRmjDvsl8w6LrnbvQyuse4P22t4D5M9mk3iqnaVJvlxMG/DZBk3qHeZNSuN8x1KSs4q6VzeQdApn/CrBGyHq/y1zmq0b3LoG8eo+5rFSY3yPA/T6RrHxfc7sWnRPqmiH2+LsEt2aQA867wN7xQQT20AcEe+hDoj30oeZBLTonH4AVadOSVXzPv9BD/mmltV5L1PDfrdNLsbwtvDBr26TP5erl8atV+PkjyY2PpX0ibaa0WdI+lfaZtM+lzZb2hbQvpX0lbY60udLmSfta2nxp30j7Vtp30r6XtkDaQmk/SPtR2iJpP0n7Wdov0n6VtljaksJngh+FB0q+72ON7xONb6bGN0vj+1Tj+0zj+1zjm63xfaHxfanxfaXxzdH45mp88zS+rzW++RrfNxrftxrfdxrf9xrfAo1vocb3g8b3o8a3SOP7SeP7WeP7ReP7VeNbrPEt0Qwv24S/dgp/tYq7yBpYsU38I8CBkHsG/jFoLZWDTyBr/ZvPmcWvZYf5ErOKXcv9n9yLT4tby8qro/ismLXs1TghPl//tawCfonZ67lWPFiDq+KL9VsroeG9+HJ91kpo95D4qu5reWvZj2JOXdfy1rq3xdy6rWWvo0+IeXVZy1tnzxFf136tTA39S8yv7Vpejb1QfFO7taxa9FXxbW3WsmrVo8V3Na8Vq2W/F9/XtJZb67NDLFjnWm5Qh3NILFzXWl6dzjTxw9rXStTxfBQ/rmWtZFDns1Ys0q9lrce5LX7SrWWt1wwgfl5zLbGe84T4pXAtf71nE/Hr6ms5Rcw5YnHeWnZQ1MwkloBvfOQu9FOiJeW4tX6DYXaMPsr+DVir/Hh/LycM+Pdy/LpLgWSgwr20fFWCQesafSsb1xh8Y29lLwtz/kfhHZhl5Wu+lf1HOf1b2YiulVOky4Ck/wNcXIoNvqwcf7t7WUROu8XAWv8Jwxx3TZ52fxKddn+VEwb8F8Fp9zfz007h/jvip91iGNmSGU24JKfd8jDnKwpPu+Wa026FgdNuMfC0Ww4k/Qqi4qK7PhLzP7juqX0Zptj4loZNA/1wFSoNKni/FKBqrGJE14Y77qUhbvT+Q3KnXgXt/rOKu8RK3hBwp34FdmrLnV/1K9acOtH1/xVY/wawPLhZk1N3A3D9cldpBWHApRX4dcsqeE/dCndZxaoEg9Y1OnX/ChtS0rYmXJKpuzzMeUVFyeoTdnnFmlO3+kPUU/evwKm7HEj6igqa4qK7PhJzQ+anfr2waaB/JKAeMIfIxlvJvB6KL5UEU1gl8QSP4EtlBb4XIqfuSiAPGzFXVAprIwIebkCkBjYwoAZ+AaqBxrA8eLZJNdAYXL/c1aSCMOAmBGqgKXM1oHA3jbga+AWmBhJZTbgkaqAqzHl1oRqo0qiBagNq4BegGqgCkr66gqa46K6PxNyM+fTZKGwaaDXQCJhDZONtzrweii/NCaaw5sTTJ4IvzQnUAHDqFs2BPNyQuRpQWDck4OFGRGpgIwNq4GegGtgYlgez/374xuD65a5NKggD3oRADbRgrgYU7hYRVwM/w9SAuX8/fNMw55sVqoFNNWpgMwNq4GegGtgUSPrNKmiKi+76SMybM58+NwybBloNbAjMIbLxtmReD8WXlgRTWEvi6RPBl5YEagA4dYuWQB5uwVwNKKxbEPBwSyI1sKUBNfATUA1sBcuDY1QNbAWuX+7auoIw4K0J1EAr5mpA4W4VcTXwE0wNZIypgdZhzrcpVAOtNWpgGwNq4CegGmgNJP02FTTFRXd9JOZtmU+fW4RNA60GtgDmENl42zCvh+JLG4IprA3x9IngSxsCNQCcukUbIA+3Y64GFNbtCHi4PZEa2N6AGlgEVAM7wPKQMvrdFDuA65e7dqwgDHhHAjWwE3M1oHDvFHE1sAj3I+3Gvpti5zDnuxSqgZ01amAXA2pgEVAN7Awk/S4VNMVFd30k5l2ZT5/bhU0DrQa2A+YQ2XjbMq+H4ktbgimsLfH0ieBLWwI1AJy6RVsgD9sxVwMKazsCHu5GpAZ2M6AGfgSqAQuWBztpUg1Y4PrlLlFBGLAgUAM2czWgcNsRVwM/4r7MzNOES6IGnDDnbqEacDRqwDWgBn4EqgEHSHq3gqa46K6PxBxjPn22C5sGWg20A+YQ2XjjzOuh+BInmMLixNMngi9xAjUAnLpFHMhDj7kaUFg9Ah4miNRAwoAa+AGoBpKwPKQTJtVAEly/3LV7BWHAuxOogT2YqwGFe4+Iq4EfYGrATWjCJVED7cOcdyhUA+01aqCDATXwA1ANtAeSvkMFTXHRXR+JeU/m06cXNg20GvCAOUQ23o7M66H40pFgCutIPH0i+NKRQA0Ap27REcjDTszVwEqsBDzci0gN7GVADSwEqoG9YXmIGX1TaG9w/XLXPhWEAe9DoAY6M1cDCnfniKuBhbhvGDX2plCXMOddC9VAF40a6GpADSwEqoEuQNJ3raApLrrrIzHvy3z67BQ2DbQa6ATMIbLxdmNeD8WXbgRTWDfi6RPBl24EagA4dYtuQB52Z64GFNbuBDzcj0gN7GdADSwAqoH9cXfGYibVwP7g+uWuAyoIAz6AQA0cyFwNKNwHRlwNLMCpgbQmXBI10CPM+UGFaqCHRg0cZEANLACqgR5A0h9UQVNcdNdHYj6Y+fTZPWwaaDXQHZhDZOPtybweii89CaawnsTTJ4IvPQnUAHDqFj2BPOzFXA0orL0IeHgIkRo4xIAa+B6oBg7FnYVxk2rgUHD9ctdhFYQBH0agBg5nrgYU7sMjrga+x70plNKES6IGjghzfmShGjhCowaONKAGvgeqgSOApD+ygqa46K6PxHwU8+mzV9g00GqgFzCHyMbbm3k9FF96E0xhvYmnTwRfehOoAeDULXoDediHuRpQWPsQ8PBoIjVwtAE18B1QDRwDy0PC6DeMHgOuX+46toIw4GMJ1MBxzNWAwn1cxNXAdzA14Bn7htHjw5ynCtXA8Ro1kDKgBr4DqoHjgaRPVdAUF931kZjTzKfPPmHTQKuBPsAcIhtvhnk9FF8yBFNYhnj6RPAlQ6AGgFO3yAB56DNXAwqrT8DDLJEayBpQA98C1UAQUTUQgOuXu06oIAz4BAI1cCJzNaBwnxhxNfBtBNXASWHOTy5UAydp1MDJBtTAt0A1cBKQ9CdHRA0gMZ/CfPr0w6aBVgM+MIfIxtuXeT0UX/oSTGF9iadPBF/6EqgB4NQt+gJ52I+5GlBY+xHw8FQiNXCqATXwDVANnAbLQ8zodwqdBq5f7jq9gjDg0wnUwBnM1YDCfUbE1cA3MDWQMvadQmeGOT+rUA2cqVEDZxlQA98A1cCZQNKfVUFTXHTXR2I+m/n02S9sGmg10A+YQ2Tj7c+8Hoov/QmmsP7E0yeCL/0J1ABw6hb9gTwcwFwNKKwDCHh4DpEaOMeAGpgPVAPn4tSAb1INnAuuX+46r4Iw4PMI1MD5zNWAwn1+xNXAfJwacDThkqiBgWHOBxWqgYEaNTDIgBqYD1QDA4GkH1RBU1x010divoD59DkgbBpoNTAAmENk4x3MvB6KL4MJprDBxNMngi+DCdQAcOoWg4E8HMJcDSisQwh4OJRIDQw1oAa+BqqBC2F5sI0+G7gQXL/cdVEFYcAXEaiBYczVgMI9LOJq4Gvcvz5m7NnA8DDnIwrVwHCNGhhhQA18DVQDw4GkH1FBU1x010divpj59DkkbBpoNTAEmENk4x3JvB6KLyMJprCRxNMngi8jCdQAcOoWI4E8HMVcDSisowh4eAmRGrjEgBqYB1QDl8Ly4Dgm1cCl4PrlrssqCAO+jEANXM5cDSjcl0dcDcyDqYGMrwmXRA2MDnM+plANjNaogTEG1MA8oBoYDST9mAqa4qK7PhLzFcynz1Fh00CrgVHAHCIb71jm9VB8GUswhY0lnj4RfBlLoAaAU7cYC+ThOOZqQGEdR8DDK4nUwJUG1MBcoBq4CpaHrNFnA1eB65e7rq4gDPhqAjVwDXM1oHBfE3E1MBemBoSxZwPXhjm/rlANXKtRA9cZUANzgWrgWiDpr6ugKS666yMxX898+hwXNg20GhgHzCGy8Y5nXg/Fl/EEU9h44ukTwZfxBGoAOHWL8UAeTmCuBhTWCQQ8vIFIDdxgQA3MAaqBG2F5cI2qgRvB9ctdN1UQBnwTgRq4mbkaULhvjrgamIP718eMqYFbwpzfWqgGbtGogVsNqIE5QDVwC5D0t1bQFBfd9ZGYb2M+fU4ImwZaDUwA5hDZeCcyr4fiy0SCKWwi8fSJ4MtEAjUAnLrFRCAPb2euBhTW2wl4eAeRGrjDgBr4CqgG7oTlwUuaVAN3guuXu+6qIAz4LgI1cDdzNaBw3x1xNfAVTA0kPE24JGrgnjDn9xaqgXs0auBeA2rgK6AauAdI+nsraIqL7vpIzPcxnz5vD5sGWg3cDswhsvFOYl4PxZdJBFPYJOLpE8GXSQRqADh1i0lAHk5mrgYU1skEPLyfSA3cb0ANfAlUAw/g7owZVQMPgOuXux6sIAz4QQI18BBzNaBwPxRxNfAl7t8iNqYGHg5z/kihGnhYowYeMaAGvgSqgYeBpH+kgqa46K6PxPwo8+lzctg00GpgMjCHyMY7hXk9FF+mEExhU4inTwRfphCoAeDULaYAeTiVuRpQWKcS8PAxIjXwmAE18AVQDTyOezZgmVQDj4Prl7ueqCAM+AkCNfAkczWgcD8ZcTXwBUwNJC1NuCRq4Kkw508XqoGnNGrgaQNq4AugGngKSPqnK2iKi+76SMzPMJ8+p4ZNA60GpgJziGy805jXQ/FlGsEUNo14+kTwZRqBGgBO3WIakIfTmasBhXU6AQ+fJVIDzxpQA7OBauA53Flo9N8ifg5cv9z1fAVhwM8TqIEXmKsBhfuFiKuB2TA1EDf2bxG/GOb8pUI18KJGDbxkQA3MBqqBF4Gkf6mCprjoro/E/DLz6XN62DTQamA6MIfIxjuDeT0UX2YQTGEziKdPBF9mEKgB4NQtZgB5+ApzNaCwvkLAw1eJ1MCrBtTA50A18BruObnRbxh9DVy/3PV6BWHArxOogTeYqwGF+42Iq4HPcT9FbOwbRt8Mc/5WoRp4U6MG3jKgBj4HqoE3gaR/q4KmuOiuj8T8NvPp85WwaaDVwCvAHCIb7zvM66H48g7BFPYO8fSJ4Ms7BGoAOHWLd4A8fJe5GlBY3yXg4XtEauA9A2rgM6AaeB+Wh6zRZwPvg+uXuz6oIAz4AwI18CFzNaBwfxhxNfAZ7htGjT0b+CjM+ceFauAjjRr42IAa+AyoBj4Ckv7jCpriors+EvMnzKfPd8OmgVYD7wJziGy8M5nXQ/FlJsEUNpN4+kTwZSaBGgBO3WImkIezmKsBhXUWAQ8/JVIDnxpQA58C1cBnsDwEMZNq4DNw/XLX5xWEAX9OoAZmM1cDCvfsiKuBT2FqwEprwiVRA1+EOf+yUA18oVEDXxpQA58C1cAXQNJ/WUFTXHTXR2L+ivn0OStsGmg1MAuYQ2TjncO8HoovcwimsDnE0yeCL3MI1ABw6hZzgDycy1wNKKxzCXg4j0gNzDOgBmYB1cDXsDwkjb4p9DW4frlrfgVhwPMJ1MA3zNWAwv1NxNXALNzPDRh7U+jbMOffFaqBbzVq4DsDamAWUA18CyT9dxU0xUV3fSTm75lPn3PDpoFWA3OBOUQ23gXM66H4soBgCltAPH0i+LKAQA0Ap26xAMjDhczVgMK6kICHPxCpgR8MqIGZQDXwI+7ZgNHvFPoRXL/ctaiCMOBFBGrgJ+ZqQOH+KeJqYCbuTSFj3yn0c5jzXwrVwM8aNfCLATUwE6gGfgaS/pcKmuKiuz4S86/Mp8+FYdNAq4GFwBwiG+9i5vVQfFlMMIUtJp4+EXxZTKAGgFO3WAzk4RLmakBhXULAw9+I1MBvYawmJ+NPyrFYctfvFYQB/04wGS9lPhkr3EsJJmNdrIjGoGKtD84BsOFA621yw35MtGGXVRAGvIxgw/7BfMMq3H9EaMP+wXzDouudu9DK6yPg/bY/gfkz2aT+rKBpUn9VEAb8F0GT+pt5k1K4/zbUpKzirpXN5G8Cmb8EWCNkvZczl/mq0S0nkFcrmMtKhXkFAe5/iGTlP5rbteicUNcMsceXE9yaQQ44y5FnRUP+e0jFiK5zvYY0e6hewzUHJ3RO8muGUKRNS1bxnTLubAmWa4UXZm2b9Flavbzctgo/15f1bCCtVFqZtHJpFdIaSquU1kjaBtIaS2siram0KmnV0ppJay5tQ2kbSdtY2ibSWkjbVNpm0jaX1lLaFtK2lLaVtK2ltZLWumHJ6s/sVDCFvgYaX6nGV6bxlWt8FRpfQ42vUuNrpPFtoPE11viaaHxNNb4qja9a42um8TXX+DbU+DbS+DbW+DbR+FpofJtqfJtpfJtrfC01vi00vi01vq00vq01vlYaX+uGaw4crcNfO4W/WsVdqzWdYptlfUDjzT1rbgBaS2Eshaz1b77Kil/LDvMlyotdy/2f3IuK4tay8uooGhazlr0aJ0Tl+q9lFfBLNFrPteLBGlwVG6zfWgkN70Xj9Vkrod1Doknd1/LWsh9F07qu5a11b4uquq1lr6NPiOq6rOWts+eIZrVfK1ND/xLNa7uWV2MvFBvWbi2rFn1VbFSbtaxa9Wixcc1rxWrZ78UmNa3l1vrsEC3WuZYb1OEcEpuuay2vTmea2GztayXqeD6KzdeyVjKo81krWurXstbj3BZb6Nay1msGEFuuuZZYz3lCbFW4lr/es4nYevW1nCLmHNEqby07KGpmEq0b0og+9NOY1g1xa20Dw+wYfWS8DbBW+fFu25AwYLU4et02QDJQ4W6Tp5xA6xp9+xnXGHxjbz9vF+Z8+0Ilu13DNd9+3r4h/dvPiK6VU6TbAUm/Pbi4FBt8u4b428rbReS0awWs9Q4wzHHX5Gm3A9Fpt2NDwoB3JDjtdmJ+2incO0X8tGsFI1syowmX5LTbOcz5LoWn3c6a024XA6ddK+BptzOQ9LsQFRfd9ZGYd8V1T+1LJ8XG1yZsGug3FZHSoC14WkA3LVXjtgRTEnfcbULc6P2H5E474v1nFXcJlb92BNzZDTy15c6v3RquOXWi6781sP4WLA9u1uTUbYHrl7tEQ8KABcHUbTOfuhVuO+JT99YwsqVtTbgkU7cT5twtnLodzdTtGpi6EV0rN3U7QNK7RMVFd30k5hjzU79d2DTQr963A+YQ2XjjzOuh+BInmMKAuEle424X4kb3QuTUHQfy0GOuqBRWj4CHCSI1kDCgBrYC1j8Jy4Nnm1QDSXD9ctfuDQkD3p1ADezBXA0o3HtEXA1sBSNbIqsJl0QNtA9z3qFQDbTXqIEOBtQAomvl1EB7IOk7EBUX3fWRmPdkPn16YdNAqwEPmENk4+3IvB6KLx0JprCOxNMngi8dCdQAcOoWHYE87MRcDazESsDDvYjUwF4G1MCWwPrvDcuD2X+ne29w/XLXPg0JA96HQA10Zq4GFO7OEVcDW8LIZu7f6e4S5rxroRroolEDXQ2oAUTXyqmBLkDSdyUqLrrrIzHvy3z67BQ2DbQa6ATMIbLxdmNeD8WXbgRTWDfi6RPBl24EagA4dYtuQB52Z64GFNbuBDzcj0gN7GdADWwBrP/+sDw4RtXA/uD65a4DGhIGfACBGjiQuRpQuA+MuBrYAka2jDE10CPM+UGFaqCHRg0cZEANILpWTg30AJL+IKLiors+EvPBzKfP7mHTQKuB7sAcIhtvT+b1UHzpSTCF9SSePhF86UmgBoBTt+gJ5GEv5mpAYe1FwMNDiNTAIQbUQEtg/Q+F5SFl9LspDgXXL3cd1pAw4MMI1MDhzNWAwn14xNVASxjZ4sa+m+KIMOdHFqqBIzRq4EgDagDRtXJq4Agg6Y8kKi666yMxH8V8+uwVNg20GugFzCGy8fZmXg/Fl94EUxgQN4ka6BXiRvdC4NQtegN52Ie5GlBY+xDw8GgiNXC0ATWwObD+x8DyYCdNqoFjwPXLXcc2JAz4WAI1cBxzNaBwHxdxNbA5jGy+pwmXRA0cH+Y8VagGjteogZQBNYDoWjk1cDyQ9Cmi4qK7PhJzmvn02SdsGmg10AeYQ2TjzTCvh+JLhmAKyxBPnwi+ZAjUAHDqFhkgD33makBh9Ql4mCVSA1kDamAzYP0DWB7SCZNqIADXL3ed0JAw4BMI1MCJzNWAwn1ixNXAZjCyuQlNuCRq4KQw5ycXqoGTNGrgZANqANG1cmrgJCDpTyYqLrrrIzGfwnz69MOmgVYDPjCHyMbbl3k9FF/6EkxhfYmnTwRf+hKoAeDULfoCediPuRpQWPsR8PBUIjVwqgE1sCmw/qfB8hAz+qbQaeD65a7TGxIGfDqBGjiDuRpQuM+IuBrYFCeZjb0pdGaY87MK1cCZGjVwlgE1gOhaOTVwJpD0ZxEVF931kZjPZj599gubBloN9APmENl4+zOvh+JLf4IpDIibRA30C3GjeyFw6hb9gTwcwFwNKKwDCHh4DpEaOMeAGmgBrP+5uDtjMZNq4Fxw/XLXeQ0JAz6PQA2cz1wNKNznR1wNtMANjGlNuCRqYGCY80GFamCgRg0MMqAGEF0rpwYGAkk/iKi46K6PxHwB8+lzQNg00GpgADCHyMY7mHk9FF8GE0xhg4mnTwRfBhOoAeDULQYDeTiEuRpQWIcQ8HAokRoYakANbAKs/4W4szBuUg1cCK5f7rqoIWHAFxGogWHM1YDCPSziamATnGROacIlUQPDw5yPKFQDwzVqYIQBNYDoWjk1MBxI+hFExUV3fSTmi5lPn0PCpoFWA0OAOUQ23pHM66H4MpJgChtJPH0i+DKSQA0Ap24xEsjDUczVgMI6ioCHlxCpgUsMqIGNgfW/FJaHhNFvGL0UXL/cdVlDwoAvI1ADlzNXAwr35RFXAxvDyOYZ+4bR0WHOxxSqgdEaNTDGgBpAdK2cGhgNJP0YouKiuz4S8xXMp89RYdNAq4FRwBwiG+9Y5vVQfBlLMIWNJZ4+EXwZS6AGgFO3GAvk4TjmakBhHUfAwyuJ1MCVBtTARsD6XxVRNXAVuH656+qGhAFfTaAGrmGuBhTuayKuBjaKoBq4Nsz5dYVq4FqNGrjOgBpAdK2cGrgWSPrrIqIGkJivZz59jgubBloNjAPmENl4xzOvh+LLeIIpbDzx9Ingy3gCNQCcusV4IA8nMFcDCusEAh7eQKQGbjCgBjYE1v9GWB5iRr9T6EZw/XLXTQ0JA76JQA3czFwNKNw3R1wNbAgjW8rYdwrdEub81kI1cItGDdxqQA0gulZODdwCJP2tRMVFd30k5tuYT58TwqaBVgMTgDlENt6JzOuh+DKRYAqbSDx9IvgykUANAKduMRHIw9uZqwGF9XYCHt5BpAbuMKAGmgPrfydODfgm1cCd4PrlrrsaEgZ8F4EauJu5GlC47464GmiOGxgdTbgkauCeMOf3FqqBezRq4F4DagDRtXJq4B4g6e8lKi666yMx38d8+rw9bBpoNXA7MIfIxjuJeT0UXyYRTGGTiKdPBF8mEagB4NQtJgF5OJm5GlBYJxPw8H4iNXC/ATXQDFj/B2B5sI0+G3gAXL/c9WBDwoAfJFADDzFXAwr3QxFXA81gZPONPRt4OMz5I4Vq4GGNGnjEgBpAdK2cGngYSPpHiIqL7vpIzI8ynz4nh00DrQYmA3OIbLxTmNdD8WUKwRQ2hXj6RPBlCoEaAE7dYgqQh1OZqwGFdSoBDx8jUgOPGVAD1cD6Pw7Lg+OYVAOPg+uXu55oSBjwEwRq4EnmakDhfjLiaqAaRraMrwmXRA08Feb86UI18JRGDTxtQA0gulZODTwFJP3TRMVFd30k5meYT59Tw6aBVgNTgTlENt5pzOuh+DKNYAqbRjx9IvgyjUANAKduMQ3Iw+nM1YDCOp2Ah88SqYFnDaiBKmD9n4PlIWv02cBz4PrlrucbEgb8PIEaeIG5GlC4X4i4GqiCkU0YezbwYpjzlwrVwIsaNfCSATWA6Fo5NfAikPQvERUX3fWRmF9mPn1OD5sGWg1MB+YQ2XhnMK+H4ssMgilsBvH0ieDLDAI1AJy6xQwgD19hrgYU1lcIePgqkRp41YAaaAqs/2uwPLhG1cBr4PrlrtcbEgb8OoEaeIO5GlC434i4GmgKI1vamBp4M8z5W4Vq4E2NGnjLgBpAdK2cGngTSPq3iIqL7vpIzG8znz5fCZsGWg28AswhsvG+w7weii/vEExh7xBPnwi+vEOgBoBTt3gHyMN3masBhfVdAh6+R6QG3jOgBpoA6/8+LA9e0qQaeB9cv9z1QUPCgD8gUAMfMlcDCveHEVcDTWBkS3iacEnUwEdhzj8uVAMfadTAxwbUAKJr5dTAR0DSf0xUXHTXR2L+hPn0+W7YNNBq4F1gDpGNdybzeii+zCSYwmYST58IvswkUAPAqVvMBPJwFnM1oLDOIuDhp0Rq4FMDaqAxsP6f4e6MGVUDn4Hrl7s+b0gY8OcEamA2czWgcM+OuBpojHuAZkwNfBHm/MtCNfCFRg18aUANILpWTg18AST9l0TFRXd9JOavmE+fs8KmgVYDs4A5RDbeOczrofgyh2AKm0M8fSL4ModADQCnbjEHyMO5zNWAwjqXgIfziNTAPANqYANg/b/GPRuwTKqBr8H1y13zGxIGPJ9ADXzDXA0o3N9EXA1sACNb0tKES6IGvg1z/l2hGvhWowa+M6AGEF0rpwa+BZL+O6Liors+EvP3zKfPuWHTQKuBucAcIhvvAub1UHxZQDCFAXGTqIG5IW50LwRO3WIBkIcLmasBhXUhAQ9/IFIDPxhQA42A9f8RdxYa/beIfwTXL3ctakgY8CICNfATczWgcP8UcTXQCEa2uLF/i/jnMOe/FKqBnzVq4BcDagDRtXJq4Gcg6X8hKi666yMx/8p8+lwYNg20GlgIzCGy8S5mXg/Fl8UEU9hi4ukTwZfFBGoAOHWLxUAeLmGuBhTWJQQ8/I1IDfxmQA1UAuv/O+45udFvGP0dXL/ctbQhYcBLCdTAMuZqQOFeFnE1UIl7nc7YN4z+Eeb8z0I18IdGDfxpQA0gulZODfwBJP2fRMVFd30k5r+YT59LwqaBVgNLgDlENt6/mddD8eVvginsb+LpE8GXvwnUAHDqFn8DebicuRpQWJcT8HAFkRpYYUANNATW/x9YHrJGnw38A67f/1yVhAGrxdHr1qvkrQYU7nqVq/ILWteoGmgII5sw9mygfpjzBpUlq0/+9SvXVAPqD1GrgYZANVAfSPoGlTTFRXd9JObSSlxdS0rwG2552DTQamA58ORENt4y5vVQfCmrxE9hQNwkakDxpawS3wuBU7coA/KwnLgeVnHXSqzlBDysqMROk7lztaKSXg1UAHtaQ1gegphJNdAQXL/cVVlJGHAlgRpoxFwNKNyNIq4GKnDNO60Jl0QNbBDmvHGhGthAowYaG1ADFUA1sAGQ9I0raYqL7vpIzE2YT5/lYdNAq4FyYA6Rjbcp83oovjQlmMKaMlcD5SFudC8ETt2iKZCHVczVgMJaRcDDaiI1UG1ADZQD1UAzWB6SRt8UagauX+5qXkkYcHMCNbAhczWgcG8YcTVQjnu13NibQhuFOd+4UA1spFEDGxtQA+VANbARkPQbV9IUF931kZg3YT59VoVNA60GqoA5RDbeFszrofjSgmAKa0E8fSL40oJADQCnbtECyMNNmasBhXVTAh5uRqQGNjOgBsqAamBz3LMBo98ptDm4frmrZSVhwC0J1MAWzNWAwr1FxNVAGe5NIWPfKbRlmPOtCtXAlho1sJUBNVAGVANbAkm/VSVNcdFdH4l5a+bT56Zh00CrgU2BOUQ23lbM66H40opgCmtFPH0i+NKKQA0Ap27RCsjD1szVgMLamoCH2xCpgW3CWE1OxqVE79BvW0kY8LYEk3Eb5pOxwt2GYDLWxYpoDCrW+uAcABsOtN4mN2wDog27XSVhwNsRbNjtmW9YhXv7CG3Y7ZlvWHS9cxdaedUH3m/bAZg/k01qh0qaJrVjJWHAOxI0qZ2YNymFeydDTcoq7lrZTHYikPmtgTVC1ntn5jJfNbqdCeTVLsxlpcK8CwHuXYlk5a6a27XonFDXDLHHdya4NYMccHYG9o62EdhDbQn2UDuiPdRO86AWnZO2YEXatGQV3ynjrleC5VrhhVnbJn2WVi8vt63Cz7vJelrShDRbmiPNlRaTFpfmSUtIS0rbXdoe0tpL6yBtT2kdFR+k7SVtb2n7SOssrYu0rtL2ldZNWndp+0nbX9oB0g6U1qPwOd5u4SGQ77M0PqHx2Rqfo/G5Gl9M44trfJ7Gl9D4khrf7hrfHhpfe42vg8a3p8bXUePrpPHtpfHtrfHto/F11vi6aHxdNb59Nb5uGl93jW8/jW9/je8Aje9Aja+HZuBoHf7aKfzVKu5arekU2yx3AzTe3LNmC7SWwigga/2bL7v4tewwX8Ipdi33f3Iv3OLWsvLqKGLFrGWvxgkRX/+1rAJ+CW8914oHa3BVJNZvrYSG9yK5PmsltHtI7F73tby17EexR13X8ta6t0X7uq1lr6NPiA51WctbZ88Re9Z+rUwN/Ut0rO1aXo29UHSq3VpWLfqq2Ks2a1m16tFi75rXitWy34t9alrLrfXZITqvcy03qMM5JLqsay2vTmea6Lr2tRJ1PB/FvmtZKxnU+awV3fRrWetxbovuurWs9ZoBxH5rriXWc54Q+xeu5a/3bCIOWH0tp4g5RxyYt5YdFDUziR7gGwy5C/00pkclbq2DYJgdo4+MDwLWKj/egysJAz64Er9uTyAZqHD3rFyVYNC6Rt9+xjUG39jbz73CnB9SeNekV+Wabz8fUkn/9jOia+UUaS8g6Q8BF5dig/eqxN9W7hWR0+5AYK0PhWGOuyZPu0OJTrvDKgkDPozgtDuc+WmncB8e8dPuQBjZkhlNuCSn3RFhzo8sPO2O0Jx2Rxo47Q4EnnZHAEl/JFFx0V0fifkoXPfUvnRSbHw9w6aBflMRKQ16g6cFdNNSNe5NMCVxx90zxI3ef0ju9CHef1Zxl1D560PAnaPBU1vu/Dq6cs2pE13/A4D1PwaWBzdrcuo+Bly/3HVsJWHAxxJM3ccxn7oV7uMiPnUfACNb2taESzJ1Hx/mPFU4dR+vmbpTBqZuRNfKTd3HA0mfIiouuusjMaeZn/p9wqaBfvW+DzCHyMabYV4PxZcMwRQGxE3yGnefEDe6FyKn7gyQhz5zRaWw+gQ8zBKpgawBNbA/sP4BLA+ebVINBOD65a4TKgkDPoFADZzIXA0o3CdGXA3sDyNbIqsJl0QNnBTm/ORCNXCSRg2cbEANILpWTg2cBCT9yUTFRXd9JOZTmE+fftg00GrAB+YQ2Xj7Mq+H4ktfgimsL/H0ieBLXwI1AJy6RV8gD/sxVwMKaz8CHp5KpAZONaAG9gPW/zRYHsz+O92ngeuXu06vJAz4dAI1cAZzNaBwnxFxNbAfjGzm/p3uM8Ocn1WoBs7UqIGzDKgBRNfKqYEzgaQ/i6i46K6PxHw28+mzX9g00GqgHzCHyMbbn3k9FF/6E0xh/YmnTwRf+hOoAeDULfoDeTiAuRpQWAcQ8PAcIjVwjgE10B1Y/3NheXCMqoFzwfXLXedVEgZ8HoEaOJ+5GlC4z4+4GugOI1vGmBoYGOZ8UKEaGKhRA4MMqAFE18qpgYFA0g8iKi666yMxX8B8+hwQNg20GhgAzCGy8Q5mXg/Fl8EEU9hg4ukTwZfBBGoAOHWLwUAeDmGuBhTWIQQ8HEqkBoYaUAPdgPW/EJaHlNHvprgQXL/cdVElYcAXEaiBYczVgMI9LOJqoBuMbHFj300xPMz5iEI1MFyjBkYYUAOIrpVTA8OBpB9BVFx010divpj59DkkbBpoNTAEmENk4x3JvB6KLyMJpjAgbhI1MCTEje6FwKlbjATycBRzNaCwjiLg4SVEauASA2pgX2D9L4XlwU6aVAOXguuXuy6rJAz4MgI1cDlzNaBwXx5xNbAvjGy+pwmXRA2MDnM+plANjNaogTEG1ACia+XUwGgg6ccQFRfd9ZGYr2A+fY4KmwZaDYwC5hDZeMcyr4fiy1iCKWws8fSJ4MtYAjUAnLrFWCAPxzFXAwrrOAIeXkmkBq40oAa6Aut/FSwP6YRJNXAVuH656+pKwoCvJlAD1zBXAwr3NRFXA11hZHMTmnBJ1MC1Yc6vK1QD12rUwHUG1ACia+XUwLVA0l9HVFx010divp759DkubBpoNTAOmENk4x3PvB6KL+MJprDxxNMngi/jCdQAcOoW44E8nMBcDSisEwh4eAORGrjBgBroAqz/jbA8xIy+KXQjuH6566ZKwoBvIlADNzNXAwr3zRFXA11wktnYm0K3hDm/tVAN3KJRA7caUAOIrpVTA7cASX8rUXHRXR+J+Tbm0+eEsGmg1cAEYA6RjXci83oovkwkmMKAuEnUwIQQN7oXAqduMRHIw9uZqwGF9XYCHt5BpAbuMKAGOgPrfyfuzljMpBq4E1y/3HVXJWHAdxGogbuZqwGF++6Iq4HOuIExrQmXRA3cE+b83kI1cI9GDdxrQA0gulZODdwDJP29RMVFd30k5vuYT5+3h00DrQZuB+YQ2XgnMa+H4sskgilsEvH0ieDLJAI1AJy6xSQgDyczVwMK62QCHt5PpAbuN6AG9gHW/wHcWRg3qQYeANcvdz1YSRjwgwRq4CHmakDhfijiamAfnGROacIlUQMPhzl/pFANPKxRA48YUAOIrpVTAw8DSf8IUXHRXR+J+VHm0+fksGmg1cBkYA6RjXcK83oovkwhmMKmEE+fCL5MIVADwKlbTAHycCpzNaCwTiXg4WNEauAxA2pgb2D9H4flIWH0G0YfB9cvdz1RSRjwEwRq4EnmakDhfjLiamBvGNk8Y98w+lSY86cL1cBTGjXwtAE1gOhaOTXwFJD0TxMVF931kZifYT59Tg2bBloNTAXmENl4pzGvh+LLNIIpbBrx9IngyzQCNQCcusU0IA+nM1cDCut0Ah4+S6QGnjWgBvYC1v+5iKqB58D1y13PVxIG/DyBGniBuRpQuF+IuBrYK4Jq4MUw5y8VqoEXNWrgJQNqANG1cmrgRSDpX4qIGkBifpn59Dk9bBpoNTAdmENk453BvB6KLzMIprAZxNMngi8zCNQAcOoWM4A8fIW5GlBYXyHg4atEauBVA2qgE7D+r8HyEDP6nUKvgeuXu16vJAz4dQI18AZzNaBwvxFxNdAJRraUse8UejPM+VuFauBNjRp4y4AaQHStnBp4E0j6t4iKi+76SMxvM58+XwmbBloNvALMIbLxvsO8Hoov7xBMYe8QT58IvrxDoAaAU7d4B8jDd5mrAYX1XQIevkekBt4zoAY6Auv/Pk4N+CbVwPvg+uWuDyoJA/6AQA18yFwNKNwfRlwNdMQNjI4mXBI18FGY848L1cBHGjXwsQE1gOhaOTXwEZD0HxMVF931kZg/YT59vhs2DbQaeBeYQ2Tjncm8HoovMwmmsJnE0yeCLzMJ1ABw6hYzgTycxVwNKKyzCHj4KZEa+NSAGtgTWP/PYHmwjT4b+Axcv9z1eSVhwJ8TqIHZzNWAwj074mpgTxjZfGPPBr4Ic/5loRr4QqMGvjSgBhBdK6cGvgCS/kui4qK7PhLzV8ynz1lh00CrgVnAHCIb7xzm9VB8mUMwhc0hnj4RfJlDoAaAU7eYA+ThXOZqQGGdS8DDeURqYJ4BNdABWP+vYXlwHJNq4Gtw/XLX/ErCgOcTqIFvmKsBhfubiKuBDjCyZXxNuCRq4Nsw598VqoFvNWrgOwNqANG1cmrgWyDpvyMqLrrrIzF/z3z6nBs2DbQamAvMIbLxLmBeD8WXBQRT2ALi6RPBlwUEagA4dYsFQB4uZK4GFNaFBDz8gUgN/GBADbQH1v9HWB6yRp8N/AiuX+5aVEkY8CICNfATczWgcP8UcTXQHkY2YezZwM9hzn8pVAM/a9TALwbUAKJr5dTAz0DS/0JUXHTXR2L+lfn0uTBsGmg1sBCYQ2TjXcy8HooviwmmsMXE0yeCL4sJ1ABw6haLgTxcwlwNKKxLCHj4G5Ea+M2AGtgDWP/fYXlwjaqB38H1y11LKwkDXkqgBpYxVwMK97KIq4E9YGRLG1MDf4Q5/7NQDfyhUQN/GlADiK6VUwN/AEn/J1Fx0V0fifkv5tPnkrBpoNXAEmAOkY33b+b1UHz5m2AK+5t4+kTw5W8CNQCcusXfQB4uZ64GFNblBDxcQaQGVhhQA7sD6/8PLA9e0qQa+Adcv/+5GhEGrBZHr1uvEW81oHDXa7Qqv6B1jaqB3WFkS3iacEnUQP0w5w0alaw++ddvtKYaUH+IWg3sDlQD9YGkb9CIprjoro/EXNoIV9eSEvyGWx42DbQaWA48OZGNt4x5PRRfyhrhpzAgbhI1oPhS1gjfC4FTtygD8rCcuB5WcddKrOUEPKxohJ0mc+dqRSN6NZAE9rSGsDykjaqBhuD65a7KRoQBVxKogUbM1YDC3SjiaiCJe4BmTA1sEOa8caEa2ECjBhobUANJoBrYAEj6xo1oiovu+kjMTZhPn+Vh00CrgXJgDpGNtynzeii+NCWYwpoyVwPlIW50LwRO3aIpkIdVzNWAwlpFwMNqIjVQbUANJIBqoBksD55lUg00A9cvdzVvRBhwcwI1sCFzNaBwbxhxNZCAqYGkpQmXRA1sFOZ840I1sJFGDWxsQA0kgGpgIyDpN25EU1x010di3oT59FkVNg20GqgC5hDZeFswr4fiSwuCKawF8fSJ4EsLAjUAnLpFCyAPN2WuBhTWTQl4uBmRGtjMgBrwgGpgc9xZaPTfIt4cXL/c1bIRYcAtCdTAFszVgMK9RcTVgAdTA3Fj/xbxlmHOtypUA1tq1MBWBtSAB1QDWwJJv1UjmuKiuz4S89bMp89Nw6aBVgObAnOIbLytmNdD8aUVwRTWinj6RPClFYEaAE7dohWQh62ZqwGFtTUBD7chUgPbGFADcaAa2Bb3nNzoN4xuC65f7mrTiDDgNgRqYDvmakDh3i7iaiCO+0FTY98wun2Y8x0K1cD2GjWwgwE1EAeqge2BpN+hEU1x0V0fiXlH5tNn67BpoNVAa2AOkY13J+b1UHzZiWAK24l4+kTwZScCNQCcusVOQB7uzFwNKKw7E/BwFyI1sIsBNRADqoFdYXnIGn02sCu4frmrbSPCgNsSqIF2zNWAwt0u4moghvsSSmPPBnYLc24VqoHdNGrAMqAGYkA1sBuQ9FYjmuKiuz4Ss2A+fe4cNg20GtgZmENk47WZ10PxxSaYwmzi6RPBF5tADQCnbmEDeegwVwMKq0PAQ5dIDbgG1IALVAMxWB6CmEk1EAPXL3fFGxEGHCdQAx5zNaBwexFXAy7uKyDSmnBJ1EAizHmyUA0kNGogaUANuEA1kACSPtmIprjoro/EvDvz6dMJmwZaDTjAHCIb7x7M66H4sgfBFLYH8fSJ4MseBGoAOHWLPYA8bM9cDSis7Ql42IFIDXQwoAYcoBrYE5aHpNE3hfYE1y93dWxEGHBHAjXQibkaWFmoiKsBB/dzA8beFNorzPnehWpgL40a2NuAGnCAamAvIOn3bkRTXHTXR2Leh/n02T5sGmg10B6YQ2Tj7cy8HoovnQmmsM7E0yeCL50J1ABw6hadgTzswlwNKKxdCHjYlUgNdDWgBmygGtgX92zA6HcK7QuuX+7q1ogw4G4EaqA7czWgcHePuBqwcW8KGftOof3CnO9fqAb206iB/Q2oARuoBvYDkn7/RjTFRXd9JOYDmE+fXcKmgVYDXYA5RDbeA5nXQ/HlQIIp7EDi6RPBlwMJ1ABw6hYHAnnYg7kaUFh7EPDwICI1cFAYq8nJWBD9S1wHNyIM+GCCybgn88lY4e5JMBnrYkU0BhVrfXAOgA0HWm+TG9Yi2rC9GhEG3Itgwx7CfMMq3IdEaMMewnzDouudu9DKazfg/bZDgfkz2aQObUTTpA5rRBjwYQRN6nDmTUrhPtxQk7KKu1Y2k8MJZH4PYI2Q9T6CucxXje4IAnl1JHNZqTAfSYD7KCJZeZTmdi06J9Q1Q+zxIwhuzSAHnCOAvaN3BPZQb4I91IdoD/XRPKhF56Q3WJGWaWJVvz4Y/uZo+fcdI+1YacdJO15aSlpaWkaaLy0rLZB2grQTpZ0k7WRpp0jrK62ftFOlnSbtdGlnSDtT2lnSzpbWX9oAaedIO1faedLOlzZQ2iBpF0gbLG2ItKHSLpR2kbRh0oZLGyHtYmkjpY2Sdom0S6VdJu1yaaOljZF2hbSx0sZJu1LaVdKulnaNtGulXSftemnjpU2QdoO0G6XdJO1mabdIu1XabdImSrtd2h3S7pR2l7S7pd0j7V5p90mbJG2ytPulPSDtQWkPSXtY2iPSHpU2RdpUaY9Je1zaE9KelPaUtKelPSNtmrTp0p6V9py056W9IO1FaS9Je1naDGmvSHtV2mvSXpf2hrQ3pb0l7W1p70h7V9p70t6X9oG0D6V9JO1jaZ9ImyltlrRPpX0m7XNps6V9Ie1LaV9JmyNtrrR50r6WNl/aN9K+lfadtO+lLZC2UNoP0n6UtkjaT9J+lvaLtF+lLZa2RNpv0n6XtlTaMml/SPtT2l/S/pa2XNoKaf9IK9lA8lNafWkNpJVKK5NWLq1CWkNpldIaSdtAWmNpTaQ1lVYlrVpaM2nNpW0obSNpG0vbRFoLaZtK20za5tJaSttC2pbStpK2tbRW0lpL20battLaSNtO2vbSdpC2o7SdpO0sbRdpu0prK62dtN2kWdKENFuaI82VFpMWl+ZJS0hLSttd2h7S2kvrIG1PaR2ldZK2l7S9pe0jrbO0LtK6SttXWjdp3aXtJ21/aQdIO1BaD2kHSTtYWk9pvaQdIu1QaYdJO1zaEdKOlHaUtN7S+kg7Wtox0o6Vdpy046WlpKWlZaT50rLSAmknSDtR2knSTpZ2irS+0vpJO1XaadJOl3aGtDOlnSXtbGn9pQ2Qdo60c6WdJ+18aQOlDZJ2gbTB0oZIGyrtQmkXSRsmbbi0EdIuljZS2ihpl0i7VNpl0i6XNlraGGlXSBsrbZy0K6VdJe1qaddIu1baddKulzZe2gRpN0i7UdpN0m6Wdou0W6XdJm2itNul3SHtTml3Sbtb2j3S7pV2n7RJ0iZLu1/aA9IelPaQtIelPSLtUWlTpE2V9pi0x6U9Ie1JaU9Je1raM9KmSZsu7Vlpz0l7XtoL0l6U9pK0l6XNkPaKtFelvSbtdWlvSHtT2lvS3pb2jrR3pb0n7X1pH0j7UNpH0j6W9om0mdJmSftU2mfSPpc2W9oX0r6U9pW0OdLmSpsn7Wtp86V9I+1bad9J+17aAmkLpf0g7Udpi6T9JO1nab9I+1XaYmlLpP0m7XdpS6Utk/aHtD+l/SXtb2nLpa2Q9o809YJGPWn1pTWQViqtTFq5tAppDaVVSmvUuGT19xHUQdawwHeMxnesxnecxne8xpfS+NIaX0bj8zW+rMYXaHwnaHwnanwnaXwna3ynaHx9Nb5+Gt+pGt9pGt/pGt8ZGt+ZGt9ZGt/ZGl9/jW+AxneOxneuxneexne+xjdQ4xuk8V2g8Q3W+IZofEM1vgs1vos0vmEa33CNb4TGd7HGN1LjG6XxXaLxXarxXabxXa7xjdb4xmh8V2h8YzW+cRrflRrfVRrf1RrfNRrftRrfdRrf9RrfeI1vgsZ3g8Z3o8Z3k8Z3s8Z3i8Z3q8Z3m8Y3UeO7XeO7Q+O7U+O7S+O7W+O7R+O7V+O7T+ObpPFN1vju1/ge0Pge1Pge0vge1vge0fge1fimaHxTNb7HNL7HNb4nNL4nNb6nNL6nNb5nNL5pGt90je9Zje85je95je8Fje9Fje8lje9ljW+GxveKxveqxveaxve6xveGxvemxveWxve2xveOxveuxveexve+xveBxvehxveRxvexxveJxjdT45ul8X2q8X2m8X2u8c3W+L7Q+L7U+L7S+OZofHM1vnka39ca33yN7xuN71uN7zuN73uNb4HGt1Dj+0Hj+1HjW6Tx/aTx/azx/aLx/arxLdb4lmh8v2l8v2t8SzW+ZRrfHxrfnxrfXxrf3xrfco1vhcb3j8anboQU+uppfPU1vgYaX6nGV6bxlWt8FRpfQ42vUuNrpPFtoPE11viaaHxNNb4qja9a42um8TXX+DbU+DbS+DbW+DbR+FpofJtqfJtpfJtrfC01vi00vi01vq00vq01vlYaX2uNbxuNb1uNr43Gt53Gt73Gt4PGt6PGt5PGt7PGt4vGt6vG11bja6fx7abxWRqf0Phsjc/R+FyNL6bxxTU+T+NLaHxJjW93jW8Pja+9xtdB49tT4+uo8XXS+PbS+PbW+PbR+DprfF00vq4a374aXzeNr7vGt5/Gt7/Gd4DGd6DG10PjO0jjO1jj66nx9dL4DtH4DtX4DtP4Dtf4jtD4jtT4jtL4emt8fTS+ozW+YzS+YzW+4zS+4zW+lMaX1vgyGp+v8WU1vkDjO0HjO1HjO0njO1njO0Xj66vx9dP4TtX4TtP4Ttf4ztD4ztT4ztL4ztb4+mt8AzS+czS+czW+8zS+8zW+gRrfII3vAo1vsMY3ROMbqvFdqPFdpPEN0/iGa3wjNL6LNb6RGt8oje8Sje9Sje8yje9yjW+0xjdG47tC4xur8Y3T+K7U+K7S+K7W+K7R+K7V+K7T+K7X+MZrfBM0vhs0vhs1vps0vps1vls0vls1vts0voka3+0a3x0a350a310a390a3z0a370a330a3ySNb7LGd7/G94DG96DG95DG97DG94jG96jGN0Xjm6rxPabxPa7xPaHxPanxPaXxPa3xPaPxTdP4pmt8z2p8z2l8z2t8L2h8L2p8L2l8L2t8MzS+VzS+VzW+1zS+1zW+NzS+NzW+tzS+tzW+dzS+dzW+9zS+9zW+DzS+DzW+jzS+jzW+TzS+mRrfLI3vU43vM43vc41vtsb3hcb3pcb3lcY3R+Obq/HN0/i+1vjma3zfaHzfanzfaXzfa3wLNL6FGt8PGt+PGt8ije8nje9nje8Xje9XjW+xxrdE4/tN4/td41uq8S3T+P7Q+P7U+P7S+P7W+JZrfCs0vn80PvUiRKGvnsZXX+NroPGVanxlGl+5xleh8TXU+Co1vkahT72MWF6y6qqX93mDxuEfqFfwHwr/cKfwV6u4S6i/ELTWat+g0bjxv782aVwAoAEhgGJfE21c+7UyNawlmjTGvnrbMC93yPytWPd6diYQTizrxax4yo35ccf2bc/y3VggZCLspCvTEGTchJ+wncD27MwKbHwrsdfPI7+q0Yrwc5Pwc1P5a5W06sb/bh5TX21T3Rj7WnnhBVrbzs9Fs3BDNi98bUz9h+UFAaA3azVgs/77NTZB0Ay48ZsTFRL9A6RIzBvmrSUSjm17jvpzCd8Sri/bm237adfKWKmMnU26Ihm4tutk/ExarpkSgRWkMskg8W9cJn+YckNwY81dGzUmDFgtjl53YyAZqHBvnHf8g9Yl+YGo5mGs6HU3AZM116zVuvmnIrJuudETnYsWjWk5YBV3rcTdgoADm+IOPRLcKr5NCXBvxrzeCvNmBLg3Z45bxbc5Ae6WzHGr+FoS4N6COW4V3xYEuLdkjlvFtyUB7q2Y41bxbUWAe2vmuFV8WxPgbhWBc6wVAe7WzHGr+FoT4N4mAvXehgD3tsxxq/i2JcDdhjluFV8bAtzbMcet4tuOAPf2Edjf2xPg3oE5bhXfDgS4d2SOW8W3IwHunZjjVvHtRIB7Z+a4VXw7E+DeJQJ9bRcC3Lsyx63i25UAd1vmuFV8bQlwt2OOW8XXjgD3bhHY37sR4LaY41bxWQS4RQTqLQhw28xxq/hsAtxOBOrtEOB2meNW8bkEuGPMcav4YgS448xxq/jiBLi9COxvjwB3gjluFV+CAHcyAvVOEuDenTluFd/uBLj3iEC99yDA3Z45bhVfewLcHZjjVvF1IMC9J3PcKr49CXB3jMD+7kiAuxNz3CvjI8C9F3PcKr69CHDvHQGe702Aex/muFV8+xDg7hyBencmwN2FOW4VXxcC3F0jUO+uBLj3ZY5bxbcvAe5uzHGr+LoR4O7OHLeKrzsB7v2Y41bx7UeAe3/muFV8+xPgPiAC/fwAAtwHMset4juQAHcP5rhVfD0IcB/EHLeK7yAC3AdHYH8fTIC7J3PcKr6eBLh7RaDevQhwH8Ict4rvEALchzLHreI7lAD3Ycxxq/gOI8B9OHPcKr7DCXAfEYG+dgQB7iOZ41bxHUmA+6gI1PsoAty9meNW8fUmwN2HOW4VXx8C3EdHgOdHE+A+hjluFd8xBLiPZY5bxXcsAe7jmONW8R1HgPt45rhVfMcT4E4xx63iSxHgTjPHreJLE+DOMMet4ssQ4PaZ41bx+QS4sxGYW7IEuAPmuFV8AQHuE5jjVvGdQID7xAjw/EQC3Ccxx63iO4kA98nMcav4TibAfQpz3Cq+Uwhw943A/u5LgLsfc9wqvn4EuE+NQL1PJcB9GnPcKr7TCHCfzhy3iu90AtxnRIDnZxDgPpM5bhXfmQS4z4pAvc8iwH02c9wqvrMJcPePQL37E+AewBy3im8AAe5zmONW8Z1DgPtc5rhVfOcS4D6POW4V33kEuM9njlvFdz4B7oER6OcDCXAPYo5bxTeIAPcFzHGr+C4gwD04AjwfTIB7CHPcKr4hBLiHMset4htKgPtC5rhVfBcS4L6IOW4V30UEuIcxx63iG0aAezhz3Cq+4QS4R0TgHBtBgPti5rhVfBcT4B7JHLeKbyQB7lHMcav4RhHgvoQ5bhXfJQS4L41AX7uUAPdlzHGr+C4jwH05c9wqvssJcI+OAM9HE+Aewxy3im8MAe4rIlDvKwhwj2WOW8U3lgD3OOa4VXzjCHBfGQGeX0mA+yrmuFV8VxHgvjoC9b6aAPc1zHGr+K4hwH0tc9wqvmsJcF8XAZ5fR4D7eua4VXzXE+AeH4F6jyfAPYE5bhXfBALcNzDHreK7gQD3jRHg+Y0EuG9ijlvFdxMB7puZ41bx3UyA+xbmuFV8txDgvpU5bhXfrQS4b2OOW8V3GwHuicxxq/gmEuC+nTluFd/tBLjviMD5fQcB7juZ41bx3UmA+64I1PsuAtx3M8et4rubAPc9zHGr+O4hwH0vc9wqvnsJcN/HHLeK7z4C3JOY41bxTSLAPZk5bhXfZALc9zPHreK7nwD3AxE4vx8gwP0gc9wqvgcJcD/EHLeK7yEC3A9HgOcPE+B+hDluFd8jBLgfZY5bxfcoAe4pEeD5FALcU5njVvFNJcD9WATq/RgB7seZ41bxPU6A+wnmuFV8TxDgfpI5bhXfkwS4n2KOW8X3FAHup5njVvE9TYD7mQj082cIcE9jjlvFN40A93TmuFV80wlwPxsBnj9LgPs55rhVfM8R4H4+AvV+ngD3C8xxq/heIMD9YgTq/SIB7peY41bxvUSA+2XmuFV8LxPgnhEBns8gwP0Kc9wqvlcIcL/KHLeK71UC3K8xx63ie40A9+sR2N+vE+B+gzluFd8bBLjfZI5bxfcmAe63IsDztwhwv80ct4rvbQLc7zDHreJ7hwD3u8xxq/jeJcD9HnPcKr73CHC/zxy3iu99AtwfMMet4vuAAPeHETjHPiTA/RFz3Cq+jwhwfxyBen9MgPsT5rhVfJ8Q4J7JHLeKbyYB7lnMcav4ZhHg/jQC+/tTAtyfMcet4vuMAPfnEaj35wS4ZzPHreKbTYD7iwjU+wsC3F8yx63i+5IA91cRqPdXBLjnMMet4ptDgHtuBOo9lwD3POa4VXzzCHB/zRy3iu9rAtzzI8Dz+QS4v2GOW8X3DQHub5njVvF9S4D7O+a4VXzfEeD+njluFd/3BLgXMMet4ltAgHthBPr5QgLcPzDHreL7gQD3j8xxq/h+JMC9iDluFd8iAtw/RWB//0SA+2fmuFV8PxPg/oU5bhXfLwS4f2WOW8X3KwHuxcxxq/gWE+Bewhy3im8JAe7fItDPfyPA/Ttz3Cq+3wlwL41AvZcS4F7GHLeKbxkB7j8iUO8/CHD/yRy3iu9PAtx/RaDefxHg/ps5bhXf3wS4lzPHreJbToB7BXPcKr4VBLj/icD+/ocAd0kT3rhVfMrQuOsxx63qXY8Ad33muFV89QlwN2COW8XXgAB3aQR4XkqAu4w5bhVfGQHu8gjUu5wAdwVz3Cq+CgLcDSNQ74YEuCuZ41bxVRLgbsQct4qvEQHuDZjjVvFtQIC7cQT2d2MC3E2Y41bxNSHA3ZQ5bhVfUwLcVRHgeRUB7mrmuFV81QS4m0Wg3s0IcDdnjlvF15wA94YRqPeGBLg3Yo5bxbcRAe6NmeNW8W1MgHsT5rhVfJsQ4G7BHLeKrwUB7k259zUZ36YEuDeLQD/fjAD35sxxq/g2J8DdkjluFV9LAtxbMMet4tuCAPeWEdjfWxLg3oo5bhXfVgS4t2aOW8W3NQHuVsxxq/haEeBuzRy3iq81Ae5tItDXtiHAvS1z3Cq+bQlwt2GOW8XXhgD3dhHg+XYEuLdnjlvFtz0B7h2Y41bx7UCAe0fmuFV8OxLg3ok5bhXfTgS4d2aOW8W3MwHuXSLQz3chwL0rc9wqvl0JcLeNQL3bEuBuxxy3iq8dAe7dIlDv3QhwW8xxq/gsAtwiAvUWBLht5rhVfDYBbicC9XYIcLvMcav4XALcMea4VXwxAtxx5rhVfHEC3B5z3Co+jwB3gjluFV+CAHcyAv08SYB7d+a4VXy7E+DeIwL13oMAd3vmuFV87Qlwd4hAvTsQ4N6TOW4V354EuDtGoN4dCXB3Yo57ZXwEuPeKQL33IsC9N3PcKr69CXDvwxy3im8fAtydI8DzzgS4uzDHreLrQoC7K3PcKr6uBLj3jQDP9yXA3Y05bhVfNwLc3SNQ7+4EuPdjjlvFtx8B7v2Z41bx7U+A+wDmuFV8BxDgPjAC+/tAAtw9mONW8fUgwH0Qc9wqvoMIcB/MHLeK72AC3D0jsL97EuDuxRy3iq8XAe5DIlDvQwhwH8oct4rvUALch0Wg3ocR4D6cOW4V3+EEuI+IQL2PIMB9JHPcKr4jCXAfFYF6H0WAuzdz3Cq+3gS4+0Sg3n0IcB/NHLeK72gC3Mcwx63iO4YA97HMcav4jiXAfRxz3Cq+4whwH88ct4rveALcKea4VXwpAtxp5rhVfGkC3BnmuFV8GQLcPnPcKj6fAHeWOW4VX5YAd8Act4ovIMB9AnPcKr4TCHCfyBy3iu9EAtwnMcet4juJAPfJzHGr+E4mwH0Kc9wqvlMIcPdljlvF15cAdz/muFV8/Qhwn8oct4rvVALcpzHHreI7jQD36cxxq/hOJ8B9BnPcKr4zCHCfyRy3iu9MAtxnMcet4juLAPfZzHGr+M4mwN2fGDcivv4EuAfgcIvSkpX/9OP/xJh/oXkAjNvKj/ecJoQBn9MEv+65TXBkoMJ9bpNVCQatS/ZQkuJh7Hng5pK76hfij9sJ103YTjrl2SLlpr14kPQzqcBOpG0/ZWUTVtz37JSTSCVckc6kElbaT9kxz0+52biwkVw6P28t+TdmrGRgpWKJlJeVC1lZS35IJ7JB3E6lM65l+0KIrCv/n5313WTaj4t0XP7tsbSQ/ztdre10Jhn3PPm/zPhp1xWxpJ3y08ITCrwbJDwnLdKODNXxYoGdDVwrKZMhYQYyBU46e3TIyzVy6CZTWbls2ok72bQMNrBj8VRS/q8y8awTd9MqvzHHDuKuI/NmW46bCjJuLGEl7UTGdY8G5nAg88NYxTeQYL8MYo5bxTeIAPcFzHGr+C4gwD2YOW4V32AC3EOY41bxDSHAPZQ5bhXfUALcFzLHreK7kAD3Rcxxq/guIsA9jDluFd8wAtzDmeNW8Q0nwD2COW4V3wgC3Bczx63iu5gA90jmuFV8Iwlwj2KOW8U3igD3Jcxxq/guIcB9KXPcKr5LCXBfxhy3iu8yAtyXM8et4rucAPdo5rhVfKMJcI9hjlvFN4YA9xXMcav4riDAPZY5bhXfWALc45jjVvGNI8B9JXPcKr4rCXBfxfyhrorvKgLcV0f0oS4w7tUe6l7ThDDgawge6l7L/KGuwn1tk1UJBq1LEqt6+Ho+wSa7ztBD3WIfdCK5dH0T3INSXa1FEGQCz/eygWPbGc9Le04mFktnMvKBdTotpMtPJGUCpNfy5N9ie/GEk3AyGSst4n6w8oHptZqHusKKe7F4MhXIv0DmxLaEcLJBIPHL9Xw3Fbdi6Zidjjt+PBFIWCIjM+DHPDtws0lb2AOBORzP/DBW8Y0n2C8TmONW8U0gwH0Dc9wqvhsIcN/IHLeK70YC3Dcxx63iu4kA983Mcav4bibAfQtz3Cq+Wwhw38oct4rvVgLctzHHreK7jQD3ROa4VXwTCXDfzhy3iu92Atx3MMet4ruDAPedzHGr+O4kwH0Xc9wqvrsIcN/NHLeK724C3Pcwx63iu4cA973Mcav47iXAfR9z3Cq++whwT2KOW8U3iQD3ZOa4VXyTCXDfzxy3iu9+AtwPMMet4nuAAPeDzHGr+B4kwP0Q84ebKr6HCHA/HNGHm8C4V3u4+UgTwoAfIXi4+Sjzh5sK96NNViUYtC5JrOoh5PUEm2yKoYebxT7wQ3JpahPcA0NtrWOBFQRpL5XNZGNZJyXi6Zhrx9xUIp5104lEyrd8R/6JbDqwk1nbjnlC/kWxmOMlvEwmmxgf8nKNB8Qpz3Gz6bRjxx1XZIOUSKYtJy78pHCsjO96aTue9txEQj6Y9e14NpuRzkA+s014MiMiNR6Yw8eYH8YqvscI9svjzHGr+B4nwP0Ec9wqvicIcD/JHLeK70kC3E8xx63ie4oA99PMcav4nibA/Qxz3Cq+ZwhwT2OOW8U3jQD3dOa4VXzTCXA/yxy3iu9ZAtzPMcet4nuOAPfzzHGr+J4nwP0Cc9wqvhcIcL/IHLeK70UC3C8xx63ie4kA98vMcav4XibAPYM5bhXfDALcrzDHreJ7hQD3q8xxq/heJcD9GnPcKr7XCHC/zhy3iu91AtxvMMet4nuDAPebzB/yqfjeJMD9VkQf8gHjXu0h39tNCAN+m+Ah3zvMH/Ip3O80WZVg0LoksaqHcVMJNtm7hh7yFfvgC8ml95rgHpzpai2fVLopO5WOyT/qBjHPkc81hfwrrEA+zlTBOH7MTyUtN+3E3WSQtr10xnLSlvr7gnTKeyzk5Ro5zCSDVDrjJdyYH7MkzJidtVOW44mMTIgIhBvLWn46YWcTEk4yLjJ2LBBZRz4yTasEPQbM4fvMD2MV3/sE++UD5rhVfB8Q4P6QOW4V34cEuD9ijlvF9xEB7o+Z41bxfUyA+xPmuFV8nxDgnskct4pvJgHuWcxxq/hmEeD+lDluFd+nBLg/Y45bxfcZAe7PmeNW8X1OgHs2c9wqvtkEuL9gjlvF9wUB7i+Z41bxfUmA+yvmuFV8XxHgnsMct4pvDgHuucxxq/jmEuCexxy3im8eAe6vmeNW8X1NgHs+c9wqvvkEuL9hjlvF9w0B7m+ZP+xS8X1LgPu7iD7sAsa92sOu75sQBvw9wcOuBcwfdincC5qsSjBoXZJY1UOp9wg22UJDD7uKfQCE5NIPTXAPkHS1trMxJ2ZZQSLuZXz5lMxVD83ibiwTi/lpz3Z8IZ+t2VYiFvfTvueJRDbppq2ETIwXOPIJ3/shL9d42GULK8jGnVgq7WY815dP4dKZwLPSGVs+PXSSsXjCklFbtu37yaQI5ONE341Z8VRa+mNJ/31gDn9kfhir+H4k2C+LmONW8S0iwP0Tc9wqvp8IcP/MHLeK72cC3L8wx63i+4UA96/Mcav4fiXAvZg5bhXfYgLcS5jjVvEtIcD9G3PcKr7fCHD/zhy3iu93AtxLmeNW8S0lwL2MOW4V3zIC3H8wx63i+4MA95/Mcav4/iTA/Rdz3Cq+vwhw/80ct4rvbwLcy5njVvEtJ8C9gjluFd8KAtz/MMet4vuHAHdJU964VXzK0LjrEeNGxFePAHd9HG6jD32Aca/20KdBU8KAGzTFr1valPdDH4W7tOmqBIPWJYlVPZz5gaCploGbS+5a46FPkQ9CkFwqb4p7kKKrtQwiLQI7YwdOIiOjyqZSgRcPgiCWsvy46zkZkcwkXUc+VEolXD+WlH+x8Bzf9bPxdDrhqocVCm9hDkXKT9qBG5eLJ/xkSiYyZWWyEnc6ayVsEctmREoElkx0MptNp+WjsrjvZ2PxlC2SMo/ZH4EPfSqYH8YqvgqCQ6khc9wqvoYEuCuZ41bxVRLgbsQct4qvEQHuDZjjVvFtQIC7MXPcKr7GBLibMMet4mtCgLspc9wqvqYEuKuY41bxVRHgrmaOW8VXTYC7GXPcKr5mBLibM8et4mtOgHtD5rhVfBsS4N6IOW4V30YEuDdmjlvFtzEB7k2Y41bxbUKAuwVz3Cq+FgS4N2WOW8W3KQHuzZjjVvFtRoB7c+YPP1R8mxPgbhnRhx/AuFd7+LFFU8KAtyB4+LEl84cfCveWTVclGLQuSazqIUU5wSbbytDDj2IfCCC5tHVT3AMFXa2F7cUzbmA7jhXLOJbEaWcdK+UF6WwilvatTOBks7ZvpYJYIBwZgBBJz7f8wJGRpPygIuTlGjn0s34imbBSWTvt+yLl2raM0JKLJhNBJpGJJYKYFfO8TCqWimWyTtrOJLxEIhZkfCsds50KYA5bMT+MVXytCPZLa+a4VXytCXBvwxy3im8bAtzbMset4tuWAHcb5rhVfG0IcG/HHLeKbzsC3Nszx63i254A9w7Mcav4diDAvSNz3Cq+HQlw78Qct4pvJwLcOzPHreLbmQD3Lsxxq/h2IcC9K3PcKr5dCXC3ZY5bxdeWAHc75rhVfO0IcO/GHLeKbzcC3BZz3Co+iwC3YI5bxScIcNvMHwKo+GwC3E5EHwIA417tIYDblDBgl+AhQIz5QwCFO9Z0VYJB65LEqm7Wb02wyeKmHgIUeWMcySWvKe7GurbWqZh8buAL37PtTJCJJ9W/bpMKMp568BGLJb20DFH+LUk/k3HSgfyzSfkfs6lkJiMXT6VbhbwszKEdF3bMTwkrZWV9K+7YXsxKpNIpK+4LmUwnlYmLuHT76azvuMkg5kg0fioZcxzHS8S8VsAcJpgfxiq+BMF+STLHreJLEuDenTluFd/uBLj3YI5bxbcHAe72zHGr+NoT4O7AHLeKrwMB7j2Z41bx7UmAuyNz3Cq+jgS4OzHHvTI+Atx7Mcet4tuLAPfezHGr+PYmwL0Pc9wqvn0IcHdmjlvF15kAdxfmuFV8XQhwd2WOW8XXlQD3vsxxq/j2JcDdjTluFV83Atzdmd8MV/F1J8C9X0RvhgPjXu1m+P5NCQPen+Bm+AHMb4Yr3Ac0XZVg0Loksaqb1h7BJjvQ0M3wYm8QI7nUoynuBrO21lnLiXtuVt48j/kx34vHM37alnf/U4F8DOB6gZcVSfkcIojHbTsZi2e9jJvMCDeRzVhJx40lQl6ucTPcjlsStptw3bS8OW/HRMJOOjEnGU9k3aSIyecMdizhioQT81zPkTfvhS8zG8SFE8QzaT8BzOFBzA9jFd9BBPvlYOa4VXwHE+DuyRy3iq8nAe5ezHGr+HoR4D6EOW4V3yEEuA9ljlvFdygB7sOY41bxHUaA+3DmuFV8hxPgPoI5bhXfEQS4j2SOW8V3JAHuo5jjVvEdRYC7N3PcKr7eBLj7MMet4utDgPto5rhVfEcT4D6GOW4V3zEEuI9ljlvFdywB7uOY3xRW8R1HgPv4iN4UBsa92k3hVFPCgFMEN4XTzG8KK9zppqsSDFqXJFZ187YHwSbLmLopXOSNUiSX/Ka4G626Wot4Ip4UGScVT7kxuVAs42Yz2XQqk854QcoK4nbGiQVuMi7/Q1Lea5b3wNNOLCvDcGwnsO2DQl4W5lAkfV8GGTiphO/GMyKWsYQXD9LpWDoZy7p+JuZZiUQQyNBcX8ibwG4mng5SMc/P+BlZgIOAOcwyP4xVfFmC/RIwx63iCwhwn8Act4rvBALcJzLHreI7kQD3Scxxq/hOIsB9MnPcKr6TCXCfwhy3iu8UAtx9meNW8fUlwN2POW4VXz8C3Kcyx63iO5UA92nMcav4TiPAfTpz3Cq+0wlwn8Ect4rvDALcZzLHreI7kwD3Wcxxq/jOIsB9NvOboyq+swlw94/ozVFg3KvdHB3QlDDgAQQ3R89hfnNU4T4nIjdH1U1Mn2CTnWvo5mixNwyRXDqvKe6Go67WQi5kWwnPScbkH7Tj8n8ZpBPZIJnybHnzNyUhWUE6GdiOxBEkHJGRf1RCtoVnpTzhZ0NerpHDdJCwfZk0z/fcpCUzJmPLZOSNZCsbF/Imc0zY2UxK3lqOxWxhZW0vnpX5SGSyiSCWyMaywByez/wwVvGdT7BfBjLHreIbSIB7EHPcKr5BBLgvYI5bxXcBAe7BzHGr+AYT4B7CHLeKbwgB7qHMcav4hhLgvpA5bhXfhQS4L2KOW8V3EQHuYcxxq/iGEeAezhy3im84Ae4RzHGr+EYQ4L6YOW4V38UEuEcyx63iG0mAexTzm4QqvlEEuC+J6E1CYNyr3SS8tClhwJcS3CS8jPlNQoX7sojcJFQ3884j2GSXm7pJWOSNMySXRjfF3XjT1doOvFhSrpjwUkHazroxJx1LxIOEvBcaeOlYVoh4OpGw5aIJN7CF49leEE8GQsTkn8y46fNDXtZfg0PZbNrOpGPJhMj6bizuJlPpbNrPWgnhZ+SNzHgmEbfkTUbXcb2s5/sibifSKdtPpTKuk/bOB+ZwDPPDWMU3hmC/XMEct4rvCgLcY5njVvGNJcA9jjluFd84AtxXMset4ruSAPdVzHGr+K4iwH01c9wqvqsJcF/DHLeK7xoC3Ncyx63iu5YA93XMcav4riPAfT1z3Cq+6wlwj2eOW8U3ngD3BOa4VXwTCHDfwPxmmYrvBgLcN0b0Zhkw7tVult3UlDDgmwhult3M/GaZwn1zRG6WqZtaowk22S2GbpYVewMJyaVbm+JuQGlr7biJVMJyEl42yDjJRDruq3cEM8JLxuxMwrfjVjKdFWknkXJ8eQMxmUr5yUwynhJ+UjiWNybk5Ro59EU6FY9LKK6MLSks4cn/C1LxZDZjp33Lsu2U/D/flVlLWVYytfILLQPfzdrxbCZIjwHm8Dbmh7GK7zaC/TKROW4V30QC3Lczx63iu50A9x3Mcav47iDAfSdz3Cq+Owlw38Uct4rvLgLcdzPHreK7mwD3Pcxxq/juIcB9L3PcKr57CXDfxxy3iu8+AtyTmONW8U0iwD2ZOW4V32QC3Pczv2mk4rufAPcDEb1pBIx7tZtGDzYlDPhBgptGDzG/aaRwPxSRm0bq5s6tBJvsYUM3jYq9kYLk0iNNcTditLW2M36QsIVwYl46nUokk5YInCDrOSlX3jJzPQkylYx7lrxTlYmpj44XOL5IZBNOUnj+bSEv17xplIzH4jGR8f1k1k0IEbjZmEgnLN/PpGR2066MLpsVnmtbqVQ2npJ3tiyRsePCy8SzidhtwBw+yvwwVvE9SrBfpjDHreKbQoB7KnPcKr6pBLgfY45bxfcYAe7HmeNW8T1OgPsJ5rhVfE8Q4H6SOW4V35MEuJ9ijlvF9xQB7qeZ41bxPU2A+xnmuFV8zxDgnsYct4pvGgHu6cxvnqj4phPgfjaiN0+Aca928+S5poQBP0dw8+R55jdPFO7nI3LzRN3keIRgk71g6uZJkTcUkFx6sSnuhoSu1nYQuCnHTtqJjBeIjJdOOHYslc1aiUw2EFkRiwkvcOOxbFr+IiEESceXd2biMddV/ySu/WjIyzVyaMWDVNqVeONJGYptqTeBUpmEl0jb8biX9h2RDpysncg68naPF3dTKfWH/WQ67cv/ttoNj2Jz+BLzw1jF9xLBfnmZOW4V38sEuGcwx63im0GA+xXmuFV8rxDgfpU5bhXfqwS4X2OOW8X3GgHu15njVvG9ToD7Dea4VXxvEOB+kzluFd+bBLjfYo5bxfcWAe63md9EUPG9TYD7nYjeRADGvdpNhHebEgb8LsFNhPeY30RQuN+LyE0EJfZfJNhk7xu6iVCssEZy6YOmOGGuq7XtObaX8DOWI283BCKVjnu2F3PthGvHJXInLVzbyyaElUrHfNdP2F4ylbBskQ3Svp3OJF4KebnGTYSko/6JwriftQNfWIEM1fctzwlkppJWKunFAxFPZuQvliPjS4qM63kxT2Jybd91Ui8Bc/gh88NYxfchwX75iDluFd9HBLg/Zo5bxfcxAe5PmONW8X1CgHsmc9wqvpkEuGcxx63im0WA+1PmuFV8nxLg/ow5bhXfZwS4P2eOW8X3OQHu2czFtIpvNgHuLyIqpoFxryamv2xKGPCXBGL6K+ZiWuH+KiJiWoneDwg22RxTYrpIgYnk0tymOIGqq7Ut5bhIZLOuF88k00HWctW/TuVn/YybDlLZdDzwJCSpxGO26wWZuOf4XjKTTHnJeMwX9kqh+pVOTNteyokl3GQyIwHb6bQrPYHvpWJOLOZ7Ip3ICDsjPM9NuoGVSfmWlYolAokhmbKzWftDYA7nMT+MVXzzCPbL18xxq/i+JsA9nzluFd98AtzfMMet4vuGAPe3zHGr+L4lwP0dc9wqvu8IcH/PHLeK73sC3AuY41bxLSDAvZC5qFTxLSTA/UNERSUw7tVE5Y9NCQP+kUBULmIuKhXuRRERlUr8zSXYZD+ZEpVFCi0kl35uihNqulrbSRm+mxaeEMkgo/5Rk6RIJBPyfxsks3Evmc1KVNmE51vZeDKRjTsim4gFadtxfJGS6nVeyMs1RGVc6t6kDMYSXsq1rWw6nU1nZMxWwvNE1nHUN1cmM1Yq4cuHyam0EEEyGcsK+WeysaSw5wFz+Avzw1jF9wvBfvmVOW4V368EuBczx63iW0yAewlz3Cq+JQS4f2OOW8X3GwHu35njVvH9ToB7KXPcKr6lBLiXMRdXKr5lBLj/iKi4Asa9mrj6sylhwH8SiKu/mIsrhfuviIgrJYJ+Jthkf5sSV0UKDiSXljfFCRZdrW3hxuMi5mRTbsqzMn46kbSE1IkpJxuPiaznWpaTzlpxz3dlbCKdTqXkU8DATiWCbCrhuL+EvFxDXAVCqlH5EDMuwQexdCATaWesrO8n03K1WDbhWHbKFUHGS8hgY4mkk/KClHAluJiXyf4CzOEK5oexim8FwX75hzluFd8/BLhLqnjjVvEpQ+Ouxxy3iq8eAe76zHGr+OoT4G7AHLeKrwEB7lJi3Ij4Sglwl+FwGxUZwLhXExnlVYQBl1fh162o4i0yFO6KqlUJBq1LEqsSA8sJhoeG4OaSu9YQGUUO3kguVVbhBnddre1E2kkkhXDSwhcZ2814mZQdi6eztiuf/qQymbhEFwtcYccTXjZueWk3m1RPjtKxlPon6tVwrPCuITK8tJWJxaXoEm7CteQTpUTcttxUMnDiQSDDFV7StWOuDNsKbMfKyGDjIik8+dd6KS++AigyGjE/jFV8jQgOpQ2Y41bxbUCAuzFz3Cq+xgS4mzDHreJrQoC7KXPcKr6mBLirmA/bKr4qAtzVER22q4mG7WZVhAE3Ixi2mzMfthXu5hEZttVQXEmwyTY0NWwXOYAiubRRFW6A1dVaJD1fWF7MkQoiGZe/ScjFXJFMJu2EnNJ9KxVPJO2sk7Eznu3KJwlx30nJpxlOLG5nvWDloNhcM2wLKQgcP/BT6ps0kknhB7FMVj6OkM8+khKjJfxMOhaLu+l4oBKcTMrHI1IUZNKppC9TIxoBc7gx88NYxbcxwX7ZhDluFd8mBLhbMMet4mtBgHtT5rhVfJsS4N6M+dCp4tuMAPfmER06NycaOltWEQbckmDo3IL50KlwbxGRoVMNhxsRbLItDQ2dxQ5iSC5tVYUb5HS1Fhk348iRWo6vyaQVk3ePLSeeci3Hk+5UPJUVCV/4thuzfbmwL8dsNxOkElk/61mBn0lsHPJyjRy68m90XT+WthJWkEmp2d1Pe3E3mZbxy/jiqXgmbbt2POvYbjrrp5OunJtjQiQCy3ZSGwNzuDXzw1jFtzXBfmnFHLeKrxUB7tbMcav4WhPg3ob58KXi24YA97YRHb62JRq+2lQRBtyGYPjajvnwpXBvF5HhSw1JWxFssu1NDV9FDiRILu1QhRtodLW248lApFMZeS8xLm8nerbwE3YslXTUu8AxeeczI9LCsTNB3JZ3Mz11n1HeYnSttOumsr5jbx3yco3H68lMTP7P4hJ/Oun46rXohG1ZvutlrLSdSiYzMonqH/FxEtmsvLPqZLO+K/8nTjodE7a/2sBUbA53ZH4Yq/h2JNgvOzHHreLbiQD3zsyHEBXfzgS4d4noELIL0RCyaxVhwLsSDCFtmQ8hCnfbiAwhaljYgWCTtTP12LHIgxnJpd2qcAe7ttbyLpLEZ2VS8VjWkmNLWv79cc/KZuTUJW92JbKZWDYT9+J2POW5gbzzlclk0xn5PwhkxIG3Y8jLNXIorIQtn9YKORalAzcrMvGsTJO8VeX7MSuRSSbjfiD/LvlMNBukk4m0EDGJT45PMmFxK70jMIcW88NYxWcR7BfB/DBW8QkC3HZED2Ob6DB2qggDdggOY5f5YaxwuxE5jNWhuRvBJosZOoyLPaCQXIpX4Q44ba1jjuXLv1ckPHnrwFIruykvEc+mfBFP2nE/5qvlZLQpOx5PxFNBzHUTrnwa5dopIWeBkJdrHMZpx/F8GaKcXNzAtrMZCTBrB0m5QlY+3YrZcdtz4vEgITwrZclZJiHvargpOef4sWxitQO02Bx6zA8lFZ9HsF8SET2UEkSHUrKKMOAkwaG0O/NDSeHePSKHkjo84gSbbA9Th1KRjRrJpfZVuEavq3VhfJabSMezQgbgJ1whQ81kU7YbxANfrpzOZmxH2JbrWYnAk/funZgX8rJ+DRxKOxnX95K+K1JJ4cUSmbSbzDgx4WXkcemmYrY80QNhO3G5ciaZSXvAHHaIaHPuQNSc96wiDHhPgubckXlzVrg7RqQ5qybanqA5dzLVnAuuOjaWDJJLe1XBGmmcotaqJnsR1Hrv/GenCceWp476cwlfins/Yyds20+7lrydmrGzSVckA9d2nYyfScs1UyKwglQmGST+jdFkQ92bqKHuU0UY8D4EDbUz84aqcHcmaKiKbBUlq5qK7sr9XUUSmyQvuQ2Nzks+mbvk8Q3eOToDRzEVW4MwxlzQpeHv8wFFpQj5pOwarr+vwkVRhC4EXaUL85s/Odw1jRR1vFbDXWyM3Zg/zVLE7EYwUnQHH825xqDWHRqui87FvkS52I8oF/sR5oJq1NyfeU+h2g+pFv+ruDM1xEfG/XQL3v1PYd6f4AwB1lsgc6gGqvoltZuYa1qrJk7lr0lxbqFykj9cHrCuadkq7hLdiA6C/KDrGLOo6e9RMR9A0Bh8cGPIXaV1rFldBrhiMR9YxbPBIGuRz8sD8waU9a1PTTlH1qdH/n0wx5F7w/dE4AfysUjSTou4ehbjBl484fryEVHK97LCTTl2Uv04g/qHoryYo/4p36SfiQf5TVv4juP6yXRGyEc6qbSV8J2UFbieY1spXz4C8p1EPJ5yHD+eCBJJeVciFTgJK+Z5SStuO0mbqj49NPWp60FY020TZH0OIuqfBwHyUNPtJWQeDibKw8FhHtY1JHA+yDXhwnicPyT0jOKQ0JN4SOhJMCRkDQ0JNaknk02uF3At5JCQJTqEetViSKgpD5KgIiOswErKE9XyMnEvnfTtdEKeo0HM8R1kfQ6pwh3syCGBqj6HFHGXqaZ9k7uD2wC7H+vyPKzGtZB3gw+twh5IuRodWkSNahpc1rNGNe7JujyzrGktZI0Oq8LlLr9Gh+UNV4WPtErWs3Y1hYe825o/DB4ePs46Qvc4yyruEmt7rIN8VlnsWsBHY9qv+rGKu8T6btr/rRwWu9aRzOuhNsyRBAPyUURi4SjCR0tHEOWiN1Eueq8jF8XGTMWLE5g/bqLiwInMHzftH+JGP24C1luc+N/jpsJrZf9G5SR/8OtDeSfpSKKG2IfwTpKKuQ9BYzgpIo+bjgQORUdX8WwwJxHdqTjawOMmZH2OAT5uOhF4J4mqPsfU4vFCSR3rVZu3dnNXVA6FY6N4KBxLfCgcS3AonMzkUFgrib1g5YVsOscxPRROJmo6xwEOhZpu8yHrczzTQ4GqPsfX4tk78qXToh+p5denyB8pMfmzUimiwypdRRhwmuCnGjJAMlDhzlStSjBoXbKfwKC4nYFsqD7xG+dWcddKPvoEt+ozRDks+p0O8K363MX50AiqeO/jtXHQKu5arddaxV0CycETwPVA9z/FPWCMQu25gOJ2O3ioaFiyioP1QlsR/qr+rhXYPK/8O+vn/X2NG6/6+5qEn0+Sf+/J0k6p+lc4NC4x82LkKUxejKzhsvNz0TecW/pVhQnJTfnqPywvCADdbE4BNIjsv4I76AtsNv2IColuOkjMp+JUktFvlDiVSCWdVkUY8GkEKul05ipJ4T49IiqpXxgret0ziG7lnlG15gmHrh+yKaoG0bRk1YFCGfdJkTiVbbq1xarGpn5tFX4+U+blLGlnS+svbYC0c6SdK+08aedLGyhtkLQLpA2WNkTd+pN2obSLpA2TNlzaCGkXSxspbZS0S6RdKu0yaZdLGy1tjLQrpI2VNq5w2lDBNCzwnaXxna3x9df4Bmh852h852p852l852t8AzW+QRrfBRrfYI1viMY3VOO7UOO7SOMbpvEN1/hGaHwXa3wjNb5RGt8lGt+lGt9lGt/lGt9ojW+MxneFxjdW4xsX+vKv1uGvncJfreKu1ZpOsYfGmbAp2RJngdZSGM+GrPVvvvoXv5ade6toQLFruaveUDqnuLWs/Ledzi1mLXv1N6fOW/+1rMK3sM5fz7XkI6s13ugauH5rJXRvhw1an7US+jfNLqj7Wt7a3lobXNe1vLW/ATekbmvZ63qbbmhd1vLW/WbehbVfq8Y3Ry+q7Vpejb1QDKvdWlYt+qoYXpu1rFr1aDGi5rVitez34uKa1nJrfXaIketcS32ffu3XGrWutbw6nWnikrWvlajj+SguXctayaDOZ624TL+WtR7ntrhct5a1XjOAGL3mWmI95wkxpnAtf71nE3HF6ms5Rcw5YmzeWnZQ1MwkxgFFn5oblTprFa43LhQxV4SiZnQoci4LRc8loQgaGYqiEaFIGhaKpgtDETUkFFUXhCJrYCi6zgtF2DmhKOsfijQ1u6lZsPBCP0YbB5xdr4TVwTH67gUu7tXvKl5VRRiwWhy97tVAMlDhvjpvU4DWtUw+N8I1K5/0LlJ+Lq4Jc35t4Z2ca6pWPQjM+a7VKG70syRE18qp5GuApL8WXFyKDX5NFf5W9zXADprPG/RpNxZY6+tgmOOuydPuOqLT7voqwoCvJzjtxjM/7RTu8RE/7cbCyJbMaMIlOe0mhDm/ofC0m6A57W4wcNqNBZ52E4Ckv4GouOiuj8R8I657ar/JoNj4rg6bBvrtE6Q0uAk8LaCblqrxTQRTEnfcV4e40fsPyZ2bifefVdwlVP5uJuDOLeCpLXd+3VK15tSJrv8VwPrfCsuDmzU5dd8Krl/uuq2KMODbCKbuicynboV7YsSn7itgZEvbmnBJpu7bw5zfUTh1366Zuu8wMHUjulZu6r4dSPo7iIqL7vpIzHcyP/VvDpsG+ofEbgbmENl472JeD8WXuwimMCBukleZbw5xo3shcuq+C8jDu5krKoX1bgIe3kOkBu4xoAbGAOt/LywPnm1SDdwLrl/uuq+KMOD7CNTAJOZqQOGeFHE1MAZGtkRWEy6JGpgc5vz+QjUwWaMG7jegBhBdK6cGJgNJfz9RcdFdH4n5AebT591h00CrgbuBOUQ23geZ10Px5UGCKexB4ukTwZcHCdQAcOoWDwJ5+BBzNaCwPkTAw4eJ1MDDBtTAaGD9H4HlIWv0p9ofAdcvdz1aRRjwowRqYApzNaBwT4m4GhgNI5sINOGSqIGpYc4fK1QDUzVq4DEDagDRtXJqYCqQ9I8RFRfd9ZGYH2c+fT4UNg20GngImENk432CeT0UX54gmMKeIJ4+EXx5gkANAKdu8QSQh08yVwMK65MEPHyKSA08ZUANXA6s/9OwPDhG1cDT4PrlrmeqCAN+hkANTGOuBhTuaRFXA5fDyJYxpgamhzl/tlANTNeogWcNqAFE18qpgelA0j9LVFx010difo759Plk2DTQauBJYA6Rjfd55vVQfHmeYAp7nnj6RPDleQI1AJy6xfNAHr7AXA0orC8Q8PBFIjXwogE1cBmw/i/B8pAy+t0UL4Hrl7teriIM+GUCNTCDuRpQuGdEXA1cBiNb3Nh3U7wS5vzVQjXwikYNvGpADSC6Vk4NvAIk/atExUV3fSTm15hPny+ETQOtBl4A5hDZeF9nXg/Fl9cJpjAgbhI18EKIG90LgVO3eB3IwzeYqwGF9Q0CHr5JpAbeNKAGLgXW/y1YHuykSTXwFrh+uevtKsKA3yZQA+8wVwMK9zsRVwOXwsjme5pwSdTAu2HO3ytUA+9q1MB7BtQAomvl1MC7QNK/R1RcdNdHYn6f+fT5Rtg00GrgDWAOkY33A+b1UHz5gGAK+4B4+kTw5QMCNQCcusUHQB5+yFwNKKwfEvDwIyI18JEBNXAJsP4fw/KQTphUAx+D65e7PqkiDPgTAjUwk7kaULhnRlwNXAIjm5vQhEuiBmaFOf+0UA3M0qiBTw2oAUTXyqmBWUDSf0pUXHTXR2L+jPn0+WHYNNBq4ENgDpGN93Pm9VB8+ZxgCvucePpE8OVzAjUAnLrF50AezmauBhTW2QQ8/IJIDXxhQA2MAtb/S1geYkbfFPoSXL/c9VUVYcBfEaiBOczVgMI9J+JqYBROMht7U2humPN5hWpgrkYNzDOgBhBdK6cG5gJJP4+ouOiuj8T8NfPpc3bYNNBqYDYwh8jGO595PRRf5hNMYUDcJGpgdogb3QuBU7eYD+ThN8zVgML6DQEPvyVSA98aUAMjgfX/DndnLGZSDXwHrl/u+r6KMODvCdTAAuZqQOFeEHE1MBI3MKY14ZKogYVhzn8oVAMLNWrgBwNqANG1cmpgIZD0PxAVF931kZh/ZD59fhM2DbQa+AaYQ2TjXcS8HooviwimsEXE0yeCL4sI1ABw6haLgDz8ibkaUFh/IuDhz0Rq4GcDauBiYP1/wZ2FcZNq4Bdw/XLXr1WEAf9KoAYWM1cDCvfiiKuBi3GSOaUJl0QNLAlz/luhGliiUQO/GVADiK6VUwNLgKT/jai46K6PxPw78+nzp7BpoNXAT8AcIhvvUub1UHxZSjCFLSWePhF8WUqgBoBTt1gK5OEy5mpAYV1GwMM/iNTAHwbUwAhg/f+E5SFh9BtG/wTXL3f9VUUY8F8EauBv5mpA4f474mpgBIxsnrFvGF0e5nxFoRpYrlEDKwyoAUTXyqmB5UDSryAqLrrrIzH/w3z6XBY2DbQaWAbMIbTxVvOuh+KLihE9hQFxk6iBZSFudC9chtx/1Ti89YjrYRV3rcRaj4CH9aux02TuXK1fTa8GhgP7UANYHsyqgQbg+uWu0mrCgEur8euWAZsBFe6y6lUJBq1rVA0Mj6AaKA9zXlFdsvrkX169phpQf4haDQwHqoFyIOkrqmmKi+76SMwNmU+f9cKmgVYD9YA5RDbeSub1UHypJJjCKomnTwRfKgnUAHDqFpVAHjZirgYU1kYEPNyASA1sYEANDAOqgcawPMSMfqdQY3D9cleTasKAmxCogabM1YDC3TTiamAYTA2kjH2nUFWY8+pCNVClUQPVBtTAMKAaqAKSvrqaprjoro/E3Iz59NkobBpoNdAImENk423OvB6KL80JprDmxNMngi/NCdQAcOoWzYE83JC5GlBYNyTg4UZEamAjA2rgIqAa2BinBnyTamBjcP1y1ybVhAFvQqAGWjBXAwp3i4irgYtwasDRhEuiBjYNc75ZoRrYVKMGNjOgBi4CqoFNgaTfrJqmuOiuj8S8OfPpc8OwaaDVwIbAHCIbb0vm9VB8aUkwhbUknj4RfGlJoAaAU7doCeThFszVgMK6BQEPtyRSA1saUAMXAtXAVrA82EafDWwFrl/u2rqaMOCtCdRAK+ZqQOFuFXE1cCFMDfjGng20DnO+TaEaaK1RA9sYUAMXAtVAayDpt6mmKS666yMxb8t8+twibBpoNbAFMIfIxtuGeT0UX9oQTGFtiKdPBF/aEKgB4NQt2gB5uB1zNaCwbkfAw+2J1MD2BtTAUKAa2AGWB8cxqQZ2ANcvd+1YTRjwjgRqYCfmakDh3iniamAoTA1kfE24JGpg5zDnuxSqgZ01amAXA2pgKFAN7Awk/S7VNMVFd30k5l2ZT5/bhU0DrQa2A+YQ2XjbMq+H4ktbgimsLfH0ieBLWwI1AJy6RVsgD9sxVwMKazsCHu5GpAZ2M6AGhgDVgAXLQ9boswELXL/cJaoJAxYEasBmrgYUbjviamAITA0IY88GnDDnbqEacDRqwDWgBoYA1YADJL1bTVNcdNdHYo4xnz7bhU0DrQbaAXOIbLxx5vVQfIkTTGFx4ukTwZc4gRoATt0iDuShx1wNKKweAQ8TRGogYUANDAaqgSQsD65RNZAE1y937V5NGPDuBGpgD+ZqQOHeI+JqYDDuH+UwpgbahznvUKgG2mvUQAcDamAwUA20B5K+QzVNcdFdH4l5T+bTpxc2DbQa8IA5RDbejszrofjSkWAK60g8fSL40pFADQCnbtERyMNOzNXASqwEPNyLSA3sZUANXABUA3vD8uAlTaqBvcH1y137VBMGvA+BGujMXA0o3J0jrgYuwP2jHJ4mXBI10CXMeddCNdBFowa6GlADFwDVQBcg6btW0xQX3fWRmPdlPn12CpsGWg10AuYQ2Xi7Ma+H4ks3gimsG/H0ieBLNwI1AJy6RTcgD7szVwMKa3cCHu5HpAb2M6AGBgHVwP64O2NG1cD+4PrlrgOqCQM+gEANHMhcDSjcB0ZcDQzC/XO1xtRAjzDnBxWqgR4aNXCQATUwCKgGegBJf1A1TXHRXR+J+WDm02f3sGmg1UB3YA6Rjbcn83oovvQkmMJ6Ek+fCL70JFADwKlb9ATysBdzNaCw9iLg4SFEauAQA2pgIFANHIp7NmCZVAOHguuXuw6rJgz4MAI1cDhzNaBwHx5xNTAQpgaSliZcEjVwRJjzIwvVwBEaNXCkATUwEKgGjgCS/shqmuKiuz4S81HMp89eYdNAq4FewBwiG29v5vVQfOlNMIUBcZOogV4hbnQvBE7dojeQh32YqwGFtQ8BD48mUgNHG1AD5wPVwDG4s9Dov0V8DLh+uevYasKAjyVQA8cxVwMK93ERVwPnw9RA3Ni/RXx8mPNUoRo4XqMGUgbUwPlANXA8kPSpapriors+EnOa+fTZJ2waaDXQB5hDZOPNMK+H4kuGYArLEE+fCL5kCNQAcOoWGSAPfeZqQGH1CXiYJVIDWQNq4DygGghwz8mNfsNoAK5f7jqhmjDgEwjUwInM1YDCfWLE1cB5uJ8iNvYNoyeFOT+5UA2cpFEDJxtQA+cB1cBJQNKfXE1TXHTXR2I+hfn06YdNA60GfGAOkY23L/N6KL70JZjC+hJPnwi+9CVQA8CpW/QF8rAfczWgsPYj4OGpRGrgVANq4FygGjgNloes0WcDp4Hrl7tOryYM+HQCNXAGczWgcJ8RcTVwLu4bRo09GzgzzPlZhWrgTI0aOMuAGjgXqAbOBJL+rGqa4qK7PhLz2cynz35h00CrgX7AHCIbb3/m9VB86U8whfUnnj4RfOlPoAaAU7foD+ThAOZqQGEdQMDDc4jUwDkG1MA5QDVwLiwPQcykGjgXXL/cdV41YcDnEaiB85mrAYX7/IirgXNgasBKa8IlUQMDw5wPKlQDAzVqYJABNXAOUA0MBJJ+UDVNcdFdH4n5AubT54CwaaDVwABgDpGNdzDzeii+DCaYwgYTT58IvgwmUAPAqVsMBvJwCHM1oLAOIeDhUCI1MNSAGhgAVAMXwvKQNPqm0IXg+uWui6oJA76IQA0MY64GFO5hEVcDA3A/N2DsTaHhYc5HFKqB4Ro1MMKAGhgAVAPDgaQfUU1TXHTXR2K+mPn0OSRsGmg1MASYQ2TjHcm8HoovIwmmsJHE0yeCLyMJ1ABw6hYjgTwcxVwNKKyjCHh4CZEauMSAGugPVAOX4p4NGP1OoUvB9ctdl1UTBnwZgRq4nLkaULgvj7ga6I97U8jShEuiBkaHOR9TqAZGa9TAGANqoD9QDYwGkn5MNU1x0V0fifkK5tPnqLBpoNXAKGAOkY13LPN6KL6MJZjCgLhJ1MCoEDe6FwKnbjEWyMNxzNWAwjqOgIdXEqmBK8NYTU7GZ1dhseSuq6oJA76KYDK+mvlkrHBfTTAZ62JFNAYVa31wDoANB1pvkxv2LKINe001YcDXEGzYa5lvWIX72ght2GuZb1h0vXMXWnmdCbzfdh0wfyab1HXVNE3q+mrCgK8naFLjmTcphXu8oSZlFXetbCbjCWT+OGCNkPWewFzmq0Y3gUBe3cBcVirMNxDgvpFIVt6ouV2Lzgl1zRB7fALBrRnkgDMB2DtuisAeuolgD91MtIdurl5zcELn5KaIDLgnAwfcW/Iwi4Rj256j/lzCt4TrZ+yEbftp18pYqYydTboiGbi262T8TFqumRKBFaQyySDx71omB9xbiAbcW6sJA76VYMC9jfmAq3DfRjDgKrJVlJh5oHxyFbaZF165tYvdgPlEnpjfMNFd/jbgqZvf5fODrmPMmRqSs3KjTFyPWyw1JX0icAPeTnR6qnWHricXhPo6WGEFVtK2UpaXiXvppG+nE6nACWKO76xvXmsiOzKvdxDl9Y4wr6Ulq17SKLw4N6P85nln2KTvUnuQomFMJDj9JjKXPeu7Oaw64C42xruZSxVFzLsJpMo9RE3hnnU0W6u4S9xFlIt7iXJxbxEHT00xU/Highb/qz0lU0N8ZBwY3IJ3H1AH390EvRRYb4HMoRoq6pfoFU5JHXNQE6fy16To36ic5A9Y961L4VjFXeJuooZ43zoUTg3LiJr+HhXzfQSNYQi4MeSu0jrWrC6DTLGYJ1XzbDDIWuTzclLeQb2+9akp58j6TM6/b+k4cm/4ngj8wIl5STst4k48HriBF0+4fhBzU76XFW7KsZNZzwpEIpv1Yk7GiwdJPxMP8pu28B3H9ZPpjIjZ8VTaSvhOygpcz5Hi13c833cS8XjKcfx4IkgkpWCVMjhhxTwvacVtJ2lT1WdyntJEHQo13dnIXzMqh8L9UTwU7ic+FO4nOBSGMjkU1kpib+UPnwTIpvMA00NhKFHTeQBwKNR0mw9ZnweZHgpU9Xnw/6Pbjw+Ftx8f1t1+tIq71nrvH/kcpNi1gLcySd42yuUQ/fYXVQ6LXesR5vVQG+YRgoP9UaIh51HC26IPE+ViClEuphDeFqXixUXMb4tScWBYBG6LPkJwWxRYbzHsv9uihdfK/o3KSf7gN5VSAT9C1BCnEipgFfNUgsYwPCK3RR8BDkWPVfNsMMOJFNZjBm6LIuvzOFABDwMqYKr6PK6pT10PwppugyLr8wRR/3wCkIea7tQg8/AkUR6erMVtcs4HuSZcGI/zh4SnojgkPEU8JDxFMCSMMDQkFPl2LLTJPQ1cCzkkjCA6hJ6uxZBQ7Fu2yPo8U4072JFDAlV9ngEcjjVcYhzwZ3KmwfpnguSOw23V+jsOyDuuxa41nfndW1Xj6QTnzbNEZ69at6afYS029ueAsStu6qYp1Ppry4FV3CWeq+Yf4/PoGNHNOLe5UMRUaz1PcIv1eWCML0Rn84j/y5vnBXSMUTmZXgQDR+NWmF8kwP0S0Yn8Ut6JTPFjSxTPlJAT3svM+aQUwcsEfJoRgX00gwD3K0T76JV17COruIusp4xi/kyaigOXEN1NQ7/T9CpQfQJrLS4husPyariH/lNddDG+Rj04IlSSCrKuz0etOgAvNsbX/w9szP/UG90mfJ0gRpLN+AaQ6FHt6m9EgFBvRoVQb+ECtaNKqLciQKi3o0Kod3CBOlEl1DsRINS7USHUe7hA3agS6r0IEOr9qBDqA1ygsagS6oMIEOrDqBDqI1yg8agS6qMIEOrjqBDqE1ygXlQJ9UkECDUzKoSahQs0EVVCzYoAoT6NCqE+wwWajCqhPosAoT6PCqFm4wJNRZVQsyNAqC+iQqgvcYGmo0qoLyNAqK+iQqg5uEAzUSXUnAgQai4yxqgW6vhS/jHOi8rO/xoXaDaqhPo6Ajt//n873xK7R2DnfxOVnf8tLFAR2R9d+jYCO/+7qBDqexyhIvv+zvcRINSCqBBqIY5QkX1/Z2EECPVDVAj1I45QkX1/58cIEGpRVAj1E45QkX1/56cIEOrnqBDqFxyhIvv+zi8RINSvUSHUYhyhIvv+zuIIEGpJVAj1G45QkX1/57cIEOr3qBBqKY5QkX1/Z2kECLUsKoT6A0eoyL6/80cECPVnVAj1F45QkX1/568IEOrv/56RWaJRBJ6RLY/Kzl+B2/mRfS9mRQR2/j9RIVRJMxih/KgSCpcDuhjrNYsIoerjCBXZ93fqR4BQDaJCqFIcoYKoEqo0AoQqQ8aovv9IfRlWg7xgWxcUrT4YAPDLNcWMCMwob0YgxrcjEOO7EYjx/QjE+GEEYvw4AjHOjECMn0Ygxs8jEOMXEYjxqwjEODcCMc6LQIzzIxDjNxGI8bsIxLggAjH+EIEYF0Ugxp8jEOOvEYhxSQRi/D0CMS6LQIx/RiDGvyMQ4/IIxPhPBGKs93/0rjTrG50FF2ZdxyvRXJi1bUG39r/fu56rWXX4uVzmu0JaQ2mV0hpJ20BaY2lNpDWVViWtWlozac2lbShtI2kbN/t3jU2ahYvm/rUFtWirAl+FxtdQ46vU+BppfBtofI01viYa3yahL/+C/qMAAvivSQnov6iz2o3pYp8etQBu1vz6tNDUB/pAQqwee7F52JQoD5tq8tAAmQfsQwCxKTCnmxHldDMD3NoMmIfNifKwuQFuAR/eiM2BOW1JlNOW1NySeShnmgcyHsn9BHzAttqDsGLztwURj7Yw0KO2APJoS6I8bGmgRwEfOootgTndiiinWxng1lbAPGxNlIetDXAL+LBYbA3MaSuinLYycP5VMM0DGY/kfgI+0F/twXux+WtNxKPWBnpUayCPtiHKwzYGehTwJQexDTCn2xLldFsD3NoWmIc2RHloY4BbwJdTRBtgTrcjyul2Bs6/hkzzQMYjuZ+ALxCt9qJPsfnbnohH2xvoUdsDebQDUR52MNCjgC9ViR2AOd2RKKc7GuDWjsA87ESUh50McAv4MpzYCZjTnYlyurOB86+SaR7IeCT3E/CFxdVeLCw2f7sQ8WgXAz1qFyCPdiXKw64GehTwJU6xKzCnbYly2tYAt9oC89COKA/tDHAL+PKtaAfM6W5EOd3NwPnXiGkeyHgk9xPwBenVXmQuNn8WEY8sAz3KAvJIEOVBGOhRwJfGhQDm1CbKqW2AWzYwDw5RHhwD3AK+7C8cYE5dopy6Bs6/DZjmgYxHcj8BfyBjtR+cKDZ/MSIexQz0qBiQR3GiPMQN9CjgD6mIODCnHlFOPQPc8oB5SBDlIWGAW8AfLhIJYE6TRDlNGjj/GjPNAxmP5H4C/gDYaj+oVWz+difi0e4GetTuwDzsQZSHPQz0KOAPxYk9gDltT5TT9ga41R6Yhw5EeehggFvAH2YUHYA53ZMop3saOP+aMM1DPuZ6YMxNAZjTyX/XooyzKiL5rI5InM0iEmfziMS5YUTi3CgicW4MjFP9/HVlyepfSlpdsvqFjr+cIM/oGCsiEGPDCMRYGYEYG0Ugxg0iEGPjCMTYhKjHI2J0vATJulTx/rfu/1/r4ta2bcK1Ra4n5M8qHdW+lraXtL2l7SOts7Qu0rpK21daN2ndpe0nbX9pB0g7UFqPZiWrf1FNx2ZrfnlNJ41vL41vb41vH42vs8bXRePrqvEdqPH1CH1qoGtcsuoGQP6Fbqb7NmNPRvXKjZWfi4Oa/fvrwYVFV/+hcPJF35naF3BHIRsE6kaKOAh4R+bgiCifqMTZLSJxdo9InPtFJM79IxLnARGJE9Ev04mVU7XIj7Pw7nix/RN4R0N0JKoNGjPwDonoFBHMwDsuYq+IYAbewRF7RwQz8I6Q2CcimIF3mETniGAG3rESXSKCGXgHTHQ1hNlav0vkPhwI1Eo9iZ7i568LzkPuEj2Ate8J0rJBNkjmY64H5vshAMy6O7PoOA8FxBlPWclsPO5RxnkYIM50Ou6lsokYZZyHI+qeiWcDx7Mp4zwCEGcq5gZBzElRxnkkIM6YsLIx2wso4zwKEGcybcXiiUSGMs7egDhFkHD8ZCpNGWcfRN3TWSvji6SKbcOSNb+tPv9b6vO/nT7/W+nzv40+/1vo8799Pv9b5w/J+/xc9fp/zr/Z3iPv86F5nw/L+3x43ucj8j4fmff5qLzPvfM+9wk/Hy1/PUbasdKOk3a8tJS0tLRMs39v8jctWXV/el31t4q7xNH8b/KryyVbW/w7p+Vym/sXC3yZl6y0QNoJhQ8T1H9sWODLanyBxndC6Mu/yrDJWq2oxTYIHzUIBpbIAh+QBJC1/s3XCeBXrkxt3mP+27zazXuizMtJ0k6Wdkrh5j1RsylP0vhO1vhOMbB5jwFu3hOBm/ck4OY9Gbh5T4no5j32v82r3bx9ZV76STtV2mmFm7evZlP20/hO1fhOM7B5jwVu3r7AzdsPuHlPBW7e0yK6eY/7b/NqN+/pMi9nSDtT2lmFm/d0zaY8Q+M7U+M7y8DmPQ64eU8Hbt4zgJv3TODmPSuim/f4/zavdvOeLfPSX9oAaecUbt6zNZuyv8Y3QOM7x8DmPR64ec8Gbt7+wM07ALh5z4no5k39t3m1m/dcmZfzpJ0vbWDh5j1XsynP0/jO1/gGGti8KeDmPRe4ec8Dbt7zgZt3YEQ3b/q/zavdvINkXi6QNljakMLNO0izKS/Q+AZrfEMMbN40cPMOAm7eC4CbdzBw8w6J6ObN/Ld5tZt3qMzLhdIukjascPMO1WzKCzW+izS+YQY2bwa4eYcCN++FwM17EXDzDgNughyZWuWRqkflKh4cmPf5gLzP++d93i/vc/e8z93yPu+b97lr3ucueZ87533eJ+/z3nmf98r73Cnvc8e8z3vmfe6Q97l93uc98j7vnvc5mfc5kffZy/scz/scy/vs5n128j7beZ9F3mcr7/NueZ/PyduH+VI2X+rmS+GBeZ/zp+f86Tp/+h6S9zn/wM4/0PMP/GF5n/N7RH4Pye8xJ+R9zn/8nP94Ov/x9Sl5n/OfeOU/Ect/YnZa3uf8m+z5N+Hzb9Kflfc5/75e/n2/3H3B3KkwXP5+hLSLpY2UNkraJdIulXaZtMuljZY2RtoV0sZKGyftSmlXSbta2jXSrpV2nbTrpY2XNkHaDdJulHaTtJul3SLtVmm3SZso7XZpd0i7U9pd0u6Wdo+0e6XdJ22StMnS7pf2gLQHpT0k7WFpj0h7tNm/B0NFif6HNHNXp/BXkXBs23NUr0n4lnD9jJ2wbT/tWhkrlbGzSVckA9d2nYyfScu+lBKBFaQyyeDfVxZpf96pCt/r1DWl2apY1wi62EOoMy5okX8Y54IuDX+fDygKBcgn49Rm//76mMJEUYD8CqOSMQU8flLhrk+Iu9gYHyfOoVXcJRQxH2+Gr80T4Kkt1xTUukPDddG5eIwoF08S5eLJdeSi2JipeHFNi//VnpKpIT4yDlzbgncfUAff4wS9FFhvgcyhGirql9RuYqxprZo4lb8mRf9G5SR/wHpqXROjVdwlHidqiPlB1zFmUdPfo2J+iqAxXAduDLmrtI41q8sgUyzmp5vxbDDIWuTz8um8g3p961NTzpH1eSZvLeE4cm/4ngj8wIl5STst4k48HriBF0+4fhBzU76XFW7KsZNZzwpEIpv1Yk7GiwdJPxMP8pu28B3H9ZPpjIjZ8VTaSvhOygpcz7GtlO94vu8k4vGU4/jxRJBISlWeCpyEFfO8pBW3naRNVZ9nNPWp60FY020DZH2mEfXPaYA81HR7BZmH6UR5mB7mYV1DAueDXBMujMf5Q8KzURwSniUeEp4lGBKuNzQk1KSeTDa554BrIYeE64kOoedqMSTUlAehni8KK7CS8kS1vEzcSyd9O52Q52gQc3wHWZ/nm+EOduSQQFWf54u481TTvsndyWyA3Y8i/9Z8sWsh74q+0Ax7IOVq9EIRNappcFnPGtW4J+tQoxrXQtboxWa43OXX6MW84Srqj3VeCh/rvKx7rGMVd4m1Pd5APq8rdi3gIyJBUfj13bT/Wzksdq0ZzOuhNswMggH5FSKx8Arh46aXiXLxKlEuXiV83ETFiwnMHzdRceCGCDxumkHwuAlYb3HDf4+bCq+V/RuVk/zB7zXKO0kziBria4R3klTMrxE0hhsj8rhpBnAoer0ZzwZzI9GditcNPG5C1ucN4OOmG4B3kqjq80YtHi+U1LFe/5tvrVIdCm9G8VB4k/hQeJPgULiJyaGwVhJ7K39GJUA2nbeYHgo3ETWdtwCHQk23+ZD1eZvpoUBVn7cJ1XVnIrWFrPc7zF+UzsgcvkNwJzFTRZPDYtd6l/hOIiJvunpYxV0iA/xpFmQ93gPvD3QvUHd0gDGKQK73LsGs8z547lM/Rpf/jz0rWxH+qv6uFdg8r/w76+f9fY0br/r7moSfP5B/74fSPmpm9t8v/IjJO0w1XHZ+Lj4OH+F90ixMSO5AVv9heUEA6GbzEaBB/Pvz20HwMbDZfEJUSHTTQWKemT9wFvczokJtuiYlZp5tzyRS37OaEQY8qxl+3U+BZKDC/WmzVQkGrUvyo5WfhLGi1/2M6K7LZ83WPOHQ9UM2RZPfIvNBJE5lm27tgm+RaRV+/lzmZba0L6R9Ke0raXOkzZU2T9rX0uZL+0bat9K+k/a9tAXSFkr7QdqP0hZJ+0naz9J+kfartMXSlkj7Tdrv0pZKWybtD2l/SvurcNpQwRR+G81sje8Lje9Lje8rjW+OxjdX45un8X2t8c3X+L7R+L7V+L7T+L7X+BZofAs1vh80vh81vkUa308a388a3y8a368a32KNb4nG95vG97vGt1TjW6bx/aHx/anx/dVszW85ah3+2in81SruWq3pFHtofA6bki0xG7SWwvgFZK1/8/Vl8WvZuRcAvip2LXfVywRzilvLyn8xYW4xa9mrv+Qwb/3XsgpfmPh6PdeSd5fXePli/vqtldC9yPHN+qyV0L8U8m3d1/LW9oLJd3Vdy1v7yyrf120te10vviyoy1reul+iWVj7tWp8yeuH2q7l1dgLxY+1W8uqRV8Vi2qzllWrHi1+qnmtWC37vfi5prXcWp8d4pd1ruUGdTiHxK/rWsur05kmFq99rUQdz0exZC1rJYM6n7XiN/1a1nqc2+J33VrWes0AYumaa4n1nCfEssK1/PWeTcQfq6/lFDHniD/z1rKDomYm8RdQ9Km5cc+SVcLpr1DE/BGKmqWhyPktFD2LQxH0SyiKfgpF0o+haFoYiqjvQ1H1bSiy5oeia14owuaEouzLUKSp2U3NgoVX4V3FYufNv4Cz69+wOjiWybuKuLhXv6u4vBlhwGpx9LorgGSgwr0ib1N0Kvn3soq8TD43wjUrn/QuUn4u/snlvHnJ6ur6n2arHgTmfOoPFSpu9LMkRNfKqeR/kKRvji0uxQb/pxn+Vvc/wA6azxv0afcnsNb1YLWOuyZPO1zcq5929ZsTBqwWR6/boDnv007hbtB8VYJB6xo97f6ENYZkRhMuyWlXGua8rPC0K22+5mlXZuC0+xN42pUCSV/WnKa46K6PxFyO656ipAR/EqsTXjUN9NsnSGlQ0Rw7LaCblqpxRXN8bbjjVjWuaI7ff0juNCTef1Zxl1D5a0jAnUrw1JY7vyqbrzl1ouv/B7D+jWB5cLMmp+5GRFP3Bs0JA96AYOpuzHzqVrgbR3zq/gM2dadtTbgkU3eTMOdNC6fuJpqpu6mBqfsP4NTdBEj6ps1piovu+kjMVcxP/YZh00D/wFRDYA6RjbeaeT0UX6oJprBq4gkewZfq5vheiJy6q4E8bMZcUSmszQh42JxIDTQ3oAaWAdXAhrA8eLZJNbAhuH65a6PmhAFvRKAGNmauBhTujSOuBpbB1EAiqwmXRA1sEua8RaEa2ESjBloYUAPLgGpgEyDpWzSnKS666yMxb8p8+mwWNg20GmgGzCGy8W7GvB6KL5sRTGGbEU+fCL5sRqAGgFO32AzIw82ZqwGFdXMCHrYkUgMtDaiBpUA1sAUsD1mjP9W+Bbh+uWvL5oQBb0mgBrZirgYU7q0irgaWwtSACDThkqiBrcOctypUA1tr1EArA2pgKVANbA0kfavmNMVFd30k5tbMp8/Nw6aBVgObA3OIbLzbMK+H4ss2BFPYNsTTJ4Iv2xCoAeDULbYB8nBb5mpAYd2WgIdtiNRAGwNq4HegGtgOlgfHqBrYDly/3LV9c8KAtydQAzswVwMK9w4RVwO/w9RAxpga2DHM+U6FamBHjRrYyYAa+B2oBnYEkn6n5jTFRXd9JOadmU+f24ZNA60GtgXmENl4d2FeD8WXXQimsF2Ip08EX3YhUAPAqVvsAuThrszVgMK6KwEP2xKpgbYG1MBvQDXQDpaHlNHvpmgHrl/u2q05YcC7EagBi7kaULitiKuB32BqIG7suylEmHO7UA0IjRqwDaiB34BqQABJbzenKS666yMxO8ynz13DpoFWA7sCc4hsvC7zeii+uARTmEs8fSL44hKoAeDULVwgD2PM1YDCGiPgYZxIDcQNqIElQDXgwfJgJ02qAQ9cv9yVaE4YcIJADSSZqwGFOxlxNbAE9011niZcEjWwe5jzPQrVwO4aNbCHATWwBKgGdgeSfo/mNMVFd30k5vbMp89Y2DTQaiAGzCGy8XZgXg/Flw4EU1gH4ukTwZcOBGoAOHWLDkAe7slcDSisexLwsCORGuhoQA0sBqqBTrA8pBMm1UAncP1y117NCQPei0AN7M1cDSjce0dcDSyGqQE3oQmXRA3sE+a8c6Ea2EejBjobUAOLgWpgHyDpOzenKS666yMxd2E+fe4ZNg20GtgTmENk4+3KvB6KL10JprCuxNMngi9dCdQAcOoWXYE83Je5GlBY9yXgYTciNdDNgBr4FagGusPyEDP6plB3cP1y137NCQPej0AN7M9cDSjc+0dcDfy/9q4DTIqiae9xd+R00axgFtPO7YU9RUUlqCCogID50iKggAQFSUfOOYqKIBhAUARRBAQDCoqYBUWRrCBJEHP6q3GGq2t6+1L1OPX9O8/zcs10T8/b1dU9b830zB6m+8KoayuFmtg2v1GOBpooooEbXYgGDhNGA00Inf7GeDOdSz3rU7a5qcfVZyN70qCOBhoR2pBy4m3m8f4Q/tLMgAprZlh9UvhLMwPRAKHqtpoR+uFNHo8GRFtvMuCHNxuKBm52IRo4RBgN3EJ3ZyzNzWjgFuL+c7bm8QYJNzcQDbTweDQg2t2CeTRwiC4ayFbQNRINtLRtfqscDbRURAO3uhANHCKMBloSOv2t8WY6l3rWp2xzK4+rz5vsSYM6GriJ0IaUE29rj/eH8JfWBlRYa8Pqk8JfWhuIBghVt9Wa0A/beDwaEG1tY8APbzMUDdzmQjTwA2E0cDvdtTDdzWjgduL+c7Y74g0SvsNANHCnx6MB0e47mUcDP9CtFMpS0DUSDdxl2/xuORq4SxEN3O1CNPADYTRwF6HT3x1vpnOpZ33KNt/jcfXZxp40qKOBNoQ2pJx4szzeH8JfsgyosCzD6pPCX7IMRAOEqtvKIvTDbI9HA6Kt2Qb8MMdQNJDjQjRwkDAayCWzQ9DVL4zmEvefs+XFGyScZyAaCHk8GhDtDjGPBg6SRQMZrn1htK1t83vlaKCtIhq414Vo4CBhNNCW0OnvjTfTudSzPmWb23lcfWbbkwZ1NJBNaEPKibe9x/tD+Et7AyqsvWH1SeEv7Q1EA4Sq22pP6IcdPB4NiLZ2MOCH9xmKBu5zIRo4QBgN3M80GrifuP+crWO8QcIdDUQDnTweDYh2d2IeDRxgGA10tm3+gBwNdFZEAw+4EA0cIIwGOhM6/QNMogHKNnfxuPrsYE8a1NFAB0IbUk68XT3eH8JfuhpQYV0Nq08Kf+lqIBogVN1WV0I/7ObxaEC0tZsBP+xuKBro7kI0sJ8wGniQzA5prn5T6EHi/nO2h+INEn7IQDTQw+PRgGh3D+bRwH6yaCDLtW8K9bRt/rAcDfRURAMPuxAN7CeMBnoSOv3D8WY6l3rWp2xzL4+rz272pEEdDXQjtCHlxNvb4/0h/KW3ARXW27D6pPCX3gaiAULVbfUm9MM+Ho8GRFv7GPDDvoaigb4uRAP7CKOBfnTRQK6b0UA/4v5ztvx4g4TzDUQD/T0eDYh292ceDeyjiwYCCrpGooEBts0HytHAAEU0MNCFaGAfYTQwgNDpB8ab6VzqWZ+yzYM8rj772JMGdTTQh9CGlBPvYI/3h/CXwQZU2GDD6pPCXwYbiAYIVbc1mNAPh3g8GhBtHWLAD4caigaGuhAN7CWMBoaR2SHF1WcDw4j7z9mGxxskPNxANDDC49GAaPcI5tHAXrpfH3Pt2cBI2+aj5GhgpCIaGOVCNLCXMBoYSej0o+LNdC71rE/Z5tEeV59D7EmDOhoYQmhDyol3jMf7Q/jLGAMqbIxh9UnhL2MMRAOEqtsaQ+iHYz0eDYi2jjXgh+MMRQPjXIgGvieMBsaT2SEQcDMaGE/cf842Id4g4QkGooGJHo8GRLsnMo8GvieLBnJyFXSNRAOTbJtPlqOBSYpoYLIL0cD3hNHAJEKnnxxvpnOpZ33KNk/xuPoca08a1NHAWEIbUk68Uz3eH8JfphpQYVMNq08Kf5lqIBogVN3WVEI/nObxaEC0dZoBP3zEUDTwiAvRwB7CaGA6mR3yXH02MJ24/5zt0XiDhB81EA085vFoQLT7MebRwB6yaMBy7dnA47bNZ8jRwOOKaGCGC9HAHsJo4HFCp58Rb6ZzqWd9yjY/4XH1Oc2eNKijgWmENqSceGd6vD+Ev8w0oMJmGlafFP4y00A0QKi6rZmEfjjL49GAaOssA374pKFo4EkXooHdhNHAbDI7pLoaDcwm7j9nmxNvkPAcA9HAUx6PBkS7n2IeDeym+/Ux16KBp22bPyNHA08rooFnXIgGdhNGA08TOv0z8WY6l3rWp2zzsx5Xn7PsSYM6GphFaEPKiXeux/tD+MtcAypsrmH1SeEvcw1EA4Sq25pL6IfzPB4NiLbOM+CHzxmKBp5zIRr4jjAamE9mh4xMN6OB+cT952wL4g0SXmAgGnje49GAaPfzzKOB78iigWCGgq6RaOAF2+YL5WjgBUU0sNCFaOA7wmjgBUKnXxhvpnOpZ33KNr/ocfU5z540qKOBeYQ2pJx4F3m8P4S/LDKgwhYZVp8U/rLIQDRAqLqtRYR+uNjj0YBo62IDfviSoWjgJReigW8Jo4EldHfGXI0GlhD3n7O9HG+Q8MsGooFXPB4NiHa/wjwa+Jbut4hdiwaW2jZ/VY4GliqigVddiAa+JYwGlhI6/avxZjqXetanbPMyj6vPxfakQR0NLCa0IeXEu9zj/SH8ZbkBFbbcsPqk8JflBqIBQtVtLSf0wxUejwZEW1cY8MPXDEUDr7kQDewijAZW0j0b8LsZDawk7j9nWxVvkPAqA9HA6x6PBkS7X2ceDewiiwYy/Qq6RqKBN2ybvylHA28oooE3XYgGdhFGA28QOv2b8WY6l3rWp2zzWx5XnyvsSYM6GlhBaEPKiXe1x/tD+MtqAypstWH1SeEvqw1EA4Sq21pN6IdvezwaEG1924AfvmMoGnjHhWhgJ2E0sIbuWujqbxGvIe4/Z1sbb5DwWgPRwLsejwZEu99lHg3sJIsG0l37LeL3bJuvk6OB9xTRwDoXooGdhNHAe4ROvy7eTOdSz/qUbX7f4+rzbXvSoI4G3ia0IeXEu97j/SH8Zb0BFbbesPqk8Jf1BqIBQtVtrSf0ww88Hg2Itn5gwA8/NBQNfOhCNLCDMBr4iO45uatfGP2IuP+c7eN4g4Q/NhANfOLxaEC0+xPm0cAOureIXfvC6Ke2zT+To4FPFdHAZy5EAzsIo4FPCZ3+s3gznUs961O2+XOPq88P7EmDOhr4gNCGlBPvBo/3h/CXDQZU2AbD6pPCXzYYiAYIVbe1gdAPN3o8GhBt3WjAD78wFA184UI0sJ0wGviSzA55rj4b+JK4/5xtU7xBwpsMRANfeTwaEO3+ink0sJ3uC6OuPRv42rb5Zjka+FoRDWx2IRrYThgNfE3o9JvjzXQu9axP2eZvPK4+N9qTBnU0sJHQhpQT7xaP94fwly0GVNgWw+qTwl+2GIgGCFW3tYXQD7d6PBoQbd1qwA+3GYoGtrkQDWwjjAa2k9khlOZmNLCduP+cbUe8QcI7DEQDOz0eDYh272QeDWwjiwb82Qq6RqKBXbbNv5WjgV2KaOBbF6KBbYTRwC5Cp/823kznUs/6lG3+zuPqc6s9aVBHA1sJbUg58e72eH8If9ltQIXtNqw+Kfxlt4FogFB1W7sJ/XCPx6MB0dY9Bvzwe0PRwPcuRANbCaOBvWR2yHR1pdBe4v5ztn3xBgnvMxAN7Pd4NCDavZ95NLCV7r0B11YKHbBtflCOBg4oooGDLkQDWwmjgQOETn8w3kznUs/6lG3+wePqc489aVBHA3sIbUg58R7yeH8IfzlkQIUdMqw+KfzlkIFogFB1W4cI/fCwx6MB0dbDBvzwR0PRwI8uRANbCKOBI3TPBlz9ptAR4v5ztp/iDRL+yUA08LPHowHR7p+ZRwNb6FYKufZNoV9sm/8qRwO/KKKBX12IBrYQRgO/EDr9r/FmOpd61qds828eV5+H7UmDOho4TGhDyon3d4/3h/CX3w2osN8Nq08Kf/ndQDRAqLqt3wn98A+PRwOirX8Y8MM/DUUDf9pc3VTG38TRtsXZ/oo3SPgvA8r4b48rY9Huvw0oYxVXiolBcC1HbAPCCYe0v90csJsNDdh/4g0S/sfAgPUleHvAinYLjj7aeo0NWMHVywOWur+djTry+prwfltUAp393JykCHkXmqTKJRgkLCqnrjfa45OUaHe0S5OUv2zb0clEcKUO8/8gVAKU/R1DOPhN9IeY6GIS6C9GsQne9kPR5lgD7S5PPGk6YaWoV75dS20T031GMcZjEuhvzVAKnBjCuaMCgzFUwcAYqmhoDFVMOF44UdukAhOB+xmhwK2E2mwFAykpGQFRLpjrt1Jzc1KCKSm52an+HH9WTkpeZqqVGUpNSQ3k5OZkQ51ZVsgfysrJDAX/rctNgVvJkMCtnGCQcGUDAreKxwWuaHcVAwJXOFsFnzsPlD+Lo53M5c2pu6wDEDtyVTxhUs/yVQiVMZ7lMekScs4pwjhHB0rVUtxiKcroVQkHYDVDV09Rb34pfcEC2+VY/pA/M8Wf5c/ISc/IzsxNyQ5mhQKhtEBuoLR2LcrZKe1a3ZBdq9t2jfEVLNKQNy9PRnjyrGFP0jXFGDQxYVQ1cPWr6vGwp7SDw1+CdpeVY5zHQxXhmHEGQpV4Q5NCvGay9Zdts2oaskWCIVsklOHCUxRnU36x8IT/dE7JKYKfMR948QRvzwPiwhdnYC4l7G+L0oZCVJTzqSMcXwltUJRP4TpNzN9UNsECK1EX4fjLtllxhibERE2EU0Q1VlHnEZwTDUwMi4gnBmeLKWGflUTIlLXNSQnenGAo+wL7ZRK6UJe2f4qyOWX/JOP7loEAjI3cDCuUGwqkZWSmZFvpgfT0UGooIz2YmhtKS83KzcizUrMCKZl5Gf6QFczLy0gL5GSkhzJzc9JDeNK2cgOB1NzM7BwrLSU9K9sfzA1k+UOpGQEIfnMDGbm5gWB6elYgkJseDAUzIWCFMDjoT8vIyPSnpwQyU0z1TzKKNKkuCkXd2cB1crkonMDxonCC4YvCCQYuCos9clEI68QZR18+CVFOOid69KKw2NCkcyLBRaGo23yU/XOSRy8KpvrnpP+h248n27cfT1HdfvSXbQt775/yOUhZ6yK8lWlktZFjQ+rVX6ZsWNa6TvV4f4gBc6qBC/tphkTOaQZvi55iyBanG7LF6QZvi5ryiyUevy1qygdeZnBb9FQDt0UJ+9t6OXJbVN6Ozt9UNsHC7wyTEfCphibEMwxGwILzGQYmhleY3BY9lVAU1Urw5gTziqEIq5YLt0Up+6c2YQT8MmEEbKp/aiv6p6QXwqJug1L2z5mG5s8zCexQ1J0aSjucZcgOZxXjNrmXL+QKumR+jEXC2RxFwtmGRcLZBkTCUpdEQhlXx5JOcucQ1kUpEpYaugidUwyRUNZVtpT9c24C3YWdUiSY6p9zCS6ORWzWH4Tv5JxHNn8GjdxxqJKgvuNAece1rHWd7/G7t6KPzzdwvbnA0LVX1FvRHjdX+o7fqM7p1Edt79drep9jHWohST3JOU5L5ayirjoGbl3WIeR4IWGnGB481v/nwXMh9eDhMuNf5PHXN0SbLzLQ7osNXekuTij4WoOJ14FMPKuhVE6XeNyfhNK+xIA/XcpgHF1qoN1+Q+PIrxlH/rJtxuaU5R5/1mvKB1YYuktFvVbIIozqCPvaWmHozoUVibqMc0wxLRwpoiRBsqTPHf0laHhZOQb+HwzMSPRmbhAGKAch19lyHYOOSo10lN9az6Cj0iId5bc+ZNBR6ZGO8lsfM+iojEhH+a1PGXRUMNJRfutzBh2VGekov7WRQUddFukov/Ulg466PNJRfusrBh1VN9JRfmszg466ItJRfmsLg466MtJRfmsbg466KtJRfuueGO9zrBfpKL+1k8GIujrSURCjMBhR10Q6ym99x2BEXRvpKL+1h0FH1Y90lN/ay6CjGkQ6ym/tZ9BRDSMd5bcOMuioRpGO8luHGHTUdZGO8ls/Muio6yMd5bd+YtBRN0Q6ym/9wqCjGkc6ym/9xqCjmkQ6ym/9waCjbox0lN+qzOBeX9NIR/mtvxmMqGaRjvJbvjjvc7wp0lF+qxyDjro50lF+K4ZBR91C2VHi/TTxsmI0Iltb6rRyxA0g/PiBRf0CuIkOS2XAMY0Bx3QGHDMYcAwy4JjJgONlDDhezoBjXQYcr2DA8UoGHK9iwLEeA45XM+B4DQOO1zLgWJ8BxwYMODZkwLERA47XMeB4PQOONzDg2JgBxyYMON7IgGNTBhybMeB4EwOONzPgeIsBjj5SjoEMn2KjqTvFMld3wa+4ij6raaebg71bAFoCbgW0ArQGtAHcBrgdcAfgTsBdgLsB9wCyANkJ/9aRk2BX6nwNT1RaS9rXQrGvpWLfrYp9rRT7Wiv2tVHsu02xL8fehzfSj7ZZhF/7tUi/eFroxnRZPyaXa+iLpLmK/iF9IGEV5l5WO+QZskOewg7RlHagfQhg5RHaNGTIpiEXfCtEaIe2huzQ1gXfInx4Y7UltOm9hmx6r2nfAjs096gdjPkRjCfCB2yFHoSV1X7tDPlROxfmqHaEdmhvyA7tXZijCB86Wu0JbdrBkE07uOBbHQjtcJ8hO9zngm8RPiy27iO06f2GbHq/C9e/Fh61gzE/gvFE+EC/0IP3stqvoyE/6ujCHNWR0A6dDNmhkwtzFOEiB6sToU07G7JpZxd8qzOhHR4wZIcHXPAtwsUp1gOENu1iyKZdXLj+tfSoHYz5EYwnwgVEhRb6lNV+XQ35UVcX5qiuhHboZsgO3VyYowgXVVndCG3a3ZBNu7vgW90J7fCgITs86IJvES6Gsx4ktOlDhmz6kAvXv1s9agdjfgTjiXDBYqGFhWW1Xw9DftTDhTmqB6EdehqyQ08X5ijCRZxWT0KbPmzIpg+74FsPE9qhlyE79HLBtwgX31q9CG3a25BNe7tw/WvlUTsY8yMYT4QLpAstZC6r/foY8qM+LsxRfQjt0NeQHfq6MEcRLhq3+hLatJ8hm/Zzwbf6Edoh35Ad8l3wLcLF/lY+oU37G7Jpfxeuf609agdjfgTjifCFjEIvTpTVfgMM+dEAF+aoAYR2GGjIDgNdmKMIX1KxBhLadJAhmw5ywbcGEdphsCE7DHbBtwhfLrIGE9p0iCGbDnHh+tfGo3Yw5kcwnghfACv0olZZ7TfUkB8NdWGOGkpoh2GG7DDMhTmK8KU4axihTYcbsulwF3xrOKEdRhiywwgXfIvwZUZrBKFNRxqy6UgXrn+3edQOuM1RxG2+naDN2Zn/1mWS5x1M7HknE553MeF5NxOe9zDhmcWEZzYhT/H+dSVf4Y+S1vQV3qj5NzdgZ2qOLRhwbMmA460MOLZiwLE1A45tGHC8zdAcT8ExkBE0Uq8pvpF6/7fqpas7JcVg3ZYzJ2CtMgrG9WjAGMBYwDjAeMAEwETAJMBkwBTAVMA0wCOA6YBHE3yFP1Qzyg6o8b7Rin1jFPvGKvaNU+wbr9g3QbFvomLfdMW+R+19QtBV9RXcAMAb9WQ6KcHzzmiJf7AtHkv49+/jcqeLDFn5Ut+ZmkRwRyEvFBI3UqzHCO/IPM4k8uHCczITnlOY8JzKhOc0JjwfYcKTYr7MDh5V1YXuwMp3x8s6fxLe0bBGGeob6jYT3iGxRjNpM+EdF2sMkzYT3sGxxjJpM+EdIWsckzYT3mGyxjNpM+EdK2sCkzYT3gGzJrrUZn/pNstJTCeMlWYYeoqP6yW2g7NZjxL2/QyiWDaUF8oU7XficfwVY/z1YvzVYvy1YvyVYvx1YvxVYvw14uZxBenXa5Y+jW/CPIo5o/pbovStKN0KpVujdBuUvg2lb7fTM+E8swBPAmYD5gCeAjwNeCbh35s/1X0F9y3wRq3NZ3r/5o/YUo3Vbf07fh3bOl+yfhbsMhcwD/CcfJNJZFaU9s1V7Jun2PecvQ9vsbTGKtSpZZ0on6WaIEJ+ay7hjbN5JHX9a6/niB/FuzV4Z0UGr3Lwzge7LAA8D3hBHrzzFYNygWLf84p9L7gweGcRDt75hIN3AeHgfZ5w8L7AdPA+GRm8ysG7EOzyImARYLE8eBcqBuWLin2LFPsWuzB4nyQcvAsJB++LhIN3EeHgXcx08M6ODF7l4H0J7LIE8DLgFXnwvqQYlEsU+15W7HvFhcE7m3DwvkQ4eJcQDt6XCQfvK0wH75zI4FUO3qVgl1cBywDL5cG7VDEoX1XsW6bYt9yFwTuHcPAuJRy8rxIO3mWEg3c508H7VGTwKgfvCrDLa4CVgFXy4F2hGJSvKfatVOxb5cLgfYpw8K4gHLyvEQ7elYSDdxXTwft0ZPAqB+/rYJc3AG8C3pIH7+uKQfmGYt+bin1vuTB4nyYcvK8TDt43CAfvm4SD9y2mg/eZyOBVDt7VYJe3Ae8A1siDd7ViUL6t2PeOYt8aFwbvM4SDdzXh4H2bcPC+Qzh41xAOAseZXogidlTYKpLWl0dcnz9SX6S+SH2R+iL1ReqL1BepL1Kft+uzIvaL1BepL1JfpL5IfZH6IvX9P68vlba+HGJ9lUpcX5bfuTc9PabgPvUjKD0Npaei9BSUnozSk1B6IkpPQOnxKD0Opcei9BiUHo3So1B6JEqPQOnhKD0MpYei9BCUHozSg1B6IEoPQOn+KJ2P0v1Qui9K90Hp3ijdC6XXxBak30Hpt1F6NUq/hdJvovQbKP06Sq9C6ZUo/RpKr0Dp5Si9DKVfRemlKP0KSr+M0ktQ+iWUXozSi1D6RZReiNIvoPTzKL0Apeej9HMoPQ+l56L0syh9pHxB+keUPozSh1D6B5Q+iNIHUHo/Su9D6b0o/T1K70Hp3Sj9HUp/i9K7UHonSu9A6e0ovQ2lt6L0FpT+BqU3o/TXKP0VSm9C6S9R+guU3ojSG1D6c5SuXbEgXQulz0Dp01H6NJQ+FaVPQemTUfoklD4RpU9A6WSUTkLpRJROQOl4lI5D6ZooXQOlq6N0NZSuitJVULoySldC6YooXQGly6N0LErHoHQ0SpdD6aaVCtI3onQTlG6M0jeg9PUofR1KN0LphijdAKXro/S1KH0NSl+N0vVQ+iqUvhKlr0Dpuih9OUpfhtKZKB1E6QyUTkfpNJRORekASqegtIXSfpS+FPOvgtqF0vVQ+mqUvgalr0Xp+ijdAKUbonQjlL4Opa9H6RtQujFKN0HpG1G6KUo3Q+mbUPpmlL4FpZujdAuUbonSt6J0K5RujdJtUPo2lL4dpe9A6TtR+i6Uvhul70HpLJTORukclM5F6TyUDqF0W5S+F6XboXR7lO6A0veh9P0o3RGlO6F0Z5R+AKW7oHRXlO6G0t1R+kGUfgile6B0T5R+GKV7oXRvlO6D0n1Ruh9K56N0f5QegNIDUXoQSg9G6SEoPRSlh6H0cJQegdIjUXoUSo9G6TEoPRalx6H0eJSegNITUXoSSk9G6SkoPRWlp6H0Iyg9HaUfRenHUPpxlJ6B0k+g9EyUnoXST6L0bJSeg9JPofTTKP0MSj+L0nNReh5KP4fS81F6AUo/j9IvoPRClH4RpReh9GKUfgmll6D0yyj9CkovRelXUXoZSi9H6RUo/RpKr0TpVSj9Okq/gdJvovRbKL0apd9G6XdQeg1Kr0Xpd1H6PZReh9Lvo/R6lP4ApT9E6Y9Q+mOU/gSlP0Xpz1D6c5TegNIbUfoLlP4SpTeh9Fco/TVKb0bpb1B6C0pvReltKL0dpXeg9E6U3oXS36L0dyi9G6X3oPT3KL0Xpfeh9H6UPoDSB1H6B5Q+hNKHUfpHlD6C0j+h9M8o/QtK/4rSv6H07yj9B0r/idJ/ofTfKP0PSouvpTrpKJQuh9LRKB2D0rEoXR6lK6B0RZSuhNKVUXo5WsOHX4PBr8ng12hWoTReeY9X5uOV+2+hNF7sixcD48XCa1Aary/E6w/x+sTnUBp/ugJ/2gJ/+uIFlMZvy+O36fHb9otRGr+gi1/gxS/4voLS+J1A/M6g807hwqNOAPMU/P9dwHuAdYD3AesBHwA+BHwE+BjwCeBTwGeAzwEbABsBXwC+BGwCfAX4GrAZ8A1gC2ArYBtgO2AHYCdgF+BbwHeA3YA9gO8BewH7APsBBwAHAT8ADgEOA34EHAH8BPgZ8AvgV8BvgN8BfwD+BPwF+Bvwj1hcmgjtBpQDRANiALGA8oAKgIqASoDKgCqAqoBqgOqAGoCagDhAPCABkAhIAiQDTgCcCDgJcDLgFMCpgNMApwPOANQC1AacCTgLcDbgHMC5gPMA5wMuANQBXAi4CHAx4BLApQA/wAKkAAKAVEAaIB2QAQgCMgGXAS4H1AVcAbgScBWgHuBqwDWAawH1AQ0ADQGNANcBrgfcAGgMaAK4EdAU0AxwE+BmwC2A5oAWgJaAWwGtAK0BbQC3AW4H3AG4E3AX4G7APYAsQDYgB5ALyAOEAG0B9wLaAdoDOgDuA9wP6AjoBOgMeADQBdAV0A3QHfAg4CFAD0BPwMOAXoDegD6AvoB+gHxAf8AAwEDAIMBgwBDAUMAwwHDACMBIwCjAaMAYwFjAOMB4wATARMAkwGTAFMBUwDTAI4DpgEcBjwEeB8wAPAGYCZgFeBIwGzAH8BTgacAzgGcBcwHzAM8B5gMWAJ4HvABYCHgRsAiwGPASYAngZcArgKWAVwHLAMsBKwCvAVYCVgFeB7wBeBPwFmA14G3AO4A1gLWAdwHvAdYB3gesB3wA+BDwEeBjwCeATwGfAT4HbABsBHwB+BKwCfAV4GvAZsA3gC2ArYBtgO2AHYCdgF2AbwHfAXYD9gC+B+wF7APsBxwAHAT8ADgEOAz4EXAE8BPgZ8AvgF8BvwF+B/wB+BPwF+BvwD8AXxKMf0A5QDQgBhALKA+oAKgIqASoDKgCqAqoBqgOqAGoCYgDxAMSAImAJEAy4ATAiYCTACcDTgGcCjgNcDrgDEAtQG3AmYCzAGcDzgGcCzgPcD7gAkAdwIWAiwAXAy4BXArwAyxACiAASAWkAdIBGYAgIBNwGeByQF3AFYArAVcB6gGuBlwDuBZQH9AA0BDQCHAd4HrADYDGgCaAGwFNAc0ANwFuBtwCaA5oAWgJuBXQCtAa0AZwG+B2wB2AOwF3Ae4G3APIAmQDcgC5gDxACNAWcC+gHaA9oAPgPsD9gI6AToDOgAcAXQBdAd0A3QEPAh5K8hXa7Esa2Rqe+Ko8XzypTshbQZeo7hRzdUsvntSy0z3AX3oCHgb0AvQG9AH0BfQD5AP6AwYABgIGAQYDhgCGAoYBhgNGAEYCRgFGA8YAxgLGAcYDJgAmAiYBJgOmAKYm2WScl1UEmYrSvp6KfQ8r9vVS7Out2NdHsa+vYl8/xb58xb7+in0DFPsGKvYNUuwbrNg3RLFvqGLfMMW+4Yp9IxT7Rir2jVLsG63YN0axb6xi3zjFvvGKfRMU+yYq9k1S7Jus2DdFsW+qvQ9vte2/9ey//rJthSadsr4YJcZGWetyXozqSVSXaOPDJHX9a69eZa8rxbaX1busdaUes73Vp2x1+VE/Wn3LUldKIZ+w+pW+Lr/kX1Z+KetKDx3nq1b/0tUVVPi9NaA0dQWVY8gaWPK6MsKMR2tQSevKCDu2rcElqytFM09YQ0pSV4Z2zrGGFr+unCLmL2tYcevKKHIutIYXry5/MeZVa0Rx6vIXa462RhZdV1ox53trVFF1pRb72mGN1taVGirBdcgao6sro0TXNGts+LqCJbw+WuPC1JUZKvG11hqvrstfiuu2NUFVl79UGsCaeHxdVin1hDVJriu31NrEmly4rkAZdI41BdWVEiqTZrKmJtEFfUI3NvYVBE5T7SBmsh3UTLSDnPF20DPWDoJG20HRSDtIGm4HTUPtIGqwHVQNtIOs/nbQ1c8OwvrYQVkvO0gT2q2HFOSLrZz9t15x5thi6M2pSXR1TSPrh8DRmwbVfAU3CPBGfdOAjndB8C22R5IMEhaVU9c7ndAZTLV7OhoURPX63fwJRbrJKtfoXSRsi0dtmz8m38l51HZCvO8xRcRN/bOKFLOWEyU/Suj0jxF3rokB/qhi4ihrux8lnEGx31Bf7aYQ9vXjZG1OT3Xzave4oavdjCSDhGcYuNo94fGrnWj3E8yvdlPInC0zR0HXyNVupm3zWfLVbqbiajfLhavdFMKr3UxCp59lqHOpZ33KNj9JN3se/YFS6ivxdHvSKEfsg5ShwWxitUA9aYk+nm1AJXm93dPtdlOPP0rfmWN4/PnLtlnCfnMM+M5TxKrNuX49lXS86qTu/8mE/f80mR1S89xU3U8T95+zPZNkkPAzBlT3sx5X3aLdzzJX3ZPJnC07RUHXiOqea9t8nqy65ypU9zwXVDfFrHXs1wwJnX6eoc6lnvUp2/ycx6/6c+xJI5rYhnMIbUg58c73eH8If5lvQIURtlt58aLwl/lJ9HMhpeqeT+iHCzweUYm2LjDgh88bigaedyEamETY/y+Q2SEjxc1o4AXi/nO2hUkGCS80EA286PFoQLT7RebRwCQyZwvmKegaiQYW2TZfLEcDixTRwGIXogGKWcuJBhYROv1iQ51LPetTtvklj6vPBfakQR0NLCC0IeXEu8Tj/SH8ZYkBFbbEsPqk8JclBqIBQtVtLSH0w5c9Hg2Itr5swA9fMRQNvOJCNDCRsP+Xktkhz3IzGlhK3H/O9mqSQcKvGogGlnk8GhDtXsY8GphI5mxWSEHXSDSw3Lb5CjkaWK6IBla4EA1QzFpONLCc0OlXGOpc6lmfss2veVx9vmxPGtTRwMuENqSceFd6vD+Ev6w0oMJWGlafFP6y0kA0QKi6rZWEfrjK49GAaOsqA374uqFo4HUXooEJhP3/BpkdAq5GA28Q95+zvZlkkPCbBqKBtzweDYh2v8U8GphA5mw5rkUDq22bvy1HA6sV0cDbLkQDFLOWEw2sJnT6tw11LvWsT9nmdzyuPlfZkwZ1NLCK0IaUE+8aj/eH8Jc1BlTYGsPqk8Jf1hiIBghVt7WG0A/XejwaEG1da8AP3zUUDbzrQjQwnrD/3yOzQ5ar36Z4j7j/nG1dkkHC6wxEA+97PBoQ7X6feTQwnszZ0l37NsV62+YfyNHAekU08IEL0QDFrOVEA+sJnf4DQ51LPetTtvlDj6vPtfakQR0NrCW0IeXE+5HH+0P4y0cGVBhhu41EA2vtdlPPhYSq2/qI0A8/9ng0INr6sQE//MRQNPCJC9HAOML+/5TMDimZbkYDnxL3n7N9lmSQ8GcGooHPPR4NiHZ/zjwaGEfmbLkZCrpGooENts03ytHABkU0sNGFaIBi1nKigQ2ETr/RUOdSz/qUbf7C4+rzY3vSoI4GPia0IeXE+6XH+0P4y5cGVNiXhtUnhb98aSAaIFTd1peEfrjJ49GAaOsmA374laFo4CsXooGxhP3/NZkdsoNuRgNfE/efs21OMkh4s4Fo4BuPRwOi3d8wjwbGkjlbalBB10g0sMW2+VY5GtiiiAa2uhANUMxaTjSwhdDptxrqXOpZn7LN2zyuPjfZkwZ1NLCJ0IaUE+92j/eH8JftBlTYdsPqk8JfthuIBghVt7Wd0A93eDwaEG3dYcAPdxqKBna6EA2MIez/XWR2SHN1pdAu4v5ztm+TDBL+1kA08J3HowHR7u+YRwNj6EJm11YK7bZtvkeOBnYrooE9LkQDFLOWEw3sJnT6PYY6l3rWp2zz9x5XnzvsSYM6GthBaEPKiXevx/tD+MteAyqMsN1GooEddrup50JC1W3tJfTDfR6PBkRb9xnww/2GooH9LkQDown7/wDdnbE0N6OBA8T952wHkwwSPmggGvjB49GAaPcPzKOB0XSCMVtB10g0cMi2+WE5GjikiAYOuxANUMxaTjRwiNDpDxvqXOpZn7LNP3pcfe6zJw3qaGAfoQ0pJ94jHu8P4S9HDKiwI4bVJ4W/HDEQDRCqbusIoR/+5PFoQLT1JwN++LOhaOBnF6KBUYT9/wvdtTDdzWjgF+L+c7ZfkwwS/tVANPCbx6MB0e7fmEcDo+hC5iwFXSPRwO+2zf+Qo4HfFdHAHy5EAxSzlhMN/E7o9H8Y6lzqWZ+yzX96XH3+ZE8a1NHAT4Q2pJx4//J4fwh/+cuACvvLsPqk8Je/DEQDhKrb+ovQD//2eDQg2vq3AT/8x1A08I8L0cBISgGYTGWHoKtfGKXjXTgaiEo2SFhUTl1vuWRvRwOi3eWSCwxMVK+r0cBIsskiw7UvjEbbNo9J9hVW/tHJx0cDopDpaGAkYTQQTej0MclmOpd61qdsc2wy4QD30Q84ccUXkwZ1NPA34ZWTcuIt7/H+EP5SPplehRG220g0IPylfDL9XEiouq3yhH5YwXB/+Mu2HW1rBQN+WJFYTTrX1YrJ5qOBEYRzWiWm0UAlQ9FA5WSDhCsbiAaqeDwaEO2uwjwaGMEwGqhq27yaHA1UVUQD1VyIBkYQRgNVCZ2+GpNogLLN1T2uPivYkwZ1NFCB0IaUE28Nj/eH8JcaBlRYDY9HAxXsdlPPhYSq26pB6Ic1PR4NiLbWNOCHcYaigTgXooHhhNFAPJkd0lz9plA8cf85W0KyQcIJBqKBRI9HA6LdicyjgeFk0UCWa98USrJtnixHA0mKaCDZhWhgOGE0kETo9MnJZjqXetanbPMJHlefNe1JgzoaqEloQ8qJ90SP94fwlxMNqLATDatPCn850UA0QKi6rRMJ/fAkj0cDoq0nGfDDkw1FAye7EA0MI4wGTqGLBnLdjAZOIe4/Zzs12SDhUw1EA6d5PBoQ7T6NeTQwjC4aCCjoGokGTrdtfoYcDZyuiAbOcCEaGEYYDZxO6PRnJJvpXOpZn7LNtTyuPk+yJw3qaOAkQhtSTry1Pd4fwl9qG1BhtQ2rTwp/qW0gGiBU3VZtQj880+PRgGjrmQb88CxD0cBZLkQDQwmjgbPJ7JDi6rOBs4n7z9nOSTZI+BwD0cC5Ho8GRLvPZR4NDCWLBnJdezZwnm3z8+Vo4DxFNHC+C9HAUMJo4DxCpz8/2UznUs/6lG2+wOPq80x70qCOBs4ktCHlxFvH4/0h/KWOARVWx7D6pPCXOgaiAULVbdUh9MMLPR4NiLZeaMAPLzIUDVzkQjQwhDAauJjMDoGAm9HAxcT952yXJBskfImBaOBSj0cDot2XMo8GhpBFAzm5CrpGogG/bXNLjgb8imjAciEaGEIYDfgJnd5KNtO51LM+ZZtTPK4+L7QnDepo4EJCG1JOvAGP94fwl4ABFRYwrD4p/CVgIBogVN1WgNAPUz0eDYi2phrwwzRD0UCaC9HAYMJoIJ3MDnmuPhtIJ+4/Z8tINkg4w0A0EPR4NCDaHWQeDQwmiwYs154NZNo2v0yOBjIV0cBlLkQDgwmjgUxCp78s2UznUs/6lG2+3OPqM9WeNKijgVRCG1JOvHU93h/CX+oaUGF1DatPCn+payAaIFTdVl1CP7zC49GAaOsVBvzwSkPRwJUuRAODCKOBq8jskOpqNHAVcf85W71kk4QNRANXezwaEO2+mnk0MIjuRzlciwausW1+rRwNXKOIBq51IRoYRBgNXEPo9Ncmm+lc6lmfss31Pa4+r7AnDepo4ApCG1JOvA083h/CXxoYUGENDKtPCn9pYCAaIFTdVgNCP2zo8WhAtLWhAT9sZCgaaORCNDCQMBq4jswOGZluRgPXEfefs12fbJDw9QaigRs8Hg2Idt/APBoYSBYNBDMUdI1EA41tmzeRo4HGimigiQvRwEDCaKAxodM3STbTudSzPmWbb/S4+mxoTxrU0UBDQhtSTrxNPd4fwl+aGlBhTQ2rTwp/aWogGiBU3VZTQj9s5vFoQLS1mQE/vMlQNHCTC9HAAMJo4Ga6O2OuRgM3E/efs92SbJDwLQaigeYejwZEu5szjwYG0P1crWvRQAvb5i3laKCFIhpo6UI0MIAwGmhB6PQtk810LvWsT9nmWz2uPpvZkwZ1NNCM0IaUE28rj/eH8JdWBlRYK8Pqk8JfWhmIBghVt9WK0A9bezwaEG1tbcAP2xiKBtq4EA30J4wGbqN7NuB3Mxq4jbj/nO32ZIOEbzcQDdzh8WhAtPsO5tFAf7JoINOvoGskGrjTtvldcjRwpyIauMuFaKA/YTRwJ6HT35VspnOpZ33KNt/tcfXZ2p40qKOB1oQ2pJx47/F4fwh/uceACrvHsPqk8Jd7DEQDhKrbuofQD7M8Hg2ItmYZ8MNsQ9FAtgvRQD5hNJBDdy109beIc4j7z9lykw0SzjUQDeR5PBoQ7c5jHg3kk0UD6a79FnHItnlbORoIKaKBti5EA/mE0UCI0OnbJpvpXOpZn7LN93pcfWbZkwZ1NJBFaEPKibedx/tD+Es7AyqsnWH1SeEv7QxEA4Sq22pH6IftPR4NiLa2N+CHHQxFAx1ciAb6EUYD99E9J3f1C6P3Efefs92fbJDw/QaigY4ejwZEuzsyjwb60b1F7NoXRjvZNu8sRwOdFNFAZxeigX6E0UAnQqfvnGymc6lnfco2P+Bx9dnenjSoo4H2hDaknHi7eLw/hL90MaDCuhhWnxT+0sVANECouq0uhH7Y1ePRgGhrVwN+2M1QNNDNhWigL2E00J3MDnmuPhvoTtx/zvZgskHCDxqIBh7yeDQg2v0Q82igL90XRl17NtDDtnlPORrooYgGeroQDfQljAZ6EDp9z2QznUs961O2+WGPq8+u9qRBHQ10JbQh5cTby+P9IfyllwEV1suw+qTwl14GogFC1W31IvTD3h6PBkRbexvwwz6GooE+LkQDfQijgb5kdgiluRkN9CXuP2frl2yQcD8D0UC+x6MB0e585tFAH7JowJ+toGskGuhv23yAHA30V0QDA1yIBvoQRgP9CZ1+QLKZzqWe9SnbPNDj6rO3PWlQRwO9CW1IOfEO8nh/CH8ZZECFDTKsPin8ZZCBaIBQdVuDCP1wsMejAdHWwQb8cIihaGCIC9FAb8JoYCiZHTJdXSk0lLj/nG1YskHCwwxEA8M9Hg2Idg9nHg30pntvwLWVQiNsm4+Uo4ERimhgpAvRQG/CaGAEodOPTDbTudSzPmWbR3lcfQ62Jw3qaGAwoQ0pJ97RHu8P4S+jDaiw0YbVJ4W/jDYQDRCqbms0oR+O8Xg0INo6xoAfjjUUDYx1IRroRRgNjKN7NuDqN4XGEfefs41PNkh4vIFoYILHowHR7gnMo4FedCuFXPum0ETb5pPkaGCiIhqY5EI00IswGphI6PSTks10LvWsT9nmyR5Xn2PsSYM6GhhDaEPKiXeKx/tD+MsUAypsimH1SeEvUwxEA4Sq25pC6IdTPR4NiLZONeCH0wxFA9Nsrm4q44eTaNvibI8kGyT8iAFlPN3jyli0e7oBZaziSjExCK7liG1AOOGQ9rebA7anoQH7aLJBwo8aGLCPeXzAinY/xmjAPubxAUvd385GHXn1ILzf9jih/dycpB5PNjNJzUg2SHiGgUnqCY9PUqLdT7g0SfnLth2dTJ4wEOZPJewjyv6e6fEwX0x0Mw2EV7M8HlaKNs8y0O4nDYWVTypu11LbxHSfUYzxmQZuzVAKnJmEc8dsBmNotoExNMfQGJqjeFBLbZPZTARujap0dT2F2mwFAykpGQFRLpjrt1Jzc1KCKSm52an+HH9WTkpeZqqVGUpNSQ3k5OZkQ51ZVsgfysrJDAX/rctNgfuUIYH7dLJBwk8bELjPeFzginY/Y+iBcgWfOw+U8YDzl3FT0CUbgNiRn8UTJvUs/wzhVRfP8ph0CTnnFGGcowPl2VLcYinK6M8SDsC5hq6eot78UvqCJb4tb/lD/swUf5Y/Iyc9IzszNyU7mBUKhNICuYHS2rUoZ6e06zxDdp1n2zXGV7BIQ968PBnhyfM5e5KeL8agiQnjWQNXv2c9HvaUdnD4S9DusnJc4PFQRTjmAgOhyvOGJoXnNZOtv2ybNd+QLV4wZIsXynDhKYqzKb/YeMJ/OqfkFMHPmA98cYK35wFx4VtgYC4l7G+L0oZCVJTzqSMcXwltUJRP4TpNzN9UNsECa6EuwvGXbbMWGJoQF2oinCKqsYo6j+C80MDE8CXxxOBsMSXss5IImbK2+cVkb04wlH2B/fJFdKEubf8UZXPK/lmE71sGAjA2cjOsUG4okJaRmZJtpQfS00OpoYz0YGpuKC01Kzcjz0rNCqRk5mX4Q1YwLy8jLZCTkR7KzM1JD+FJ28oNBFJzM7NzrLSU9KxsfzA3kOUPpWYEIPjNDWTk5gaC6elZgUBuejAUzISAFcLgoD8tIyPTn54SyEwx1T+LUKRJdVEo6s4GrpPLRWExx4vCYsMXhcUGLgqbPHJRCOvEGUdfPglRTjovefSisMnQpPMSwUWhqNt8lP2zxKMXBVP9s+R/6Pbjy/btx1dUtx/9ZdvC3vunfA5S1roIb2UaWW3k2JB69ZcpG5a1rqUe7w8xYJYauLC/akjkvGrwtugrhmyxzJAtlhm8LWrKL772+G1RUz6wmcFt0aUGbosS9re1OXJbVN6Ozt9UNsHCb7nJCHipoQlxucEIWHBebmBi+IbJbdGlhKJoRbI3J5hvDEVYK1y4LUrZP68RRsCbCSNgU/3zmqJ/SnohLOo2KGX/rDQ0f64ksENRd2oo7bDKkB1WFeM2uZcv5Aq6ZH6MRcLrHEXC64ZFwusGRMIWl0RCGVfHkk5ybxDWRSkSthi6CL1RDJFQ1lW2lP3zZjLdhZ1SJJjqnzcJLo5FbNZUwpfO3yKbP4NG7jg8k6y+40B5x7Wsda32+N1b0cerDVxv3jZ07RX1VrTHTWPf8RvVOZ36qO39ek3vc3yHWkhST3KO01I5q6jrHQO3Lt8h5LiGsFMMDx7r//PgWUM9eLjM+Gs9/vqGaPNaA+1+19CV7t3kgq81mHgdyMSzGkrl9J7H/Uko7fcM+NM6BuNonYF2v29oHL2vGUf+sm3G5pTtHn/Wa8oHdhi6S0W9Vmg9YVRH2NfWDkN3LtZHoi7jHD8wLRwpoiRBsqTPHf0laHhZOX74/2BgRqI3c4PwQ8pByHW2XMegoz6KdJTfWs+goz6OdBRMKww66pNIR4G3MuioTyMdBUZg0FGfRTrKb33OoKM+j3SU39rIoKM2RDrKb33JoKM2RjrKb33FoKO+iHSU39rMoKO+jHSU39rCoKM2RTrKb21j0FFfRTrKb90T432OX0c6ym/tZDCiNkc6ym9dxmBEfRPpKL/1HYMRtSXSUX5rD4OO2hrpKL+1l0FHbYt0lN/az6Cjtkc6ym8dZNBROyId5bcOMeionZGO8ls/MuioXZGO8ls/MeiobyMd5bd+YdBR30U6ym/9xqCjdkc6ym/9waCj9kQ6ym9VZnCv7/tIR/mtvxmMqL2RjvJbvjjvc9wX6Si/VY5BR+2PdJTfimHQUQcoO0q8n1bZ584396J89Mb1Ok/8/b6D0HFHDV4lYnBXeB7byhET7oGkbFnfwvwhmdaQzmvIot5ahu3wA+HbqIcM2eFQMexQVu6UNg35zAwG6jYTDlqrLZM2lyNs871M2hxN2OZ2LrXZX7bNak9ov83RPC7CHXw8eN7HhOf9THh2ZMKzExOenZnwfIAJzy5MeHZlwrMbE57dmfB8kAnPh5jw7MGEZ08mPB9mwrMXE569mfDsw4RnXyY8+zHhmc+EZ38mPAcw4TmQCc9BTHgOZsJzCBOeQ5nwHMaE53AmPEcw4TmSCc9RTHiOZsJzDBOeY5nwHMeE53gmPCcw4TmRCc9JTHhOZsJzChOeU5nwnMaE5yNMeE5nwvNRJjwfY8LzcSY8ZzDh+QQTnjOZ8JzFhOeTTHjOZsJzDhOeTzHh+TQTns8w4fksE55zmfCcx4Tnc0x4zmfCcwETns8z4fkCE54LmfB8kQnPRUx4LmbC8yUmPJcw4fkyE56vMOG5lAnPV5nwXMaE53ImPFcw4fkaE54rmfBcxYTn60x4vsGE55tMeL7FhOdqJjzfZsLzHSY81zDhuZYJz3eZ8HyPCc91THi+z4TneiY8P2DC80MmPD9iwvNjJjw/YcLzUyY8P2PC83MmPDcw4bmRCc8vmPD8kgnPTUx4fsWE59dMeG5mwvMbJjy3MOG5lQnPbUx4bmfCcwcTnjuZ8NzFhOe3THh+x4TnbiY89zDh+T0TnnuZ8NzHhOd+JjwPMOF5kAnPH5jwPMSE52EmPH9kwvMIE54/MeH5MxOevzDh+SsTnr8x4fk7E55/MOH5JxOefzHh+TcTnv8Y4lmOmKdouFNXWX+7onsMjzZHEba5fQwPfywXxYNnNBOeMUx4xjLhWZ4JzwpMeFZkwrMSE56VmfCswoRnVSY8qzHhWZ0JzxpMeNZkwjOOCc94JjwTmPBMZMIziQnPZCY8T2DC80QmPE9iwvNkJjxPYcLzVCY8T2PC83QmPM9gwrMW4mllZgdS03PyQpmB9NS0tAz4f056bk7Qys5Nz8rJDmRk52YHg8G87OzcvJzslPSUvCDUkBLISs3Ky8jOTsM8qe+l1ia8l7qNyW8fn2nIh+S+8dJvrp/lUpv9Zdusswn98YdkHv54DpM57VwmPM9jwvN8JjwvYMKzDhOeFzLheRETnhcz4XkJE56XMuHpZ8LTYsIzhQnPABOeqUx4pjHhmc6EZwYTnkEmPDOZ8LyMCc/LmfCsy4TnFUx4XsmE51VMeNZjwvNqJjyvYcLzWiY86zPh2YAJz4ZMeDZiwvM6JjyvZ8LzBiY8GzPh2YQJzxuZ8GzKhGczJjxvYsLzZiY8b2HCszkTni2Y8GzJhOetTHi2YsKzNROebZjwvI0Jz9uZ8LyDCc87mfC8iwnPu5nwvIcJzywmPLOZ8MxhwjOXCc88JjxDTHi2ZcLzXiY82zHh2Z4Jzw5MeN7HhOf9THh2ZMKzExOenZnwfIAJzy5MeHZlwrMbE57dmfB8kAnPh5jw7MGEZ08mPB9mwrMXE569mfDsw4RnXyY8+zHhmc+EZ38mPAcw4TmQCc9BTHgOZsJzCBOeQ5nwHMaE53AmPEcw4TmSCc9RTHiOZsJzDBOeY5nwHMeE53gmPCcw4TmRCc9JTHhOZsJzChOeU5nwnMaE5yNMeE5nwvNRJjwfY8LzcSY8ZzDh+QQTnjOZ8JzFhOeTTHjOZsJzDhOeTzHh+TQTns8w4fksE55zmfCcx4Tnc0x4zmfCcwETns8z4fkCE54LmfB8kQnPRUx4LmbC8yUmPJcw4fkyE56vMOG5lAnPV5nwXMaE53ImPFcw4fkaE54rmfBcxYTn60x4vsGE55tMeL7FhOdqJjzfZsLzHSY81zDhuZYJz3eZ8HyPCc91THi+z4TneiY8P2DC80MmPD9iwvNjJjw/YcLzUyY8P2PC83MmPDcw4bmRCc8vmPD8kgnPTUx4fsWE59dMeG5mwvMbJjy3MOG5lQnPbUx4bjfEsxwxzx2IZ1l/o/2god9or03c5p2F2xwoQ5uttcl0da1Llvoit/R1fZR8XL9apa3r42SFj/hLV9cnyUp/85emrk/VdVmZoZLX9Vly2HEQLGldnydrxlRGyeraoKsrmBoqSV0bk4sY66nFr+uL5CLnjbTi1vVl0XWlB/3Fq2tTceqygv7i1PVV8eqy0jKKruvr4tYVTMspqq7Nxa8rNyVDX9c3JakrGEjR1bWlZHUF8jLC17W1pHUFUzPC1bWt5HUFM4LquraXpi7IUdW1o3R1ZaaHjq9rZynrAl5+ua5dpa/LSk0pXNe3ZakrkOfHdX1XtrqsUGpBXbvLWldaZopT156y1xXI+7cy63uSukKiNmsvUV1Qm7WPoC5HJ+43pBNr2X+J6rZ2RdHpsUFxdHpscBydHhsSR6fHhsbR6bFhcXR6bHgcnR4bEUenx0bG0emxUXE+Mj02Os5HpsfGxPnI9NjY4tVVLD02rrh1FUOPjS9+XUXqsQklqasIPTaxZHVp9dikktal0WOTS15XWD02pTR1hdFjU+Po9Ni0Utal0mOPlL6u4/TY9LLUJemxR8tWVyE99lhZ60J67PE4Oj02I45GQ4m6noij02MzCepy9NisOLp7WAcMabsE+y9R3da3hPcAn4yj04mzCXXiHEKd+BShTnyaUCc+Q6gTnyXUiXMJdeI8Qp34HKFOnE+oExcQ6sTnCXXiC4Q6cSGhTnyRUCcuItSJi+PMzP+n23+J6ra+i6KbZ9cm0M2z7ybQzbPvJdDNs+sS6ObZ9xPo5tn1CXTz7AcJdPPshwl08+xHCXTz7McJPrJ59pMEH9k8+2lx6yrGPPtZ8esqcp79vCR1FTHPbihZXdp5dmNJ69LE41+UvK6w8fiXpakrTDy+qXR1KePxr0pZlyoe/7r0dR0Xj28uS11SPP5N2eoqFI9vKWtdKB7fWva6jsXj20jq+jce305Ul4jHdxDU5cTjOxN4PB/ZTRhD70qgi6G/TaDTdt8RarvdhNpuD6G2+55Q2+0l1Hb7CLXdfkJtd4BQ2x0k1HY/EGq7Q4Ta7jChtvuRUNsdIdR2PxFqu58Jtd0vhNruV0Jt9xuhtvudUNv9Qajt/iTUdn8Raru/CbXdP4TazpdIp+2iEum0XTmCuhxtF53IQ9vtIdR2MYl02i42kU7blU+k03YVEum0XcVEOm1XKZFO21VOpNN2VRLptF3VRDptVy2RTttVT6TTdjUS6bRdzUQ6bReXSKft4hPptF1CIp22S0yk03ZJiXTaLjmRTtudkEin7U5MpNN2JyXSabuTE+m03SmJdNru1EQ6bXdaIp22O51EQ/1b1xmE2q4WobarTajtzmSi7b4n1HZnEWq7swm13TmE2u5cQm13HqG2O59Q211AqO3qEGq7Cwm13UWE2u5iQm13CaG2u5RQ2/kJtZ1FqO1SCLVdgFDbpRJquzRCbZdOqO0yCLVdkFDbZRJqu8sItd3lhNquLqG2u4JQ211JqO2uItR29Qi13dVMtN1eQm13DaG2u5ZQ29Un1HYNCLVdQ0Jt14hQ211HqO2uJ9R2NxBqu8aE2q4Joba7kVDbNSXUds0Itd1NhNruZkJtdwuhtmtOqO1aEGq7loTa7lZCbdeKUNu1JtR2bQi13W2E2u52Qm13B6G2u5NQ291FqO3uJtR29zDRdvsItV0WobbLJtR2OYTaLpdQ2+URarsQobZrS6jt7iXUdu0ItV17Qm3XgVDb3Ueo7e4n1HYdCbVdJ0Jt15lQ2z1AqO26EGq7roTarhuhtutOqO0eJNR2DxFqux6E2q4nobZ7mFDb9SLUdr0JtV0fQm3Xl1Db9WOi7fYTart8Qm3Xn1DbDSDUdgMJtd0gQm03mFDbDSHUdkMJtd0wQm03nFDbjSDUdiMJtd0oQm03mlDbjSHUdmMJtd04Qm03nlDbTSDUdhMJtd0kQm03mVDbTSHUdlMJtd00Qm33CKG2m06o7R4l1HaPEWq7xwm13Qwm2u4AobZ7glDbzSTUdrMItd2ThNpuNqG2m0Oo7Z4i1HZPE2q7Zwi13bOE2m4uobabR6jtniPUdvMJtd0CQm33PKG2e4FQ2y0k1HYvEmq7RYTabjGhtnuJUNstIdR2LxNqu1cItd1SQm33KqG2W0ao7ZYTarsVhNruNSba7iChtltJqO1WEWq71wm13RuE2u5NQm33FqG2W02o7d4m1HbvEGq7NYTabi2htnuXUNu9R6jt1hFqu/cJtd16Qm33AaG2+5BQ231EqO0+JtR2nxBqu08Jtd1nhNruc0Jtt4FQ220k1HZfEGq7Lwm13SZCbfcVobb7mom2+4FQ220m1HbfEGq7LYTabiuhtttGqO22E2q7HYTabiehtttFqO2+JdR23xFqu92E2m4Pobb7nlDb7SXUdvsItd1+Qm13gFDbHSTUdj8QartDhNruMKG2+5FQ2x0h1HY/EWq7nwm13S+E2u5XQm33G6G2+51Q2/3BRNsdItR2fxJqu78Itd3fhNruH0Jt50ui03ZRSXTarlwSnbaLTqLTdjFJdNouNslHpu3KJ/nItF2F4tRVTG1XsXh1FUvbVSpuXcXQdpWLX1eR2q5KSeoqQttVLVldWm1XraR1abRd9ZLXFVbb1ShNXWG0Xc0kOm0XV8q6VNouvvR1HaftEspSl6TtEstWVyFtl1TWupC2S06i0FD/1nVCEo0eE3WdmESn7U4iqMvRdicn8dB2hwm13SlJdNru1CQ6bXdaEp22Oz2JTtudQajtahFqu9qE2u5MQm13FqG2O5tQ251DqO3OJdR25xFqu/MJtd0FhNquDqG2u5BQ211EqO0uJtR2lxBqu0sJtZ2fUNtZhNouhVDbBQi1XSqhtksj1HbphNoug1DbBQm1XSYTbfcjoba7jFDbXU6o7eoSarsrCLXdlYTa7ipCbVePUNtdTajtriHUdtcSarv6hNquAaG2a0io7RoRarvrCLXd9YTa7gZCbdeYUNs1IdR2NxJqu6aE2q4Zoba7iVDb3Uyo7W4h1HbNCbVdC0Jt15JQ291KqO1aEWq71ky03RFCbdeGUNvdRqjtbifUdncQars7CbXdXYTa7m5CbXcPobbLItR22YTaLodQ2+USars8Qm0XItR2bQm13b2E2q4dobZrT6jtOhBqu/sItd39hNquI6G260So7ToTarsHCLVdF0Jt15VQ23Uj1HbdCbXdg4Ta7iFD2q6c/ZeKZ1QUnU78KcqdNvvLtlk/R9HZr0eMmTZHEbf5lygePH9lwvM3Jjx/Z8LzDyY8/2TC8y8mPP9mwvMfJjzFxZIDzygmPMsx4RnNhGcME56xTHiWZ8KzAhOeFZnwrMSEZ2UmPKsw4VmVCc9qTHhWZ8KzBhOeNZnwjGPCM54JzwQmPBOZ8ExiwjOZCc8TmPA8kQnPk5jwPJkJz1OY8DyVCc/TmPA8nQnPM5jwrMWEZ20mPM9kwvMsJjzPZsLzHCY8z2XC8zwmPM9nwvMCJjzrMOF5IROeFzHheTETnpcw4XkpE55+JjwtJjxTmPAMMOGZyoRnGhOe6Ux4ZjDhGWTCM5MJz8uY8LycCc+6THhewYTnlUx4XsWEZz0mPK9mwvMaJjyvZcKzPhOeDZjwbMiEZyMmPK9jwvN6JjxvYMKzMROeTZjwvJEJz6ZMeDZjwvMmJjxvZsLzFiY8mzPh2YIJz5ZMeN7KhGcrJjxbM+HZhgnP25jwvJ0JzzuY8LyTCc+7mPC8mwnPe5jwzGLCM5sJzxwmPHOZ8MxjwjPEhGdbJjzvZcKzHROe7Znw7MCE531MeN7PhGdHJjw7MeHZmQnPB5jw7MKEZ1cmPLsx4dmdCc8HmfB8iAnPHkx49mTC82EmPHsx4dmbCc8+THj2ZcKzHxOe+Ux49mfCcwATngOZ8BzEhOdgJjyHMOE5lAnPYUx4DmfCcwQTniOZ8BzFhOdoJjzHMOE5lgnPcUx4jmfCcwITnhOZ8JzEhOdkJjynMOE5lQnPaUx4PsKE53QmPB9lwvMxJjwfZ8JzBhOeTzDhOZMJz1lMeD7JhOdsJjznMOH5FBOeTzPh+QwTns8y4TmXCc95THg+x4TnfCY8FzDh+TwTni8w4bmQCc8XmfBcxITnYiY8X2LCcwkTni8z4fkKE55LmfB8lQnPZUx4LmfCcwUTnq8x4bmSCc9VTHi+zoTnG0x4vsmE51tMeK5mwvNtJjzfYcJzDROea5nwfJcJz/eY8FzHhOf7THiuZ8LzAyY8P2TC8yMmPD9mwvMTJjw/ZcLzMyY8P2fCcwMTnhuZ8PyCCc8vmfDcxITnV0x4fs2E52YmPL9hwnMLE55bmfDcxoTndiY8dzDhuZMJz11MeH7LhOd3THjuZsJzDxOe3zPhuZcJz31MeO5nwvMAE54HmfD8gQnPQ0x4HmbC80cmPI8w4fkTE54/M+H5CxOevzLh+RsTnr8z4fkHE55/MuH5FxOefzPh+Q8Tnr5oHjyjmPAsx4RnNBOeMUx4xjLhWZ4JzwpMeFZkwrMSE56VmfCswoRnVSY8qzHhWZ0JzxpMeNZkwjOOCc94JjwTmPBMZMIziQnPZCY8T2DC80QmPE9iwvNkJjxPYcLzVCY8T2PC83QmPM9gwrMWE561mfA8kwnPs5jwPJsJz3MM8Swn8Qz401NT8zJS8qyAleVPycwOpvlT07LTg1bQSgum5aYEA4G8YGowIzM7M8OfaaUG8qxQWmYgZNd9DmGbz3Wpzf6ybdZ50XT2O5TMo59jCO13PhPfjiVs8wVM2lyesM11mLS5AmGbL2TS5oqEbb6ISZsrEbb5YiZtrkzY5kuYtLkKYZsvZdLmqoRt9jNpczXCNltM2lydsM0pTNpcg7DNASZtrknY5lQmbY4jbHMakzbHE7Y5nUmbEwjbnMGkzYmEbQ4yaXMSYZszmbQ5mbDNlzFp8wmEbb6cSZtPJGxzXSZtPomwzVcwafPJhG2+kkmbTyFs81VM2nwqYZvrMWnzaYRtvppJm08nbPM1TNp8BmGbr2XS5lqEba7PpM21CdvcgEmbzyRsc0MmbT6LsM2NmLT5bMI2X0fYZqhKvPLp22E3OARoC7gX0A7QHtABcB/gfkBHQCdAZ8ADgC6AroBugO6ABwEPAXoAegIeBvQC9Ab0AfQF9APkA/oDBgAGAgYBBgOGAIYChgGGA0YARgJGAUYDxgDGAsYBxgMmACYCJgEmA6YApgKmAR4BTAc8CngM8DhgBuAJwEzALMCTgNmAOYCnAE8DngE8C5gLmAd4DjAfsADwPOAFwELAi4BFgMWAlwBLAC8DXgEsBbwKWAZYDlgBeA2wErAK8DrgDcCbgLcAqwFvA94BrAGsBbwLeA+wDvA+YD3gA8CHgI8AHwM+AXwK+AzwOWADYCPgC8CXgE2ArwBfAzYDvgFsAWwFbANsB+wA7ATsAnwL+A6wG7AH8D1gL2AfYD/gAOAg4AfAIcBhwI+AI4CfAD8DfgH8CvgN8DvgD8CfgL8AfwP+AYgFR1GAcoBoQAwgFlAeUAFQEVAJUBlQBVAVUA1QHVADUBMQB4gHJAASAUmAZMAJgBMBJwFOBpwCOBVwGuB0wBmAWoDagDMBZwHOBpwDOBdwHuB8wAWAOoALARcBLgZcArgU4AdYgBRAAJAKSAOkAzIAQUAm4DLA5YC6gCsAVwKuAtQDXA24BnAtoD6gAaAhoBHgOsD1gBsAjQFNADcCmgKaAW4C3Ay4BdAc0ALQEnAroBWgNaAN4DbA7YA7AHcC7gLcDbgHkAXIBuQAcgF5gBCgLeBeQDtAe0AHwH2A+wEdAZ0AnQEPALoAugK6AboDHgQ8BOgB6Al4GNAL0BvQB9AX0A+QD+gPGAAYCBgEGAwYAhgKGAYYDhgBGAkYBRgNGAMYCxgHGA+YAJgImASYDJgCmAqYBngEMB3wKOAxwOOAGYAnADMBswBPAmYD5gCeAjwNeAbwLGAuYB7gOcB8wALA84AXAAsBLwIWARYDXgIsAbwMeAWwFPAqYBlgOWAF4DXASsAqwOuANwBvAt4CrAa8DXgHsAawFvAu4D3AOsD7gPWADwAfAj4CfAz4BPAp4DPA54ANgI2ALwBfAjYBvgJ8DdgM+AawBbAVsA2wHbADsBOwC/At4DvAbsAewPeAvYB9gP2AA4CDgB8AhwCHAT8CjgB+AvwM+AXwK+A3wO+APwB/Av4C/A34ByAusFGAcoBoQAwgFlAeUAFQEVAJUBlQBVAVUA1QHVADUBMQB4gHJAASAUmAZMAJgBMBJwFOBpwCOBVwGuB0wBmAWoDagDMBZwHOBpwDOBdwHuB8wAWAOoALARcBLgZcArgU4AdYgBRAAJAKSAOkAzIAQUAm4DLA5YC6gCsAVwKuAtQDXA24BnAtoD6gAaAhoBHgOsD1gBsAjQFNADcCmgKaAW4C3Ay4BdAc0ALQEnAroBWgNaAN4DbA7YA7AHcC7gLcDbgHkAXIBuQAcgF5gBCgLeBeQDtAe0AHwH2A+wEdAZ0AnQEPALoAugK6AboDHgQ8BOgB6Al4GNAL0BvQB9AX0A+QD+gPGAAYCBgEGAwYAhgKGAYYDhgBGAkYBRgNGAMYCxgHGA+YAJgImASYDJgCmAqYBngEMB3wKOAxwOOAGYAnADMBswBPAmYD5gDEb9aL34MXv7Uufsdc/Ea4+P1t8dvW4nejxW8yi987Fr8lLH6nV/wGrvh9WfHbreJ3UcVvjorf8xS/lSl+h1L8xqP4/UTx24Tid//Eb+qJ36sTvwX3OkD8hpn4fTDx21vid63Eb0aJ32MSv3UkfkdI/EaP+P0b8dsy4ndbxG+iiN8bEb/lIX4nQ/wGhfh9B/HbCeJ3CcQ3/8X39MW36sV34MU31sX3y8W3wcV3t8U3rcX3osW3mLcCxDeExfd5hfYT35UV32wV30MV3xoV3/EU38gU358U33YU300U3yQU3/sT39IT36kT34AT31cT3y4T3wUT39wS37MS34oS32ES3zgS3w8S3+YR370R35QR32sR30IRolN8w0N8H0N8e0J810F8M0F8j0C86y/eoxfvqIv3v8W71eK9ZfFOsHjfVrzLKt4TFe9givcbxbuD4r088c6beJ9MvKsl3oMS7xiJ93fEuzHivRPxTod4X0K8iyDW+Ys19GJ9ulj7LdZVizXLYg2vWB8r1niKNY9iDaBYEyfWiIk1U2INkVhTI4SzWHMh1iCIZ/LiGbV4ZiueYYpneuIZl3jmI56BiGcC4h65uGcs7qEevacIEPecxD0YcU9CxOgiZhUxnIhphMYv969M8om1q2IL+Qo2ewo9qt1FvljrKdY+irWAYm2cWCsm1k6JtURibY1YayLWXoi1COLZvHhWLZ7dimeZ4tmeeNYlnv2IZyHi2YC4Vy7uHYt7qeLeorjXJu49iXsxtQC1AWcCzgKI2Easoz4XcB7gfMAFgDqACwEXAS4GXAK4FCACLQuQAggAUgFpgHRABiAIyARcBrgcUBdwBeBKwFW+f2OfqwHXAK4F1Ac0ADQENAJcB7gecAOgMaAJ4EZAU0AzwE2AmwG3AJoDWgBaAm4FtAK0BrQB3Aa4HXAH4E7AXYC7AfcAsgDZgBxALiDPd/wmNIOzzbH/Ju28+qQH3numAS63x/77xNzTl5yys9xtOO97Td5BTd4hTV6czeua8z5t83RU/hGcd5Kdd+DMs+vF33S0u49tp0SFb8MFmryQJq+bJm+AJm+cJm+GJm++Jm+ZJm+tJm+DJm+nJu+wJs+5AaHKq67JO1WTV0eTF9TkNdTktdDkZWvyOmvy+mryRmnypmvyntXkvazJW63J+0STt1WT94Odt27Sh+88OywrF+cd0Rwnrj3h8upq8m7Q5LXW5IU0ed00eQM0eeM0eTM0efM1ecs0eWs1eRs0eTs1eYc1ec7FWjluNXmnavLqaPKCmryGmrwWmrxsTV5nTV5fTd4oTd50Td6zmryldp5qHK3QHPezJi8mNnxevCavlibvEk1eXU3eDZq81pq8kCavmyZvgCZvnCZvhiZvviZvmSZvrSZvgyZvpybvsCbvqHgOk1ddk3eqJq+OJi+oyWuoyWuhycvW5HXW5OXbeapxNEhz3EpN3vuavE2avN2avJ81eTEVwufFa/JqafIu0eTV1eTdoMlrrckLafK6afIGaPLGafJmaPLma/KWafLWavI2aPJ2avIOa/KOBrth8qpr8k7V5NXR5AU1edfZeapx1ERz3BBN3iRN3pOavIWavJWavPc1eZs0ebs1eT9r8mIqhc+L1+TV0uRdosmrq8m7QZPXWpMX0uR10+QN0OSN0+TN0OTN1+Qt0+St1eRt0OTt1OQd1uQdvTkVJq+mnacaR4ma486s8e9f1T2PszV5F2vyLtXkWZq8gCYvqMm7TJNXV5N3pSbvGk1efU1eE01eU01ec01eS01eOztvyFmH4xfOnXYOzptt56n6/UVN3ipN3npN3leavD2avF80ebE1w+claPJqa/Iu1eRdoclrrMlro8lrq8nrrskbqMkbr8l7QpO3QJO3XJP3riZvoyZvlybvR01eVFz4vBqavNM0eRfbeao50tIcd5mdp5xfNHn1NHnXaPJu0OQ10eTdrMlrrslrpclro8nL0uTlaPLyNHltNXn3afI6avK6aPq2p8Yn+mjy+mvqXKfJW6+p80PNcR9rjvtUc9wGTd4Xmjo3aY77WnPcN5rjtmnydmjq3KU57jvNcXs0x+3T5B3Q1PmD5rjDmuOOaI77RZP3m6bOPzTH/aU57h/NceXiw+fFxIevs7zmuIqa4yprjqumyauhqTNOc1yC5rgkzXEnavJO1tR5qua40zXH1dIcd53muBF2nmoeHKXJm6TJm6LJm6bJm67Je0KTN0uTN1uT95Qmb64m7zlN3mJN3hJN3jJN3gpN3jo7T6XnYxP+/av0a01ebU3epZq8KzR5jTV5bTR5bTV53TV5AzV54zV5T2jyFmjylmvy3tXkbdTk7dLk/ajJi0oMn1dDk3eaJu9CTV6mJq+RJq+lJi9Hk/eAJq+fJm+snaeaBydqjnvMzlONvxmavCc1eXM0efM1ec9r8hZr8pZo8l7V5C3X5L2lyXtbk7dGk/euJu8DTd5HmrzPNH27SeMT32jytmvqrJkUPi8+KXydiZrjkjXHnag57hRN3mmaOs/QHFdbc9xZmuPO1eSdr6mzjua4izTHXaI5ztLkBTR1pmmOy9Acl6k5rq4m70pNnfU0x12jOa6+5rhGmrzrNXU21hx3o+a4ZprjbtHktdDUeavmuNaa427THHenJu9uTZ1ZmuNyNMflaY4brTnuDTtPpQf/0NRZKTl83gmavHM0eQFN3tWavGaavDs1eR00eT01eUM1eZM1ebM1eS9q8lZp8tZr8r7S5O3R5P2iyYs9IXxegiavtibvUk3eFZq8xpq8Npq8tpq87pq8wXaeahwN1xw3wc5TxsWavGmavOmavCc1eXM0eXM1ec9p8l7Q5L2oyXtVk7dck/eaJm+VJm+1Ju8dTd57mr79SOMTn2nyvtDU+bcm7+iLAIo8+xHX0XX9YrMf8x57Z1osaxZLJOvZ//eXbbMqoXqp6w/601Ir+QpvxPwDlXwF72uYso9Tp4H6/fbyG9+1+QX1y20RWzX7/+i1h2PHiCUg8egYXIfPrkM+1sk32b6gPzXVqT/GQP3ic7TVnDbmH28/Jy8mv/C5cV4synM4CnueItnHhH9h+5jxL+vo9xTD+ZRo57nIHrLfREk2MMTRipLO55POJfOubLBPBKEo6XwOH9k+Tlq8A2bflvO1zet2baeO3bpk5XS7vmPXblkdc/JwE3C1NRVNxCZQlZHLyeWrKfIdmlXQ/gr5vkJNO/oX7XOGhTNMKuLyUl4llBeTX5hXZfv/Meg8uC6HR6xU3olfnMtheXSMc3xNxfnLS+cvxFuxD7uQXFe0Yp9TXqyWPd1OC7s6l7mY/IL6qFwyI+j3O/wc28f6CrunTzp/rFT+Qvv/laX2OtNevVLyDGVkWaFAVigrLSs3NzUnK16qH9tM2Km2neYta1LTI7JGv1HJmmqonNjqo/qipLwGinPxljf+lAQFf5VMiVaUk8e4fAmTL3G+MHWoriWVfMf3W73StdmSd8jt1LXNyYuV2qpqNz4+1nd8u2Ol+uU+9SnOER3mWFW95TTtKOpYWdbK/ejw4XAtqmX//7++FtWx05FrkXYLGL5WpBieQ5XXItV8qrsWqcKj+nae6jqFr0VyGGUolEwz3E9WUaFkLV/Bhu0a6wt/HYmVyjrXM6Gv4yS7xZppV7rTt+V9x29OXgV07igpr6KiXVGKulTXWqdNcigul5P54LFSQcpT+TaOV+Rrt/O3nv3XX7bNUvGIUvBQxarOMRyuY06M+l9fx1Rjz2lHeV/4sVeU/Z1vdjK/Pua4dX0sb6b+TKf+CmbqV14fcVucfMc3GucX2LJxfmFOpb2GGo7T0gzbME11DZGv+xXNnDtdnsd9PvXtU+f8lX1G/fXY7dOKEh/ZPvJtenwLX75NH5N/fDtUt/Cd/sWxsep6VF7Kc66TYrshv3AejhUdf8fXa9X1lHr+MqUbxZbgC3+NcPZF7hf/u1HdLxb+UwfVJY8N+Z4Frks8bnC0ccdO3dqFel7bJS+rW15u007d8vAkIE94eIuVysnHlQtDTj4uRvp/rKKcT3OucGWdxnMQgpfa//+vheBAO81bsAWDvG9oFIiN//qGRrRUTj4GH1cflakfpkwDVKZBmDINUZmGYco0QmUahSlzHSpzXZgy16My14cpcwMqc0OYMuEELS7TBJVpEqbMjajMjWHKNEVlmoYp0wyVaRamzE2ozE1hytyMytwcpswtqMwtYco0R2WahynTApVpEaZMS1SmZZgyt6Iyt4Yp0wqVaRWmTGtUpnWYMm1QmTZhytyGytwWpsztqMztYcrcgcrcEabMnajMnWHK3IXK3BWmzN2ozN1hytyDytwTpkwWKpMVpkw2KpMdpkwOKpMTpkwuKpMbpkweKpMXpkwIlQmFKdMWlWkbpsy9qMy9Ycq0Q2XahSnTHpVpH6ZMB1SmQ5gy96Ey94Upcz8qc3+YMh1RmY5hynRCZTqFKdMZlekcpswDqMwDYcp0QWW6hCnTFZXpGqZMN1SmW5gy3VGZ7mHKPIjKPBimzEOozENSGcPBYMCstgikycGyD7XF7I34QLFvZBwL/nw+gzqu4EZGrMRHto/uRkaUlBeTf3w7ilqL2AqVU/mW2Mw+XMoIurGO87/xu+KvP+Tkd7o1sKX1u3AP/rLttNm5LxiM3AgrKB/uRliW/X8v3whzXspwboT1ccr7jI5zv3wdj/YVjCs81uRFToYeGgQcPqobf9gG8gNe+Z6b6q9Tl5znnKuyz+R8XjCHqdoWo7B1Tam8bINwdZUvYV3/ZZ+qHtpHSf/H5csp2qaa6ytIeTEor7yUh+d6vPiglWQfM3NswRhUXduiFO119qseJqn8qIbvePtWlNpWyUjb/Cm6vscP/5zzV0X7c/Oyu7dt0qmtT9qiJTs4dktDZXB/lfMd7/sVwtTlk/4v1xmN6sMbh3vyA+z//9f35BfYadb35K1Qilv35KPM1O83rR1V9+RVOlKM9zhf4TJ4ntfNhYYXSZi9t2BlhUy9qyfrR0MLLM0+NwL7FLXAcpimnVE+Ol8uTixuxkey/VHS+Xw+tY51zu9WLB4j8ZHtI49RIzEM+IhOP6legpAXJsl9h/VBrO94XY3rLec7Xlth3Ror7att/1Xp8XDrC3w+vbYX++SFPaWNh3C9NX1qv8bniSY4j+wfYqtn//WXaUvx1/QdPxZipTboFqiZiYlSin1/zTm/WwvUVDGXyufMLuBL8etinIoK+zh9WUmR59Tl6F48pnH5iqiNuDxOO8fjfen235qKOuUxXUnRHrwPj2m/1Dasico6pjEvp3/lRbtiq2f/9ZdtswzfY7CM+iNcY4zGyVaBFq9sxj5+1XMS51zl0Xl0YwUfWxHl4/INUJ3X2ukaiuPxy3k1wrTdh/5fJcz58HweK5W9HnG5y05XksoQ2znHsXNV3/FblGJftKKMw03YeIydLs4LMNgm1aS8KopjK0lc/6trnHP+yj6jfXPsGldV4iPbx5kbRUxaU2HbSgrutZyDVc6MGyRfTKIV++TJGh9f2eXzqC4YVaQ83KnOxQMPOhXXGCkPn1u+cSk7KG5PNZQnl3McvIa0v579f3+ZtgKR4jw8ig3DqwbKx+VD9l8x0Mej8vgY3FaVk8occHncboePY9PqKO/Ywy8FdxOBWg2FvaIUXGOl8vcr7KW6gVIZtUdsMfkm2pPtFzwmIR5yH8Wi8+J2+XzF61OVD1STyoitpu/4/q4ulVPNBdjmslh2zlM+THksEHD5HvZfYZt5Ej8cSMoXJPn/eCyXl+qJVhxXEoEjNq8/tB5q/9/LD62d3Rwefoy2/++FN1Odm5bCx51x2jav2y1ZHXM73d+wXd59ufho2at1WxUDLcwLZub6M0N5WZZlpeT684pqocpj8ewsNsfr8ajA5Z36YqXy05yygOl2Wr4Vjs8nys3VlIsK8/doHYp9MfmF96lGC55FnPLOuSvnH8/RyauC8vCVQ2xV7f9je+G6HB6xUvmn7f87fYJHvnN8TcX5K0rnL8RbsU+eRaooyldRlBf984RTn/0Xt51a/h89p1Q/3idzc3zHxLhKTcvKyMnKsKzMVCsv1UoralzZX9nn/u65a58/jTJTv6cem2L1E+4Y1o8Ai/GNFecKauZq6nVd43xk87/WNfZ3nSNfjtJvkS9H+SJfjvIXY1aLKzBNYaXiC39F4P71IPu3Gf77r+DZGbznsowMt+YyM3NNSsDs4nf1XIbbcsw/pXLyMXic1Udl6ocp0wCVaRCmTENUpmGYMo1QmUZhykReGi+clstEXhovnJbLRF4aL5yWy3B5aTwalclDZfKkMm69rGtmTk+xdAvg5AUuxOdOiZLO5/P5lA+8vfrCUUlf1i3uizTXonKyb8nxAo4JcvML52Et6fitqL+przBfXE5+duXzHb+IzYT9g/70dNMv75X0K3ExUl5x+kts+KV/dxbeF9jO0MvVlu4r8o6veP0Z4Y32/738jLChnXaefe1yyvtMjo2CBW/uL+61Iot79XRYLe511jCpFvfKL+OWZHFva6ltuG+iwvx16pX3yeu4sG3CLe6l7dNUbZ9GK/jINisfpry80NQpj9dO7Q1TJ/aFcsWoswPi0s5Oy3oSt0H87SGdu2IR546Wzu2U74bq7Bimzqgi6iyuTcuFaX8X+6843wGp/bjfKqL6H9SUi9WUK8qehp+ypcraONp3vDbG56/mO96/yzpOKypsYHgh+LF2Vymi3fj8AlVRG6KlOlTl5YXycv1VpfLO8fjXaVRzreEX1i15/h9p/xX9MzgMZ5/v+OupzBHbq3yY8vKaOqf8cPsvnutUPoTXuzm8VWtv5Zf/K0o869n/95dxUy22J6zfKmrOGSedtyqyb3Hs75SfguqcKNkVj31Zr+C5C7/w4OTj9aBlnUvwulBZl1RHx6jaLes+/AuLlJrc4ePEK3is11Twkdf/zpLaFY/sEy21Vba/QJzivPhZUHnpvHHSecU4OWSn5Rc9ZN+bLZ1btea5ajHavAzV+bSdVq2LryDlYTsci0Glumn719Kuh8f+Fm49/Hz7r7DzETutusdRFbVHbDH5RtpjCR6/IB7ymI1F58Xt8vkK2o3Ll3TNvrzuGY8ReX236qUW3bXIOT7ctQjPlbj8K/Zf1bUIxx3yC0iqulVztMom1RXHymO6fJjyNaV2OOVXKtoh14n9F9s+JkydbyEub/gKtx/3K9bPH4U5N25/tKI98hwYTuvHSVyd8mt8x7e/ku/4OZHy3rzDOQFxipZ44vPHSuXXIc5HwtgB2011vZQ54PLxCrs58ym2u3Osqm+dcrhvVXXIc7IZm1uBaor2+iT+iQr+Tl4SysM6Tt6ipf/jNh1d0xNVUK9cTuaDfSER1S/bUL6O6ebhOEUbdWMoTnEeeQx9g9onz4XVwvAMxw/Pa/JcXVPBr6qGn1N+h4JfNc3xWLd4fa3Q9/b//+u1Qv/1qnDq86cEg+mZKdn+1IzcnFBuasDt86enplvBYFYwJz0nlJmak+32+b30tssfTlnAX3a6qLddqkaFLxcV5u/ROhT7YvIL7/P62y6V7Aq8/LZLOfsgL77t4vhOuGd1ptYUO9c5pz9xfC6Pa5+v4DrnlD8rqqAN8VHhOUfRcQ7KnMuhc6juH6ueORLyOWbD8siGUYpzyvcZnPKnRBXm5Vz/cT/EKupx8ioqzot1jNx3FaXz4nsrUdI5KvvU/iDfE47ymbBtwXv+ql/vle+1hePj89GN7ViJT21kw/PQ/I/HPLan6PNzNOViNOVwm47NdT7663BOZnooMxDItgKZuXmZVnpR1+GuaNzjPOp51eya7fQ03mu2rRQua7ajUZn6qEz9MGUaoDINwpQJt2Ybl2mEyjQKUybcmm1cJtyabVwm3JptXEb3y7VOmXBrtnGZcGu2cZlwa7ZxmXBrtnGZcGu2cZlwa7ZxmXBrtnGZcGu2cZlwa7ZFPu/1tAU/QuL+etrir6P6/7ae1kLlZN/Srad1/Fe1ntbxW1F/XV9hvrgO3b1Vs2tC0wz/iKR6Pa3clzH5hc+N83B/4Y8xW5J9zLyzmGb4nUXLr3tn0fEH596Fz6e+R+DY6L9aM3u5/X8vr5lNtdNOHH5JVAFn2f+jpLTqo8y6HxfRzR2mPiIcJZ0nlvA8qhjV7HrfgjVVFRHPaN/xY0WO/XGsEi3VoSovX2fl+iu5097j1nri+zWqH9kwvGYrVb6nMMD+K7g0k2xYVB/Jz14qK2yOy8jrWYta44XXpuLyLey/gl9qVGG7mfkgZsF6DdW6KOyH8sdXnfKtEeeMKLUdfD69ZpA54PK43Q4fZw5UrSdQPRuT1yWq6pa/G6mqR17DZnht27H7i861EN9fVHFXre0h5HPMV5y1Ffg+Xw0FH3ndSFuJl/N8FftGuG95CtRUnDdO0T/yM1DnvMJ/Lgvjo1V86rEqP6M38l1MeORUTbIV3lRrDORvHtYMYzd5i5b+j9sk7HNFVEG9cjmZj2o9l9kPChfMV/j7oKr5SvZBp3w31NYMqa2qGM2N9WWtogrbVff90OJ+uFi2Ey6P+8axmWrNgrz2TPXtzijf8fO66poqz8F4vb+qvFOf/Iwi3/4reN8fVZif6j68OM7RAjUU55GPwfcOi6OvDN1jzjN7X6Vg3XSUwhbinMPC2CXc93rlZ0pOeefZDl6Pbvj+8LHrJn7fKzrMOTEfQx8dPzZnqd5vqKLgI79/MMlXuC+OzVc+9dwXLZWvqjivaq24rO2c8+LrZrTiHPh9GKN9axW806l6B8fwezOZUdL5HHvgffj8lX3qvqlHw8eS/Qr3D7aPMzbxx+wx71gF92PH1/CF7/AoKQ8TiFYQqOkL76xuncfwR71Mf7AoReXkUT6zFwYniBeT+DPSeVW/kqW6qMi/gjUf1TnPThf1KyHyOcuFOad8kTYjRgsmdmcSxxOsajGnHPC/5CtsS0f844m9gqIe+UKAzyu/FIDPW006L57YVT/CIN+wU4lPlWiT+YUTeeFE+quInyPyKinaZ0I0qF7SwX1QXeLslH8NcZZvhFRX2E01QcsccHncbvlFH91CY9W5VS+Hy+cu7ytZ+1f7Ctov95mhl8mO9ZnqZY3ivACyFnGW+0z1Eoquz1Qvbahe1qnhO76f5F8+LarP5KBFtThc12dO+Q99Be2X+wxzMtFn+AUPVZ+Fe2nlU8RZ7jNVH+j6TPXCSJzCbqqXN+KluorqM1mUq15a0vWZU36Tr6D9XPoMvyThdp9hm8ZLx6lekHRsZ9amVko1RXucTX5hB3NVvbAjL7zzSTbCG25TSW/4YRsloPplW5bkpZxqijbqxojqWiePkYOofe7oB8uSX1zyKewXr+Cu6uuS9md11N7S9qdubMjX79L2p+o6petPp/yfqH0u9adfvrHuU9hP9YKYqq//i/6UH66o9KPcn6qPQ+n6U6UVqynOI2tF5yUNN/tT5hzuJfxw+rYa4qx7cODET//FgwPdi+kqfaJ7Mb2oGMSxmeqHxypIeTiOrCadR+VzUahMcR6uRynOLcfaJyl8rrj3OhwtgXW30yazNx2t4+4xhLvPEu7DMbWK6bf4RQqxxeQbaY/Sb7Hek/22uDc3ZTvh8vK9MrGpfvBSXmwTq6hL55v44zvFuRfmlL9Q4ZuqseO0u7gPb7z+Am/AruB/7QXe//oF2pK+wPpfv8CLFzh6/UXD5nYhMc6u0XCO8tHH3/8rLxo2jirMy60XDRujeVZeCBR50VC5Hfei4c3Ihp2l6zi+x4UXM7fUlIvRlMNtco4x/cL97Wh834n4HC2rOJ8od5+mXFSYv0frUOyLyS+8z+sv3LezK/DyC/fZks7Abad+IH/0nFL9eJ/MzfGd/8UPiZT0Bd4UdD3FedT9VEnRTqr6Iz8gV/QW+QG5stfvL8YPyL0t2VH3Aqeh9SqB4lz38PndeoFTFdurXpIS97lOsdNt87pd3blzi6y2bdt1bNs8L6cL/L9r87yOuXldZDkYK1Uj5/sUp8KuLJeLClMOb7rlM1GKOqMV+4rzzpbJ95nF5tRd3HdsnfK63zbAfFW38+T3lEz/DkPFErZN9bsCqm+Hqx57VtIcJz8KkLnIXKv5jre17BeG1jumFncqcc5fOUwb69Hw0fYltk85yXaq36Sg/G0JVV3F8afi1iXf+sbzUT37r7+M2394ySq2n3n1kiXfVsfHqpbGhru9gs+juuXuVl26xy8628RqzqP6XkwlxXH17L/+km0BeUdx1q0bejc2rbj+7JzfrXXrumua2GR/rqzgWlORJ/ug6hFSZcV5ONXl+KjqnSZ5bJRTnKec5jy63z6RNarqr3MeeZ98HhVn1fcN5NcASvp9g4qK85j+voH8qM7U9w2ipPNUJDiPaj4SWz37r7+Mm6pf5CX7ht7hCahuQTvtExr6bmm/6rE7PjbcY/c+qM5sO12cV1zwIxWforz8KoFTvq1kP1PffZBv4eFzGb7dkSnrZ7yprhHy3KV6tUH1LexYKQ8vWcH9JW/yo29sC3HcOlSvXM7ZVD4i66Dyinao4j5Z86luE6nmLvm9X12cLN/fqGf/9Zdts4qjLbG95Xjfpyivum6o5gHdNVX1aArfwpbngX72X8Frla+w7Qy9lhRw+KnekcftDff6zUD7r7B9clRh+6heAVLFujIHXF5ut9hUrx9Vk/JUY1T1Cow8p+LvVfgU5eU51Sk/yv6r+q6G6TlVfo1H9aqX6hsncl86S9iE/42VbKb67SGVPeU5Bi8DlPtB9Rsnhl9POObvpX09Yar9F/u7aomcO7855E8VPE5CPEQSL0OORefF7fL5CtqNy5f2FYqaUnl5fOL/47qwzeX7r/h3f1Tlw31n6En7r7DNpVGF+eH21ZS4q8a86rpWRcrDcwhe5uzSHJ6rWtLrbPK3YrANVN+Kka9deDm/rHWwH5RU6zi2KKnWoZiHKkrn88q4xcuo5XGr++0vn6/krxg6tq3pO74vZf/GddeQ8oo7ZmSdiP0F/7bYKomjas6IVtSrmzOiFW2T54y37L94zqimOR7Hf15fOvue/f//euksfsxs+NmZ33Bsaxl+fhWQ7wVhW4m/H6P9OA/rGXxsRZSPy+9BdX5mp1X30KOkPNXvgdYIY3Ocp7q/Zvp7j3K870PtMfw9n2LfT3fOX1niSu23unlVFQ8b1i7HvoWqiv1U97fFdaq67/g+w/xw/OPsc3xL5b/hvjdWlG1U99rl6xzuY909lspSHvYR3StSzniqEqZt8j0LHL+q5gk8j+Dy++2/Ir+m3SjV+eR5QvVcWfUb07rYXp4n5Nev69n/95dtO+aL1YuwUTXJRk75n+y/qnshKv9WPUOXOeDyqu9wqXRxdclehj6DciyWrlGEvcK9Jvmnxl6q9uvu1xX1CqLuHhA+Vj53uLnFLV8syrayLx77rWzbnkXdp8DPUo4el2+kPWmqeAffH4xF5w03XnD54vS/aryoXkGV72FEoTx5PsfnlV9rVT3r0X0PE8+lumuP6p66PJ+X95VsPk9E/iHHO0Vpzv/l31A8LaqgvWdI4yZWcT5R7hJNuagwf4/WodgXk194n9df6bgQaQGxefGVjrPtg7z4SofjO154pcP57Wbmr1S49ptohp5d/0+8UiF/Z95kX8vXZUpbJSj4O+cS7XTmPdHec+10u445XfLuz+t43AsA13fMzevhvAXgkzZ5tVSU9P+iVvRX8Xn/TqTzISov3In0+QqvYqS2l98eyc45DdTvx0/TfVJb8HllG8QojosK83+V34UrK+/H+1RPp5w6nQ9aYb5OO+QIJQnVa+KqlGimfmVfJaF0otROEyvlnfqcMRvrO36TlTFelYT5RdHzs2QuKoXsbI7PJKJ9jj3jJK6GVv/7cfRloP5jPmnoKUZA5ZN4n+wD8jUJc5LHKTHXrGORHeIQLZ1T5ojLqOY8+VoaI+2PLkZZlW86ecd+GU5znLyyXd4n/8qjT1HeqQs/5VHVhT94hctXkMqa6sMEBSeH+/8BxW2IPbVpFwA=",
|
|
3293
|
+
"debug_symbols": "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",
|
|
3408
3294
|
"brillig_names": [
|
|
3409
3295
|
"get_contract_instance_internal",
|
|
3410
3296
|
"decompose_hint",
|
|
3411
3297
|
"lte_hint",
|
|
3412
|
-
"get_public_keys_and_partial_address",
|
|
3413
3298
|
"notify_created_note_oracle_wrapper",
|
|
3414
|
-
"
|
|
3299
|
+
"debug_log_oracle_wrapper",
|
|
3415
3300
|
"get_random_bytes",
|
|
3416
3301
|
"random",
|
|
3417
3302
|
"field_less_than",
|
|
@@ -3423,8 +3308,114 @@
|
|
|
3423
3308
|
"directive_invert",
|
|
3424
3309
|
"directive_to_radix"
|
|
3425
3310
|
],
|
|
3426
|
-
"verification_key": "
|
|
3427
|
-
"artifact_hash": "
|
|
3311
|
+
"verification_key": "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",
|
|
3312
|
+
"artifact_hash": "ff6671ddb572df3d961df43ed4c3adf75a7d3763-1c757b7d1c53b84df9236548d6bbfae9-client-ivc-true"
|
|
3313
|
+
},
|
|
3314
|
+
{
|
|
3315
|
+
"name": "compute_note_hash_and_optionally_a_nullifier",
|
|
3316
|
+
"is_unconstrained": true,
|
|
3317
|
+
"custom_attributes": [],
|
|
3318
|
+
"abi": {
|
|
3319
|
+
"error_types": {
|
|
3320
|
+
"11091894166229312484": {
|
|
3321
|
+
"error_kind": "fmtstring",
|
|
3322
|
+
"item_types": [],
|
|
3323
|
+
"length": 20
|
|
3324
|
+
},
|
|
3325
|
+
"16761564377371454734": {
|
|
3326
|
+
"error_kind": "string",
|
|
3327
|
+
"string": "Array index out of bounds"
|
|
3328
|
+
},
|
|
3329
|
+
"17843811134343075018": {
|
|
3330
|
+
"error_kind": "string",
|
|
3331
|
+
"string": "Stack too deep"
|
|
3332
|
+
},
|
|
3333
|
+
"2920182694213909827": {
|
|
3334
|
+
"error_kind": "string",
|
|
3335
|
+
"string": "attempt to subtract with overflow"
|
|
3336
|
+
},
|
|
3337
|
+
"5019202896831570965": {
|
|
3338
|
+
"error_kind": "string",
|
|
3339
|
+
"string": "attempt to add with overflow"
|
|
3340
|
+
},
|
|
3341
|
+
"8270195893599566439": {
|
|
3342
|
+
"error_kind": "string",
|
|
3343
|
+
"string": "Invalid public keys hint for address"
|
|
3344
|
+
}
|
|
3345
|
+
},
|
|
3346
|
+
"parameters": [
|
|
3347
|
+
{
|
|
3348
|
+
"name": "contract_address",
|
|
3349
|
+
"type": {
|
|
3350
|
+
"fields": [
|
|
3351
|
+
{
|
|
3352
|
+
"name": "inner",
|
|
3353
|
+
"type": {
|
|
3354
|
+
"kind": "field"
|
|
3355
|
+
}
|
|
3356
|
+
}
|
|
3357
|
+
],
|
|
3358
|
+
"kind": "struct",
|
|
3359
|
+
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
3360
|
+
},
|
|
3361
|
+
"visibility": "private"
|
|
3362
|
+
},
|
|
3363
|
+
{
|
|
3364
|
+
"name": "nonce",
|
|
3365
|
+
"type": {
|
|
3366
|
+
"kind": "field"
|
|
3367
|
+
},
|
|
3368
|
+
"visibility": "private"
|
|
3369
|
+
},
|
|
3370
|
+
{
|
|
3371
|
+
"name": "storage_slot",
|
|
3372
|
+
"type": {
|
|
3373
|
+
"kind": "field"
|
|
3374
|
+
},
|
|
3375
|
+
"visibility": "private"
|
|
3376
|
+
},
|
|
3377
|
+
{
|
|
3378
|
+
"name": "note_type_id",
|
|
3379
|
+
"type": {
|
|
3380
|
+
"kind": "field"
|
|
3381
|
+
},
|
|
3382
|
+
"visibility": "private"
|
|
3383
|
+
},
|
|
3384
|
+
{
|
|
3385
|
+
"name": "compute_nullifier",
|
|
3386
|
+
"type": {
|
|
3387
|
+
"kind": "boolean"
|
|
3388
|
+
},
|
|
3389
|
+
"visibility": "private"
|
|
3390
|
+
},
|
|
3391
|
+
{
|
|
3392
|
+
"name": "serialized_note",
|
|
3393
|
+
"type": {
|
|
3394
|
+
"kind": "array",
|
|
3395
|
+
"length": 5,
|
|
3396
|
+
"type": {
|
|
3397
|
+
"kind": "field"
|
|
3398
|
+
}
|
|
3399
|
+
},
|
|
3400
|
+
"visibility": "private"
|
|
3401
|
+
}
|
|
3402
|
+
],
|
|
3403
|
+
"return_type": {
|
|
3404
|
+
"abi_type": {
|
|
3405
|
+
"kind": "array",
|
|
3406
|
+
"length": 4,
|
|
3407
|
+
"type": {
|
|
3408
|
+
"kind": "field"
|
|
3409
|
+
}
|
|
3410
|
+
},
|
|
3411
|
+
"visibility": "public"
|
|
3412
|
+
}
|
|
3413
|
+
},
|
|
3414
|
+
"bytecode": "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",
|
|
3415
|
+
"debug_symbols": "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",
|
|
3416
|
+
"brillig_names": [
|
|
3417
|
+
"compute_note_hash_and_optionally_a_nullifier"
|
|
3418
|
+
]
|
|
3428
3419
|
},
|
|
3429
3420
|
{
|
|
3430
3421
|
"name": "entrypoint",
|
|
@@ -3819,7 +3810,7 @@
|
|
|
3819
3810
|
}
|
|
3820
3811
|
],
|
|
3821
3812
|
"kind": "struct",
|
|
3822
|
-
"path": "authwit::aztec::protocol_types::
|
|
3813
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
3823
3814
|
}
|
|
3824
3815
|
},
|
|
3825
3816
|
{
|
|
@@ -5082,7 +5073,7 @@
|
|
|
5082
5073
|
}
|
|
5083
5074
|
],
|
|
5084
5075
|
"kind": "struct",
|
|
5085
|
-
"path": "authwit::aztec::protocol_types::
|
|
5076
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
5086
5077
|
}
|
|
5087
5078
|
},
|
|
5088
5079
|
{
|
|
@@ -5193,8 +5184,8 @@
|
|
|
5193
5184
|
"visibility": "databus"
|
|
5194
5185
|
}
|
|
5195
5186
|
},
|
|
5196
|
-
"bytecode": "H4sIAAAAAAAA/+x9CbyNVdv+wRkc5xzHPISQFAl77eEM5ilSJKRIhrPPIClDg5Sk0CBTpgYyJKIQIpEMRRQqJUoo8xjKPPs/K/t879Npv73Vua5t3X/P/v2er6f9vt96132va13Xdd/r2c/JEXb5M6tcWFjhkpfvc1hXrsA/c1pXmSzfZf7Tfh8R5L8XE+S7uCDfxQf5Ln+Q74pYV50s35UO8t8rE+S7skG+uy7Id+WDfHdjkO8qBsnBTUG+uznI/2+VIP+9qkG+U0H+fz1B/nveIN8lBPn/TQry30sO8l2NIP+/tYL892oH+a5ukP/f+kH+ew2CfNcwyHeNAv+0fzL/vU7gnx5XgtebnuhOVx6V4nIn+5N8Lq/Pn5CkkpQvyZfmTvJ40pO8SYnJ/uREV7LyetJVhi/Zk+G6/KmU6z9jubL1cacy53nzv56n25P1Gz23AtYVbpurzsPFwP0NYf+5v9F2f3Pgv5P5/1fZ+vcq1lXVuly5/vN95idXlhy4svdRFYBjVc6FWxsFw5DLxcxfReBYVYD5cwvJ303AsaoC8+cB5i8YNygbN7ht9x7bvSsLN3itf/dZV4J1JYaAGyoBx/IC1yZJCLZvBo7lA+YvWUj+KgPHSgDmrxqZG5JsHJBsu69mu0/Mwg3VrX+vYV01ratWCLihCnCs6sC1qS0E21WBY9UA5q+OkPy5gGPVBOavLpkbats4oI7tvq7tvlYWbqhn/Xt962pgXbeEgBsUcKx6wLVpKATbbuBY9YH5ayQkfx7gWA2A+buVzA0NbRzQyHZ/q+3+lizc0Nj699us63brahICbvACx2oMXJumQrDtA451GzB/dwjJXwJwrNuB+WtG5oamNg64w3bfzHbfJAs33Gn9e3PramFdLUPADYnAse4Ers1dQrCdBByrOTB/rYTkLxk4Vgtg/u4mc8NdNg5oZbu/23bfMgs33GP9e2vramNd94aAG6oBx7oHuDZthWC7OnCs1sD83SckfzWAY7UB5q8dmRva2jjgPtt9O9v9vVm4ob317x2sq6N1pYSAG2oCx2oPXBu/EGzXAo7VAZi/VCH5qw0cqyMwf2lkbvDbOCDVdp9mu0/Jwg3p1r9nWFcn67o/BNxQBzhWOnBtOgvBdl3gWBnA/D0gJH/1gGN1AuavC5kbOts44AHbfRfb/f1ZuOFB698fsq6u1tUtBNxQHzjWg8C16S4E2w2AYz0EzF8PIfm7BThWV2D+HiZzQ3cbB/Sw3T9su++WhRsesf79Uet6zLp6hoAbGgLHegS4No8LwXYj4FiPAvPXi4ztx20Y7mW7f8x23zMLtp+w/v1J6+ptXU8FwXZO8NqUD8Plsw8un8r+nLoetww5D32AuHqalIeng+QB/Rx8X9jc3W7mPJ/51/NUCVm/CbZ3++b638/rP5Nl7z5r/Xs/6+pvXQNCoEvI5/WfBeL/OSG6hHxevx8wf88LyR/yef3+wPy9QNb152zc8Lzt/gXb/YAs3PCi9e8Dresl6xoUAm5APq//InBtBgvBNvJ5/YHA/A0Rkj/k8/ovAfM3lMwNg20cMMR2P9R2PygLNwyz/v1l6xpuXSNCwA3I5/WHAddmpBBsI5/XfxmYv1FC8od8Xn84MH+jydww0sYBo2z3o233I7JwwyvWv79qXa9Z1+sh4Abk8/qvANdmjBBsI5/XfxWYv7FC8od8Xv81YP7eIHPDGBsHjLXdv2G7fz0LN4yz/n28dU2wrokh4Abk8/rjgGvzphBsI5/XHw/M3yQh+UM+rz8BmL+3yNzwpo0DJtnu37LdT8zCDZOtf59iXW9b19QQcAPyef3JwLWZJgTbyOf1pwDz946Q/CGf138bmL93ydwwzcYB79ju37XdT83CDdOtf59hXTOt670QcAPyef3pwLWZRV6bWbY1mGG7n2m7fy/L2sy2/n2Odb1vXXODrA36HG0eLAcqnTnPD/79PNNcf2Ot5tnWRP8+IvO+hu3+gyxrNd/69w+ta4F1LQzBPkI+2z4fuI8+EqIRtYBjfQjM3yIh+UM+274AmL+PyTz+kY0bFtnuP7bdL8zCDYutf19iXUuta1kIuKEOcKzFwLX5RAi26wLHWgLM36dC8lcPONZSYP6Wk7nhExsHfGq7X267X5aFG1ZY//6Zda20rlUh4Ib6wLFWANfmcyHYRj7b/hkwf18IyR/y2faVwPytJnPD5zYO+MJ2v9p2vyoLN6yx/n2tdX1pXV+FgBuQz7avAa7N1+S1+dq2Bmtt91/a7r/KsjbrrH//xrq+ta71IajNv8PV5hnMeW749/P8W+/O/s62JrNt9+ts9xuyrNVG69+/t64frGtTYK3Cs8Qf7FMHkm+XirL9b5UJ3P9ozWOzdW2xrq3W9ZN1/Wxd26xru3XtsK6d1rXLunZb1x7r2mtd+6xrv3UdsK6D1vWLdR2yrsPWdcS6frWu36zrqHUds67j1nXCuk5a1ynrOm1dZ3L9cS5nrX8/Z13nreuCzp11Xcp1OUk5rCundeWyrnDrirCuSOuKsq7c1hVtXXmsK8a6Yq0rzrryWle8deWzrvzWVcC6ClpXIesqbF1FrKuodRWzruKBhbgm8M8SgX+WDPyzVOCf14aH/fGF9TqBubN8tznId1uCfLc1yHc/Bfnu5yDfbQvy3fYg3+0I8t3OIN/tCvLd7iDf7Qny3d4g3+0L8t3+IN8dCPLdwSDf/RLku0NBvjsc5LsjQb77Nch3vwX57miQ744F+e54kO9OBPnuZJDvTgX57nSQ784E+e5skO/OBfnufJDvLgT57mKQ7y4F+U5vyqzf5QjyXc4g3+UK8l14kO8ignwXGeS7qCDf5Q7yXXSQ7/IE+S4myHexQb6LC/Jd3iDfxQf5Ll+Q7/IH+a5AkO8KBvmuUJDvCgf5rkiQ74oG+a5YkO+KB/lOE2KZsD9+cgb+WSfwz+yKeY4wnAhqYgeN9YcCJUeWmF3Z+6hS4bj8ZWpWjrA/f0r/ed7KlY2P1sM/5CAbo23O9ad8/uvRtuQKsjb/crStuYKu878a7adc/wUz/2K0n3P9V/z949G25foLLP/D0bbn+st98Y9G25Hrf+yxfzDazlz/c7/+7dF25fobe/9vjrb774z1N0fb8/fG+luj7f27Y/2N0fb9/bH+52j7/8lY/2O0A/9srL8c7eA/HesvRvvln4/1X0c79G/G+i+jHf53YwUd7ci/HSvIaL/++7H+NNpv2Rkry2hHszfWH0Y7lt2xbKMdz/5Y/zfaCcRYgdFOYsb6fbRTqLGs0U7jxnJl+mX9KR1oNJTJ2skrG/in7X/UMWr/4+MYNdc/+jhG7Z+N5hi1fzaaY9T+2WiOUftnozlG7Z+NdrUZtew20kr//aZc6v8YS5UBNiL/qsGHbkyeIRnfsgHDex378YIzQECUBQLiuhABAt3xPQssJM4BC4nzwELiArCQuAgsJC4BC4mwcFwhkSMcV0jk/F/74h+Mlut/77G/PVr439mvf3O0iL+39//WaJF/l0f+xmhRf5+T/udouf8Jv/2P0aL/GVf+5Wh5/inv/sVoMf+cw//raLH/Rg/+y2hx/05bgo6W99/qVJDR4v+95v1ptHzZ0c8so+XPnhb/YbQC2dV122gFs+8R/m+0Qgi/ERitMMa7/D5aEZQPskYrivNUqhjQn9mNb7mA4b2e3fF1jNo/+zhGzTFqWT+OUftnozlG7Z+N5hi1fzaaY9T+2WhXm1HLboOvHLDBd73Qjm9xkvEtHzC8N7A7vsWBgCgPBMQNQgFxDQkQNwaAUIENiGuAgLgRCIgKwMT+/iOIsMu/XAvLkj+Py+tOSE/wpqSne1zpyclJqcqTmpSanp6aluJJSUxMciWm+dNT0nxuf6o7w+PPcKWnpCf5lN/rT1SuVHUxy3jKiteXkOJKSMpIcHlcbo/b60pNTvB701J83kRvQoI1nMeflKhUqs+tUhO9SW7lTlE+f6rL401PSbiIXV9XVsC7k9y+1MTk1NSEFF+q35+enpGYlpCSlKH8CSnK7fdYk0nxeJK8XldKeka63+tJTlDepNQka4USU13e5D/Fay1tRprS0fkTXQnutAS/Ty98uifBn+xK9CR4fK6MhAx/iku53UmpXitktys52edKzvAlulQ6O15XeppfpbuTPame1PRk5c+wgki3blNSfK40d6rPqzJSktMsAFrzssJ1edIz/Co1I8Wd6vd4fIkZf4rX41VpCYm+jBRrddNT0z3Wglvo8KSmeLxWHjx+lexPSE9OTHC7vAmJ1ndeK31ub6rXynJausfHj9eVlpLmdvtcviRPhjslOcOVkuq3Yk5LT8tQVsatjeh3eax8pKQn+jwZ1koprz8pKSUjSaX6fe4/zS850eN3WYlKTUlJ9XiS09O9VrhpKX6f8riTk92ujET/7+BxWQNZX6f70jISEl1el9/jciUnuOl4zvB4vO70ZJcr3UKXFYc7KdlinJT0hCSLVxI9SRlpqQlWdGkWBpQrLT3R73G7Ul3WnnS5XUmJaX9aX39Gsi/J+v/xWFlLTvMluy0mc3ksCktItjZ+QlpCRrLbm2xtZ7fXa43o8akMCwLutAwrFamuJPr6eq195LE2o0WlLotT01KT3OlJKT5fSrLPnebV03D7EjLSXRaXpiV7k62vrT2X4nJZOLAW6s/4S0nSyE9wpbms/5PhS0uyaNqbnOZNyrCo0Zvmsra/y5+clJ6WqBJTkv0+jzslI8FjMZ/P40pMVox4YwNj6Xv9nEHmr4jL2O7L2u6vs92Xs91fb7svb7u/wXZ/o+2+QuAeGA88P3q8itY8b7KuSuGXfzUdHRYas3NtOB7X+nNzOHHCenD0uJWBpokVd2WbcwSN+5e/8stuHqrgwOX5/deiYX98pUAV20YvabuvGP7fX1NQ1brR5YSyLnc4/8/9PQ18HscDbCPYf+XqCfzKNTwQfyiIZ2MuPPHYf0nrtYLxWVeCdSVaV5J1JVtXNeuqbl01rKumddWyrto6r9ZV17rqWVd962pgXbdYV0PramRdt1pXY+u6zbput64m1tXUuu6wrmbWdad1NbeuFtbV0rrusq5W1nW3dd1jXa2tq4113Wtdba3rPutqZ13trauDdXW0rhTr8ltXqnWlWVe6dWVYVyfrut+6OlvXA9bVxboetK6HrKurdXWzru7W1cO6HrauR8IDi5nHBmjmYnrDOYQUhpyn+mM5/mhg5z+W2VvI3A36PziZ5Tv9X8qdZVLost0LUKD0DP1xqUeBavYYaXHRTIuMuecfxrL+u1ZpkJDucyWkJ1m+OTlRF7qpKRkZaVZZZBUVfr/XKiiUJ8NvVcJ+d7L1P5uc7kv9vY+sQmnnepLs3OPhxAk/TrBzvQy3czruXiQ7h7ZxjwXmih73CTBYM8laj6s3XCgV0CdQAZ8M4K93VgV8MogC9g6BAvqACvgkkAB6C1FAZMxPCVXAp0gK2CecOOE+BAV82nAF1HE/LUQBewfmih63L0kB+14BBUwQqIDPBPD3bFYFfCaIAj4bAgVMACrgM0ACeFaIAiJj7idUAfuRFLB/OHHC/QkKOMBwBdRxDxCigM8G5ooe9zmSAj53BRQwUaACPh/A3wtZFfD5IAr4QggUMBGogM8DCeAFIQqIjPlFoQr4IkkBB4YTJzyQoIAvGa6AOu6XhCjgC4G5oscdRFLAQVdAAZMEKuDgAP6GZFXAwUEUcEgIFDAJqICDgQQwRIgCImMeKlQBh5IUcFg4ccLDCAr4suEKqON+WYgCDgnMFT3ucJICDr8CCpgsUAFHBPA3MqsCjgiigCNDoIDJQAUcASSAkUIUEBnzKKEKOIqkgKPDiRMeTVDAVwxXQB33K0IUcGRgruhxXyUp4KtXQAGrCVTA1wL4ez2rAr4WRAFfD4ECVgMq4GtAAnhdiAIiYx4jVAHHkBRwbDhxwmMJCviG4Qqo435DiAK+HpgretxxJAUcdwUUsLpABRwfwN+ErAo4PogCTgiBAlYHKuB4IAFMEKKAyJgnClXAiSQFfDOcOOE3CQo4yXAF1HFPEqKAEwJzRY/7FkkB37oCClhDoAJODuBvSlYFnBxEAaeEQAFrABVwMpAApghRQGTMbwtVwLdJCjg1nDjhqQQFnGa4Auq4pwlRwCmBuaLHfYekgO9cAQWsKVAB3w3gb3pWBXw3iAJOD4EC1gQq4LtAApguRAGRMc8QqoAzSAo4M5w44ZkEBXzPcAXUcb8nRAGnB+aKHncWSQFnXQEFrCVQAWcH8DcnqwLODqKAc0KggLWACjgbSABzhCggMub3hSrg+yQFnBtOnPBcggLOM1wBddzzhCjgnMBc0eN+QFLAD66AAtYWqIDzA/j7MKsCzg+igB+GQAFrAxVwPpAAPhSigMiYFwhVwAUkBVwYTpzwQoICfmS4Auq4PxKigB8G5ooedxFJARddAQWsI1ABPw7gb3FWBfw4iAIuDoEC1gEq4MdAAlgsRAGRMS8RqoBLSAq4NJw44aUEBVxmuALquJcJUcDFgbmix/2EpICfXAEFrCtQAT8N4G95VgX8NIgCLg+BAtYFKuCnQAJYLkQBkTGvEKqAK0gK+Fk4ccKfERRwpeEKqONeKUQBlwfmih53FUkBV10BBawnUAE/D+Dvi6wK+HkQBfwiBApYD6iAnwMJ4AshCoiMebVQBVxNUsA14cQJryEo4FrDFVDHvVaIAn4RmCt63C9JCvjlFVDA+gIV8KsA/r7OqoBfBVHAr0OggPWBCvgVkAC+FqKAyJjXCVXAdSQF/CacOOFvCAr4reEKqOP+VogCfh2YK3rc9SQFXH8FFLCBQAX8LoC/DVkV8LsgCrghBArYAKiA3wEJYIMQBUTGvFGoAm4kKeD34cQJf09QwB8MV0Ad9w9CFHBDYK7ocTeRFHDTFVDAWwQq4I8B/G3OqoA/BlHAzSFQwFuACvgjkAA2C1FAZMxbhCrgFpICbg0nTngrQQF/MlwBddw/CVHAzYG5osf9maSAP18BBWwoUAG3BfC3PasCbguigNtDoIANgQq4DUgA24UoIDLmHUIVcAdJAXeGEye8k6CAuwxXQB33LiEKuD0wV/S4u0kKuPsKKGAjgQq4J4C/vVkVcE8QBdwbAgVsBFTAPUAC2CtEAZEx7xOqgPtICrg/nDjh/QQFPGC4Auq4DwhRwL2BuaLHPUhSwINXQAFvFaiAvwTwdyirAv4SRAEPhUABbwUq4C9AAjgkRAGRMR8WqoCHSQp4JJw44SMEBfzVcAXUcf8qRAEPBeaKHvc3kgL+dgUUsLFABTwawN+xrAp4NIgCHguBAjYGKuBRIAEcE6KAyJiPC1XA4yQFPBFOnPAJggKeNFwBddwnhSjgscBc0eOeIingqSuggLcJVMDTAfydyaqAp4Mo4JkQKOBtQAU8DSSAM0IUEBnzWaEKeJakgOfCiRM+R1DA84YroI77vBAFPBOYK3rcCyQFvHAFFPB2gQp4MYC/S1kV8GIQBbwUAgW8HaiAF4EEcEmIAiJjDouQqYD2ebuy+bHPN0cEccJ6cPS4OSPMVkAdd86I/yQYNC5FATUB5IzAj5srgqOAetxQK2ATgQoYHsBfRETYH9VO/wdZFVD/l9gK2ASogOFAAoiIkKGAyJgjhSpgJEkBoyKIE44iKGBuwxVQx51biAJGBOaKHjeapIDRV0ABmwpUwDwB/MVkVcA8QRQwJgQK2BSogHmABBAjRAGRMccKVcBYkgLGRRAnHEdQwLyGK6COO68QBYwJzBU9bjxJAeOvgALeIVAB8wXwlz+rAuYLooD5Q6CAdwAVMB+QAPILUUBkzAWEKmABkgIWjCBOuCBBAQsZroA67kJCFDB/YK7ocQuTFLDwFVDAZgIVsEgAf0WzKmCRIApYNAQK2AyogEWABFBUiAIiYy4mVAGLkRSweARxwsUJCniN4Qqo475GiAIWDcwVPW4JkgKWuAIKeKdABSwZwF+prApYMogClgqBAt4JVMCSQAIoJUQBkTFfK1QBryUpYOkI4oRLExSwjOEKqOMuI0QBSwXmih63LEkBy14BBWwuUAGvC+CvXFYFvC6IApYLgQI2ByrgdUACKCdEAZExXy9UAa8nKWD5COKEyxMU8AbDFVDHfYMQBSwXmCt63BtJCnjjFVDAFgIVsEIAfxWzKmCFIApYMQQK2AKogBWABFBRiAIiY75JqALeRFLAShHECVciKODNhiugjvtmIQpYMTBX9LiVSQpY+QooYEuBClglgL+qWRWwShAFrBoCBWwJVMAqQAKoKkQBkTG7hCqgi6SAKoI4YUVQQLfhCqjjdgtRwKqBuaLH9ZAU0HMFFPAugQroDeDPl1UBvUEU0BcCBbwLqIBeIAH4hCggMuYEoQqYQFLAxAjihBMJCphkuALquJOEKKAvMFf0uMkkBUy+AgrYSqACVgvgr3pWBawWRAGrh0ABWwEVsBqQAKoLUUBkzDWEKmANkgLWjCBOuCZBAWsZroA67lpCFLB6YK7ocWuTFLD2FVDAuwUqYJ0A/upmVcA6QRSwbggU8G6gAtYBEkBdIQqIjLmeUAWsR1LA+hHECdcnKGADwxVQx91AiALWDcwVPe4tJAW85Qoo4D0CFbBhAH+NsipgwyAK2CgECngPUAEbAgmgkRAFRMZ8q1AFvJWkgI0jiBNuTFDA2wxXQB33bUIUsFFgruhxbycp4O1XQAFbC1TAJgH8Nc2qgE2CKGDTEChga6ACNgESQFMhCoiM+Q6hCngHSQGbRRAn3IyggHcaroA67juFKGDTwFzR4zYnKWDzK6CAbQQqYIsA/lpmVcAWQRSwZQgUsA1QAVsACaClEAVExnyXUAW8i6SArSKIE25FUMC7DVdAHffdQhSwZWCu6HHvISngPVdAAe8VqICtA/hrk1UBWwdRwDYhUMB7gQrYGkgAbYQoIDLme4Uq4L0kBWwbQZxwW4IC3me4Auq47xOigG0Cc0WP246kgO2ugAK2FaiA7QP465BVAdsHUcAOIVDAtkAFbA8kgA5CFBAZc0ehCtiRpIApEcQJpxAU0G+4Auq4/UIUsENgruhxU0kKmHoFFPA+gQqYFsBfelYFTAuigOkhUMD7gAqYBiSAdCEKiIw5Q6gCZpAUsFMEccKdCAp4v+EKqOO+X4gCpgfmih63M0kBO18BBWwnUAEfCOCvS1YFfCCIAnYJgQK2AyrgA0AC6CJEAZExPyhUAR8kKeBDEcQJP0RQwK6GK6COu6sQBewSmCt63G4kBex2BRSwvUAF7B7AX4+sCtg9iAL2CIECtgcqYHcgAfQQooDImB8WqoAPkxTwkQjihB8hKOCjhiugjvtRIQrYIzBX9LiPkRTwsSuggB0EKmDPAP4ez6qAPYMo4OMhUMAOQAXsCSSAx4UoIDLmXkIVsBdJAZ+IIE74CYICPmm4Auq4nxSigI8H5ooetzdJAXtfAQXsKFABnwrgr09WBXwqiAL2CYECdgQq4FNAAugjRAGRMT8tVAGfJilg3wjihPsSFPAZwxVQx/2MEAXsE5gretxnSQr47BVQwBSBCtgvgL/+WRWwXxAF7B8CBUwBKmA/IAH0F6KAyJgHCFXAASQFfC6COOHnCAr4vOEKqON+XogC9g/MFT3uCyQFfOEKKKBfoAK+GMDfwKwK+GIQBRwYAgX0AxXwRSABDBSigMiYXxKqgC+RFHBQBHHCgwgKONhwBdRxDxaigAMDc0WPO4SkgEOugAKmClTAoQH8DcuqgEODKOCwEChgKlABhwIJYJgQBUTG/LJQBXyZpIDDI4gTHk5QwBGGK6COe4QQBRwWmCt63JEkBRx5BRQwTaACjgrgb3RWBRwVRAFHh0AB04AKOApIAKOFKCAy5leEKuArJAV8NYI44VcJCvia4Qqo435NiAKODswVPe7rJAV8/QooYLpABRwTwN/YrAo4JogCjg2BAqYDFXAMkADGClFAZMxvCFXAN0gKOC6COOFxBAUcb7gC6rjHC1HAsYG5osedQFLACVdAATMEKuDEAP7ezKqAE4Mo4JshUMAMoAJOBBLAm0IUEBnzJKEKOImkgG9FECf8FkEBJxuugDruyUIU8M3AXNHjTiEp4JQroICdBCrg2wH8Tc2qgG8HUcCpIVDATkAFfBtIAFOFKCAy5mlCFXAaSQHfiSBO+B2CAr5ruALquN8VooBTA3NFjzudpIDTr4AC3i9QAWcE8DczqwLOCKKAM0OggPcDFXAGkABmClFAZMzvCVXA90gKOCuCOOFZBAWcbbgC6rhnC1HAmYG5osedQ1LAOVdAATsLVMD3A/ibm1UB3w+igHNDoICdgQr4PpAA5gpRQGTM84Qq4DySAn4QQZzwBwQFnG+4Auq45wtRwLmBuaLH/ZCkgB9eAQV8QKACLgjgb2FWBVwQRAEXhkABHwAq4AIgASwUooDImD8SqoAfkRRwUQRxwosICvix4Qqo4/5YiAIuDMwVPe5ikgIuvgIK2EWgAi4J4G9pVgVcEkQBl4ZAAbsAFXAJkACWClFAZMzLhCrgMpICfhJBnPAnBAX81HAF1HF/KkQBlwbmih53OUkBl18BBXxQoAKuCODvs6wKuCKIAn4WAgV8EKiAK4AE8JkQBUTGvFKoAq4kKeCqCOKEVxEU8HPDFVDH/bkQBfwsMFf0uF+QFPCLK6CADwlUwNUB/K3JqoCrgyjgmhAo4ENABVwNJIA1QhQQGfNaoQq4lqSAX0YQJ/wlQQG/MlwBddxfCVHANYG5osf9mqSAX18BBewqUAHXBfD3TVYFXBdEAb8JgQJ2BSrgOiABfCNEAZExfytUAb8lKeD6COKE1xMU8DvDFVDH/Z0QBfwmMFf0uBtICrjhCihgN4EKuDGAv++zKuDGIAr4fQgUsBtQATcCCeB7IQqIjPkHoQr4A0kBN0UQJ7yJoIA/Gq6AOu4fhSjg94G5osfdTFLAzVdAAbsLVMAtAfxtzaqAW4Io4NYQKGB3oAJuARLAViEKiIz5J6EK+BNJAX+OIE74Z4ICbjNcAXXc24Qo4NbAXNHjbicp4PYroIA9BCrgjgD+dmZVwB1BFHBnCBSwB1ABdwAJYKcQBUTGvEuoAu4iKeDuCOKEdxMUcI/hCqjj3iNEAXcG5ooedy9JAfdeAQV8WKAC7gvgb39WBdwXRAH3h0ABHwYq4D4gAewXooDImA8IVcADJAU8GEGc8EGCAv5iuALquH8RooD7A3NFj3uIpICHroACPiJQAQ8H8HckqwIeDqKAR0KggI8AFfAwkACOCFFAZMy/ClXAX0kK+FsEccK/ERTwqOEKqOM+KkQBjwTmih73GEkBj9kUMCbsP0Rt/6DXc2MuAQroclPVNYctt2UC98ettTihBdW6TlnXaes6Y11nreucdZ23rgvWddG6Lun9EGn9/1tXTuvKZV3h1hVhXZHWFWVdua0r2rryWFeMdcVaV5x15bWueOvKZ135rauAdRWMDPujih8PqLj9uxNBvjsZ5LtTQb47HeS7M0G+Oxvku3NBvjsf5LsLQb67GOS7S0G+08nM+l2OIN/lDPJdriDfhQf5LiLId5FBvosK8l3uIN9FB/kuT5DvYoJ8Fxvku7gg3+UN8l18kO/yBfkuf5DvCgT5rmDknx1j2cA/6wT+6cre5w+kk10yPh6Bc58nQGPpGE9Cxrqcr1PZH8sdyJc6nd2xvP+Xe3Ume2O5bOuozmZnLPcfMKHO/fuxXFnwpc7/y7ESMv6EVXXh342VFAT36uK/GSsp6B5Sl/75WIn/ZT8qzd3/aKzE/7q3VY5/Npb7L3hC5fwnYyX+JeeoXH9/rNT/wV8q/O+Olfg/uVBF/L2xXH+DV1Xk3xnL9bc4WkX977F8f5PvVe7/NZb3b2uHiv7LsbwZ/0CHVJ6/GivxH2maivnvYyX9Q31Usf9lrOSMf6y1Ki74WK5/odsqb7CxXP/KA6j4P4+l/qWfUPmyjpX2r72Jyv/HsTzZ8DmqgG0sd0a2PJMqGBmazlh2vV3BSNxYhWAxe1yh7IwVAq6Vfb6FI4kT1oOjxy0CBAMr7iKR/0kwaFxXKM9DcMSQFrLzkKKBnBfL2jUpGgCh/btikfzzEARrZVakRYGgLwZeXMYGLxqJb9cWFaJ2BYBrXRwWc4I3lGpXnKR210QSJ3wNQe1KGK52Ou4SwtWuAAxsyalBpktRu5KBnJfKqnYlg6hdqRCoXQGg2pUEgr4UaXHRrI+M+Voce6qwMLwSFwmQBvoJCmRpUBrsFtCkpde4NMElmR53kUDc6P2HxE4Z8v5zZe+jdP7KELBTFuzaMvWrbOSfXSd6/fMD1/86WB686aF03deB1y/zUy6SOOFyBNd9veGuW8d9vXDXnR8GNr87yHQprrt8IOc3ZHXd5YO47htC4LoRrJXpussDQX8DaXHRrI+M+UbDVb9MgDRygXNYBphDJPFWMHw9NF4qEFwYMG7K47hlAnGjuRDpuisAcVjR8IpKx1qRgMObSNXATSGoBvIB178SLA+J7lBWA5XA65f5uTmSOOGbCdVAZcOrAR13ZeHVQD4Y2JLSg0yXUg1UCeS8atZqoEqQaqBqCKoBBGtlVgNVgKCvSlpcNOsjY3YZ7j4rBkgDXQ1UBOYQSbzK8PXQeFEEF6bI7hOBF0WoBoCuWykgDt2GVwM6VjcBhx5SNeAJQTUQD1x/LywP6SH9ZbYXvH6ZH18kccI+QjWQYHg1oONOEF4NxMPApjKCTJdSDSQGcp6UtRpIDFINJIWgGkCwVmY1kAgEfRJpcdGsj4w52XD36Q6QBroacANziCTeaoavh8ZLNYILA8ZNqQbcgbjRXAh03aoaEIfVDa8GdKzVCTisQaoGaoSgGsgLXP+asDx4QloN1ASvX+anViRxwrUI1UBtw6sBHXdt4dVAXhjYUkNWDdQJ5Lxu1mqgTpBqoG4IqgEEa2VWA3WAoK9LWlw06yNjrme4+6weIA10NVAdmEMk8dY3fD00XuoTXBgwbko1UD0QN5oLga5b1QfisIHh1YCOtQEBh7eQqoFbQlANxAHXvyEsDykhfTdFQ/D6ZX4aRRIn3IhQDdxqeDWg475VeDUQBwNbQsjeTdE4kPPbslYDjYNUA7eFoBpAsFZmNdAYCPrbSIuLZn1kzLcb7j4bBEgDXQ00AOYQSbxNDF8PjZcmBBcGjJtSDTQIxI3mQqDrVk2AOGxqeDWgY21KwOEdpGrgjhBUA7HA9W8Gy4M7OZTVQDPw+mV+7owkTvhOQjXQ3PBqQMfdXHg1EAsDW1pikOlSqoEWgZy3zFoNtAhSDbQMQTWAYK3MaqAFEPQtSYuLZn1kzHcZ7j6bBkgDXQ00BeYQSbytDF8PjZdWBBfWiuw+EXhpRagGgK5btQLi8G7DqwEd690EHN5DqgbuCUE1EANc/9awPPiTQlkNtAavX+anTSRxwm0I1cC9hlcDOu57hVcDMTCweZOCTJdSDbQN5Py+rNVA2yDVwH0hqAYQrJVZDbQFgv4+0uKiWR8ZczvD3efdAdJAVwN3A3OIJN72hq+Hxkt7ggtrT3afCLy0J1QDQNet2gNx2MHwakDH2oGAw46kaqBjCKqBPMD1T4HlwRfSJ4VSwOuX+fFHEifsJ1QDqYZXAzruVOHVQB5cyRyyJ4XSAjlPz1oNpAWpBtJDUA0gWCuzGkgDgj6dtLho1kfGnGG4++wQIA10NdABmEMk8XYyfD00XjoRXBgwbko10CEQN5oLga5bdQLi8H7DqwEd6/0EHHYmVQOdQ1ANRAPX/wFcZ8wXymrgAfD6ZX66RBIn3IVQDTxoeDWg435QeDUQjTOM/iDTpVQDDwVy3jVrNfBQkGqgawiqAQRrZVYDDwFB35W0uGjWR8bczXD3eX+ANNDVwP3AHCKJt7vh66Hx0p3gwrqT3ScCL90J1QDQdavuQBz2MLwa0LH2IODwYVI18HAIqoHcwPV/BKeFCaGsBh4Br1/m59FI4oQfJVQDjxleDei4HxNeDeTGlcwpQaZLqQZ6BnL+eNZqoGeQauDxEFQDCNbKrAZ6AkH/OGlx0ayPjLmX4e6zR4A00NVAD2AOkcT7hOHrofHyBMGFPUF2nwi8PEGoBoCuWz0BxOGThlcDOtYnCTjsTaoGeoegGogCrv9TsDwkhfQNo0+B1y/z0yeSOOE+hGrgacOrAR3308KrgSgY2BIzgkyXUg30DeT8mazVQN8g1cAzIagGEKyVWQ30BYL+GdLiolkfGfOzhrvPJwOkga4GngTmEEm8/QxfD42XfgQXBoybUg08GYgbzYVA1636AXHY3/BqQMfan4DDAaRqYEAIqoFI4Po/J7QaeA68fpmf5yOJE36eUA28YHg1oON+QXg1ECmwGngxkPOBWauBF4NUAwNDUA0gWCuzGngRCPqBQqoBZMwvGe4++wdIA10N9AfmEEm8gwxfD42XQQQXBoybUg30D8SN5kKg61aDgDgcbHg1oGMdTMDhEFI1MCQE1UAEcP2HwvLgC+k7hYaC1y/zMyySOOFhhGrgZcOrAR33y8KrgQgY2FJC9k6h4YGcj8haDQwPUg2MCEE1gGCtzGpgOBD0I0iLi2Z9ZMwjDXefgwOkga4GBgNziCTeUYavh8bLKIILG0V2nwi8jCJUA0DXrUYBcTja8GpAxzqagMNXSNXAKyGoBsKB6/8qrhpIC2U18Cp4/TI/r0USJ/waoRp43fBqQMf9uvBqIBxnGD1BpkupBsYEcj42azUwJkg1MDYE1QCCtTKrgTFA0I8lLS6a9ZExv2G4+xwdIA10NTAamEMk8Y4zfD00XsYRXNg4svtE4GUcoRoAum41DojD8YZXAzrW8QQcTiBVAxNCUA3kAq7/RFge3CE9G5gIXr/Mz5uRxAm/SagGJhleDei4JwmvBnLBwJYWsrOBtwI5n5y1GngrSDUwOQTVAIK1MquBt4Cgn0xaXDTrI2OeYrj7HB8gDXQ1MB6YQyTxvm34emi8vE1wYW+T3ScCL28TqgGg61ZvA3E41fBqQMc6lYDDaaRqYFoIqoGcwPV/B5YHjyeU1cA74PXL/LwbSZzwu4RqYLrh1YCOe7rwaiAnDGypaUGmS6kGZgRyPjNrNTAjSDUwMwTVAIK1MquBGUDQzyQtLpr1kTG/Z7j7nBogDXQ1MBWYQyTxzjJ8PTReZhFc2Cyy+0TgZRahGgC6bjULiMPZhlcDOtbZBBzOIVUDc0JQDeQArv/7sDykh/Rs4H3w+mV+5kYSJzyXUA3MM7wa0HHPE14N5ICBTYXsbOCDQM7nZ60GPghSDcwPQTWAYK3MauADIOjnkxYXzfrImD803H3ODpAGuhqYDcwhkngXGL4eGi8LCC5sAdl9IvCygFANAF23WgDE4ULDqwEd60ICDj8iVQMfhaAaCAOu/yJYHrwhrQYWgdcv8/NxJHHCHxOqgcWGVwM67sXCq4EwGNj8IasGlgRyvjRrNbAkSDWwNATVAIK1MquBJUDQLyUtLpr1kTEvM9x9LgyQBroaWAjMIZJ4PzF8PTRePiG4sE/I7hOBl08I1QDQdatPgDj81PBqQMf6KQGHy0nVwPIQVAOXInBjrYDlITE5lNXACvD6ZX4+iyRO+DNCNbDS8GpAx71SeDVg33CubH2SEoNMl1INrArk/POs1cCqINXA5yGoBhCslVkNrAKC/vNIzuKiWR8Z8xeGu89PA6SBrgY+BeYQSbyrDV8PjZfVBBe2muw+EXhZTagGgK5brQbicI3h1YCOdQ0Bh2tJ1cDaEFQDF4HVwJe4zlhIq4EvweuX+fkqkjjhrwjVwNeGVwM67q+FVwMXYdWAN2TVwLpAzr/JWg2sC1INfBOCauAisBpYBwT9N5GcxUWzPjLmbw13n2sCpIGuBtYAc4gk3vWGr4fGy3qCC1tPdp8IvKwnVANA163WA3H4neHVgI71OwION5CqgQ0hqAYuAKuBjbizAVcoq4GN4PXL/HwfSZzw94Rq4AfDqwEd9w/Cq4ELsGog2RVkupRqYFMg5z9mrQY2BakGfgxBNXABWA1sAoL+x0jO4qJZHxnzZsPd53cB0kBXA98Bc4gk3i2Gr4fGyxaCC9tCdp8IvGwhVANA1622AHG41fBqQMe6lYDDn0jVwE8hqAbOA6uBn3FaGNK/RfwzeP0yP9siiRPeRqgGthteDei4twuvBs7DqoGEjCDTpVQDOwI535m1GtgRpBrYGYJq4DywGtgBBP3OSM7iolkfGfMuw93n1gBpoKuBrcAcIol3t+HrofGym+DCdpPdJwIvuwnVANB1q91AHO4xvBrQse4h4HAvqRrYG4Jq4BywGtiHOycP6RtG94HXL/OzP5I44f2EauCA4dWAjvuA8GrgHKwa8IfsDaMHAzn/JWs1cDBINfBLCKqBc8Bq4CAQ9L9EchYXzfrImA8Z7j73BEgDXQ3sAeYQSbyHDV8PjZfDBBd2mOw+EXg5TKgGgK5bHQbi8Ijh1YCO9QgBh7+SqoFfQ1ANnAVWA7/B8pAe0rOB38Drl/k5Gkmc8FFCNXDM8GpAx31MeDVwFlYNqIwg06VUA8cDOT+RtRo4HqQaOBGCauAssBo4DgT9iUjO4qJZHxnzScPd55EAaaCrgSPAHCKJ95Th66Hxcorgwk6R3ScCL6cI1QDQdatTQByeNrwa0LGeJuDwDKkaOBOCauAMsBo4C8tDhi+U1cBZ8Pplfs5FEid8jlANnDe8GtBxnxdeDZyBVQMuf5DpUqqBC4GcX8xaDVwIUg1cDEE1cAZYDVwAgv5iJGdx0ayPjPmS4e7zdIA00NXAaWAOocQbZfZ6aLzoOaJdGDBuSjVwOhA3mgtPI/dfFC7eHOT1cGXv83usOQg4zBmFdZOZupozil8NnAZWA7lgeUgO6ZNCucDrl/kJjyJOODwKP24EkAxYcUdE/SfBoHFDWg2cxv1uIGRPCkUGch4VFfZH5x8Z9edqQP+X2NXAaWA1EAkEfVQUZ3HRrI+MObfh7jNHgDTQ1UAOYA6RxBtt+HpovEQTXFi04dVAjkDc8L/ECFzvaCAO8xheDehY8xBwGEOqBmJCUA2cAlYDsbA8ZIT0nUKx4PXL/MRFESccR6gG8hpeDei48wqvBk7hnhQK2TuF4gM5z5e1GogPUg3kC0E1cApYDcQDQZ8virO4aNZHxpzfcPeZJ0Aa6GogDzCHSOItYPh6aLwUILiwAmT3icBLAUI1AHTdqgAQhwUNrwZ0rAUJOCxEqgYKBeYaSmd8MgIbS+ancBRxwoUJzriI4c5Yx12E4IyDzRVBDHquOcE5ABIOdL1DuWFPkDZs0SjihIsSNmwxwzesjruYoA1bzPANi17vzA+68joO7LcVB+YvlCRVPIpDUtdEESd8DYGkShhOUjruEiEiKVf2Pr+TSQlCmV8QuEbI9S5peJmvia4kobwqZXhZqWMuRYj7WlJZeW2Qdi06J+w1Q+zxkoTWDNLglARyR2kBe6g0YQ+VIe2hMkEOatE5KQ2uSHOF/Qfvv8dAnn9B8A8HGXMsIGCO+QXMMZ+AOcYLmGNeAXOMEzDHWAFzjBEwxzwC5hgtYI65BcwxSsAcIwXMMULAHMMFzDGXgDnmFDDHHALmGCZgjpcizJ/jRQFzvCBgjucFzPGcgDmeFTDHMwLmeFrAHE8JmONJAXM8IWCOxwlztH8wY7uJY//nefnfH4EP3Je1erbXWVc567reuspb1w3WdaN1VbCuitZ1k3VVsq6brauydVWxrqrW5Qqcu6qsz9zrQctk+e66IN+VC/Ld9UG+Kx/kuxuCfHdjkO8qBPlORf25mYw+WIE1apV1+AN8L4ubdMDgDpJT6NM46o9zz24ePKQ8eEKALWCDXXmAOfWScuoNAba8wDz4SHnwhQBbwIMR5QPmNIGU0wQ2tqw8lDU0D0wc5QXqXzxQ/xJJOEoMAUclAnGURMpDUgg4Cnigp5KAOU0m5TQ5BNhKBuahGikP1UKALeBBrKoGzGl1Uk6rh0D/rjM0D0wc5QHqXwxQ/2qQcFQjBBxVA4ijmqQ81AwBRwEfIFA1gTmtRcpprRBgqxYwD7VJeagdAmwBH/xQtYE5rUPKaZ0Q6F85Q/PAxFEkUP+igPpXl4SjuiHgqLpAHNUj5aFeCDgK+MCSqgfMaX1STuuHAFv1gXloQMpDgxBgC/igmWoAzOktpJzeEgL9u97QPDBxlBOof7mA+teQhKOGIeCohkAcNSLloVEIOAr4gKRqBMzpraSc3hoCbN0KzENjUh4ahwBbwAdbVWNgTm8j5fS2EOhfeUPzwMQR7MFea29eAr6R5HYSjm4PAUfdDsRRE1IemoSAo4APZKsmwJw2JeW0aQiw1RSYhztIebgjBNgCPkiv7gDmtBkpp81CoH83GJoHJo7OAvXvHFD/7iTh6M4QcNSdQBw1J+WheQg4CvgDENUcmNMWpJy2CAG2WgDz0JKUh5YhwBbwhzuqJTCnd5FyelcI9O9GQ/PAxNFJoP4h/wJMKxKOWoWAo1oBcXQ3KQ93h4CjgD84U3cDc3oPKaf3hABb9wDz0JqUh9YhwBbwh4KqNTCnbUg5bRMC/atgaB7sMecAx1xRyDxvEjLPSkLmebOQeVYWMs8qQuZZVcg8XcB56pd0Zr6oM3Ou+cL++EHPvywhz+g5XidgjuUEzPF6AXMsL2CONwiY440C5liBxPGIOSaRxmXN1xn3/69xcWO7FXHs//trLHavcq+1r9ta133W1c662ltXB+vqaF0p1uW3rlTrSrOudOvKsK5O1nW/dXWOCvvjy2XujfrzC2faBvnuviDftQvyXfsg33UI8l3HIN+lBPnu/iDfdQ58F8q/MuyPMhyM6vI/7Ll4IOryP7tkXXT9H7D/orAf0EVJv9xGUQ8AOzJdhFQ+UuaZKmSeaULmmS5knhlC5tlJyDwRfJkYGMs+z6zd8ezyJ7Cjoe4lrQ06ZmCHRLUVEjOw46LuExIzsIOj2gmJGdgRUu2FxAzsMKkOQmIGdqxURyExAztgKiVEMbv+3Udl3twPrJUeJJ3i28cF5yHzozoD1/5BSC2rP3/0ZjnAeO8KiDlYZxY9z24h8uTZnWd3wDwTUlzJ6QkJicx59gDM0+9PSExJT/Ix5/kwYJ6e1IT0DE+imznPRwDzTPF5MzJ8nhTmPB8FzNOnXOk+d2IGc56PAeaZ7Hf5EpKSUpnz7AmYp8pI8qQlp/iZ83wcse7+dFdqmkrWcysY9uc34dvfgG9/8739jff2N93b33Bvf7O9/Y32XW333bJxbz8U6Gy7726772G7f9h2/4jt/lHb/WO2+562+8cD972sfz5hXU9aV2/resq6+ljX09bVN+ryYURM2H/66H+1/q7sfVQv0w8jLn+8tLGV6w8nY+GB+2esvDxrXf2sq3/WQ49nAoce9u+eDfJdvyDf9Y/684FJBDZZf1jU7BLEM0DD+ixoLB1jP+ChUH/wo2Gh2rxPOJs36OYdYOXlOet63rpeyLp5BwTZlM8F+e75IN+9EILN+wRw8w4Abt7ngJv3eeDmfUHo5n3S2bxBN++LVl4GWtdL1jUo6+Z9McimHBjku5eCfDcoBJv3SeDmfRG4eQcCN+9LwM07SOjm7e1s3qCbd7CVlyHWNdS6hmXdvIODbMohQb4bGuS7YSHYvL2Bm3cwcPMOAW7eocDNO0zo5n3K2bxBN+/LVl6GW9cI6xqZdfO+HGRTDg/y3Ygg340MweZ9Crh5XwZu3uHAzTsCuHlHCt28fZzNG3TzjrLyMtq6XrGuV7Nu3lFBNuXoIN+9EuS7V0OwefsAN+8o4OYdDdy8rwA376tCN+/TzuYNunlfs/LyunWNsa6xWTfva0E25etBvhsT5LuxIdi8TwM372vAzfs6cPOOAW7esUI3b19n8wbdvG9YeRlnXeOta0LWzftGkE05Lsh344N8NyEEm7cvcPO+Ady844Cbdzxw804AbgK9xpl4+THXf9Z/s+1+i+1+q+3+J9v9z7b7bbb77bb7Hbb7nbb7Xbb73bb7Pbb7vbb7fbb7/bb7A7b7g7b7X2z3h2z3h233R2z3v9ruf7PdH7XdH7PdH7fdn7Ddn7Tdn7Ldn7bdn7Hdn7Xdn7Pdn7fdX7DdX7TdX7Lda1bIvM9hu89pu89luw+33UfY7iNt91G2+9y2+2jbfR7bfYztPtZ2H2e7z2u7j7fd57Pd57fdF7DdF7TdF7LdF7bdF7HdF7XdF7PdF7fdP2a77227f9Z2/4LtfojtfqTt/nXb/QTb/RTb/XTb/Rzb/Ye2+8W2++W2+y9s91/b7jfY7jfb7rfb7vfa7g/Z7o/Z7s/Y7i/ZsRFhW1/bfX7bfVHbfSnbfTnbfUXbfVXbvc92X912X9d238h239R239J238Z238F2n26772K772G7f9x238d23992P9B2P8x2P9p2P9Z2/6btfqrtfqbtfq7tfqHtfqnt/jPb/Rrb/Te2++9t91tt9ztt9/tt90fsMdr03/7YiP2xEvtjJy/Y7u0n1faTbPtJ9yDbvf1wzH54Zj9cG2a7t/fj7f16ez9/pO3e3gK0twjtLcRXbff2roO9K2HvWoy13dsLHXshZC+UJtju7d7K7r0yvdlELcK2T47AP+sE/unK3kdNBHosbTqjbXNkzrtmGNbrZH7ejCJOWA+OHncScAFZcU+ygRg0LuPHJf83Z084Lqdv4Uy5CrY+2f7zwIH1QeewFnCOk8HVPRrjeo0nR+HXZgq4oMss3vW4ZQLjSsnF24ZjQMf8NiHuqSQMTP0LDGR3zpo/J0eZzcvTBOBpGgFP75Dw9I4NT+h1z9xbpuf2XVJu3w3kVhvsiLD/NFrtH5MNNnOeNYTMs7qQedo51pXNT7D5ZXeP1Q67vC/QHJMLOFbtMCwPZH6m2ziLIjjMhXf9y0+az+tVflfaZJKxnEEi7RlEg6X/NzI3AhIDrE2Q3XhnGm7WMg0vep3fE2BS3yPEPYu0J2fZjFRkmGOk7PN0jBR2nmgjxZonkltz2uY5O9D0naP5gdH11h3GrC4Q0Q1FjTUJWLHaSWy2zVhkftBueDbwVOF9cgfclb2PyuyA5xKCpeyONdfw9dB4mUswFfNIpmIesZvOysUHhhtLHfMHhLjnkzAw/y+6n4iTj7nA/T8tMB66eER2aKcB4/1QANY/JGB9AQnrC4id/sx9b3puF5Jyu5CoJbrAY2jJRwL210eEuBeRMLCIiAFdlDIw8LEADHxMiHsxCQOLiRiYTfKUSwRgYAkh7qUkDCz9G3U+shbM7ljLDK8r9XiMJv0nhuO+JinuTwUcGC4jxL1cAM8tJ8S9gsRzK4hapzEwk5CLzwQczE0nxL3S8LjfI+35VQL2/CpC3J+T9vzntoPYUP1kpF4YNpbMzxdRxAl/EYUfdzXQ9LHiXh31nwSDxv3DKSq6+YlsWn0IXJ81ZFOe3fnVD6w1upFYHzjHtYaTv17jtQTy/5JE/l8SDR8rF18ZjgEd81eEuL8mYeBr4tORH5AwsKQIFwOIgy5G3EuLcDQY/b4YUzV4HXBeQAyqpUXM57R1BDx/Q+K0b4gHo5n8bnpuvyXl9luiZ5hL4s31pFysjwr9z8GQxTNznnWFzLMOaZ5o3mFpqiubn2Brkt392iDM/J+WNQjDckrm57so4k/LkAW0Jr08tkVizFd3kCcDG1AZlz+MN0v+3x/EtedjQ2DuG6MCyclUjg2BVbZ/t5F8/LIsCnZs7Q7sVLUB6M43RmEXGM1KevNsIHVDweudwDpy/V5A9+V7Qtw/kBzkD8Q9r9f/E0IuNhmOAR33p4S4fxQQ92eEuDcLiHslIe4twLj1fq9iXR0D4+k99GPg8RCd3y2BY+NuzhWSK/MjRX+2ArGYM4DFrB/U+KzcInPAmuNP6DmiS2Ad8NoorCn+KQo/z5+Ac/xZzuZRV/Pm+Rk9Rxa7M84UUGDfRqpUthErFQl53e4osNougER2mK7A+gAHrcA7CJtnB3COOx0FFrF5dl6lCuxGbshdJAXeJU+BoXnd7Siw2i2ARPawSQShmHqSqEfPM3/nBjxd/UMSsxvvXkd9RWycvVep+nqQKrGPpL775KkvNK/7HfVV+wWQyAHT1VdvqMwHvJCBsx7uym68B8ELkhO8HpokgKD5ncwOEvoRB4Bk9ovjiESQ2S9XqSPyIpX7EMkRHZLniKB5Pew4InVYAIkcMf1EQIPyO/CJwBGCAh8BzvFXR4FFbJ5fr1IF9iGV4jeSAv8mT4GheT3qKLA6KoBEjkk4EdCTDCcGnt05HgeOZf/xukkvJZCq5BI24XHTlZz1m6UTUVgAMZT2BCHukyTXcTLgOqQqZjcBm/UUYY5BJ5pdkJ0Gbi6pgDotAFBnpADqLG6ibqmAOisAUOckNAbOEWT1PDhwRtznCXFfINmJC1G8F9Dpn1euJXRClwNrsYsC8HSRgKdLJDxdiuK+/Au4/2m5DcvNya0et0yYXOtfJdz8OebIDZ5jTjC4NGg3gzeBDhq9WTcDSTpnbvNJWs8R/rAWiUhy5f7zq+bRcw/Hzd0rlfDCc5s/xwjCHCmAisRN1CcVUJECABWFniODraMIbJ1bgErlJsQdTVKp6Ny80nQVqTRdBXQ9eQTgKQ8BTzEkPMXk5pamwP1Py20sKbexttyGkfZsHG7uCVINQJwAA5BXiqOMx000USqg4gUAKp8UQOXHTTRJKqDyCwBUAQklSgGC/BcUYCkLEuIuRLI9hUJgewrj5p4slVQKCyCVIlJUqihuoilSAVVUAKCKSQFUcdxE/VIBVVwAoK6RYHuuIch/CQG2pwQh7pIk21MyBLanFG7uqVJJpZQAUrlWikqVxk00TSqgSgsAVBkpgCqLm2i6VECVFQCo6yTYnusI8l9OgO0pR4j7epLtuT4Etqc8bu4ZUkmlvABSuYGlUjmhE1Uu5C/+bwQGLRWcNwoAZwUZ4HRlIMFZERe02J+uVRQAzpsk2LGbCLakkgA7VokQ980kO3ZzEDsGVk/oG/QrO+qpKgsgqCpCrB30BdNVHXCqqgLA6RICTihzKsfaKSUAnG4J1s5NsDgeAdbOQ4jbS7J2XmHWzofLg0cqQfkEEFSCEPVMQIIz0bF2KlEAOJOEgBP6Etlkx9qpZAHgrCbB2lUjWJzqAqxddULcNUjWrgbf2iUhCaqmo56qpgCCqiVEPZOR4KztgFPVFgDOOkLACWXOuo61U3UFgLOeBGtXj2Bx6guwdvUJcTcgWbsGwqzdLU7XTt0igKAaClHPVCQ4GznWTjUSAM5bhYDTjwRnY8faqcYCwHmbBGt3G8Hi3C7A2t1OiLsJydo14Vu7dCRBNXXUUzUVQFB3CFFP6JPqzRxwqmYCwHmnEHBCmbO5Y+1UcwHgbCHB2rUgWJyWAqxdS0Lcd5Gs3V3CrF0rp2unWgkgqLtlqKcb+iDoPY61U/cIAGdrIeBUSHC2caydaiMAnPdKsHb3EixOWwHWri0h7vtI1u4+urVze5EE1c5RT9VOAEG1F6Ke0CfVOzjgVB0EgLOjEHBCmTPFsXYqRQA4/RKsnZ9gcVIFWLtUQtxpJGuXJszapTtdO5UugKAyhKgn9EHQTo61U50EgPN+IeBMRIKzs2PtVGcB4HxAgrV7gGBxugiwdl0IcT9IsnYP8q1dCpKgHnLUUz0kgKC6ClFP6JPq3Rxwqm4CwNldCDihzNnDsXaqhwBwPizB2j1MsDiPCLB2jxDifpRk7R4VZu0ec7p26jEBBNVTiHpCHwR93LF26nEB4OwlBJxpSHA+4Vg79YQAcD4pwdo9SbA4vQVYu96EuJ8iWbun6NbOA/1bTn0c9VR9BBDU0zLU0wN9Ur2vA07VVwA4nxECTihzPutYO/WsAHD2k2Dt+hEsTn8B1q4/Ie4BJGs3QJi1e87p2qnnBBDU80LUE/og6AuOtVMvCADni0LACf0reAMda6cGCgDnSxKs3UsEizNIgLUbRIh7MMnaDeZbO+jfchriqKcaIoCghgpRT+iT6sMccKphAsD5shBwQplzuGPt1HAB4BwhwdqNIFickQKs3UhC3KNI1m6UMGs32unaqdECCOoVIeoJfRD0VcfaqVcFgPM1IeCE/hW81x1rp14XAM4xEqzdGILFGSvA2o0lxP0Gydq9wbd20L/lNM5RTzVOAEGNF6Ke0CfVJzjgVBMEgHOiEHBCmfNNx9qpNwWAc5IEazeJYHHeEmDt3iLEPZlk7SYLs3ZTnK6dmiKAoN6WoZ5e6IOgUx1rp6YKAOc0IdYO+lfw3nGsnXpHADjflWDt3iVYnOkCrN10QtwzSNZuBt3aeaF/y2mmo55qpgCCek+ItYM+qT7LAaeaJQCcs4WAE8qccxxrp+YIAOf7Eqzd+wSLM1eAtZtLiHseydrNE2btPnC6duoDAQQ1X4h6Qh8E/dCxdupDAeBcIASc0L+Ct9CxdmqhAHB+JMHafUSwOIsEWLtFhLg/Jlm7j/nWDvq3nBY76qkWCyCoJULUE/qk+lIHnGqpAHAuEwJOKHN+4lg79YkAcH4qwdp9SrA4ywVYu+WEuFeQrN0KYdbuM6drpz4TQFArhagn9EHQVY61U6sEgPNzIeCE/hW8Lxxrp74QAM7VEqzdaoLFWSPA2q0hxL2WZO3W8q0d9G85femop/pSAEF9JUQ9oU+qf+2AU30tAJzrhIATypzfONZOfSMAnN9KsHbfEizOegHWbj0h7u9I1u47YdZug9O1UxsEENRGGerpgz4I+r1j7dT3AsD5gxBwQv8K3ibH2qlNAsD5owRr9yPB4mwWYO02E+LeQrJ2W+jWzgf9W05bHfVUWwUQ1E9C1BP6pPrPDjjVzwLAuU0IOKHMud2xdmq7AHDukGDtdhAszk4B1m4nIe5dJGu3S5i12+107dRuAQS1R4h6Qh8E3etYO7VXADj3CQEn9K/g7XesndovAJwHJFi7AwSLc1CAtTtIiPsXkrX7hW/toH/L6ZCjnuqQAII6LEQ9oU+qH3HAqY4IAOevQsAJZc7fHGunfhMAzqMSrN1RgsU5JsDaHSPEfZxk7Y4Ls3YnnK6dOiGAoE4KUU/og6CnHGunTgkA52kh4IT+FbwzjrVTZwSA86wEa3eWYHHOCbB25whxnydZu/M2a8fIxYkofC4uCMDABQIGLpIwcPFv2Pts/8IbKFKXcHlQjPWfbMW6jID7sGizca/XRc8RHXcOw+PW2M5BiDtnNGe/63HLhAXf567sff6P+0zPbS5SbnMFchtuXZHWFRH25w8af/XCsPuDNc+6QuZZhzRP9F77Kgo31rooGWtzEDjPnLZ5hkdf/meE5hr4+4ysSdcPw5uq+sCxVgPBZCfEcBsh5rHlgAmSuYBYMi5//EGmm92xVeaNPReRAQBGRQcSkpnAyID62b+Liv6zY89FTOK/BJc7AC4VGY0DalQ0Z3HRmxMZc26cW6FUPJqINIHkAueQRXDZHSva8PXQeIkmuOZosyuxJM1ZjLjzkKqFPNG87pseby6hCxFjeDVekxR3rOFxz4zixB1neNzVSeud1/C455DWOx4Yt+a5qtZVITCe5g69jz6y5q1xpXOs//c+tv59iXV1u8JX5keKLuUDrlXOwFpl/aDGJ+VW5Ys2f4750XNEt5J0wNHRWKOog0bPMz9wjgXkbB51NW+eAug5stgdDXbkhixIqmAK8ioYEXkt5CiwKiSARAqbrsD6EA+twIUJm6cwcI5FHAUWsXmKXKUK7EZuyKIkBS4qT4GheS3mKLAqJoBEipuuwHXD8ApcnKDAxYFzvMZRYBGb55qrVIE9yA1ZgqTAJeQpMDSvJR0FViUFkEgp0xX4YBRegUsRFLgUcI7XOgosYvNce5UqsBe5IUuTFLi0PAWG5rWMo8CqjAASKWu6Autx0ApclqDAZYFzvM5RYBGb57qrVIF9yA1ZjqTA5eQpMDSv1zsKrK4XQCLlTVfgiGi8ApcnKHB54BxvcBRYxOa54SpV4ATkhryRpMA3ylNgaF4rOAqsKgggkYqGk8jvP6tnPKwfXhQbODrudaS4I8hxIxySBmU4EejZneNNwB+cAnGokGsr1blJIN2brlLnloh0GJVIzq2SPOcGzevNjnNTNwsgkcqm907CCb2TyoTeSWXgHKs4vRMRm6eK6WWPhF9bVSUpcFWeAv8fKZmcVxcpr66rPK8KvOlzEGJVhJLfTcKT24anzE8EOCestypmN6ceIC7tLQDT2zuu7H1+x7iHgHEvCePeaN7beTP3u+m59ZFy6wvkVmqV2C3K/DkmIDVP6kKdFrBQic5CudRZAQuVZHrpqGUgiSADyQLsczIh7mok+av2F+VYduf8Eal98BHQQlcXgKfqBDzVIOGpBtmqJkebn9uapNzWFG5Vq4SbP8da7AMNxAFEHHgT1CKQdBywN1FbAEnXJhBJHRKR1AnMVSqRhAv4c4x1CQdQv3/AGxX6k4d6zrG9qhdt/hzrCwEn9BexDXBBu6WCs4EAcN4iobdxC0HuGwqwOQ0JcTci2ZxGxN7Gx6TexsfA3satAvB0KwFPjUl4akzubTSMNj+3t5Fye1uQY3yTne7tjplQtwswE00kmIkmhI3aVAD5NyXEfQeJoO4gmoklJDOxBGgmmgnAUzMCnu4k4elOsploGm1+bpuTctucbyaSkGaihdM2Uy0EmImWQtpmyUhw3uWAU90lAJythIATypx3O2WYulsAOO+RUIbdQ7A4rQXY5taEuNuQrF0bYdbuXlwePFIJ6l4BBNVWiHqmIsF5n2Pt1H0CwNlOCDjTkOBs74BTtRcAzg5XI3N2dOoO1VEAOFMk1B0pBP/tF1B3+Alxp5LqjlR+3QFVzzSHoFSaAIJKl0BQ6YSNmiGAoDIIcXciEVQnOkEpF5Kg7nfsvbpfAEF1lmHvFfQlPQ844FQPCABnFyHghDLng461Uw8KAOdDEqzdQwSL01WAtetKiLsbydp1E2btujtnXqq7AILqIUQ9ob8CfNixduphAeB8RAg4ob8qedQBp3pUADgfuxqZs6dTd6ieAsD5uIS643GC/+4loO7oRYj7CVLd8QS/7oCq55MOQaknBRBUbwkE1ZuwUZ8SQFBPEeLuQyKoPnyCgj4M/LRj79XTAgiqrxB7D/2d1zMOONUzAsD5rBBwQpmzn2PtVD8B4Owvwdr1J1icAQKs3QBC3M+RrN1zwqzd886Zl3peAEG9IEQ9ob9WeNGxdupFAeAcKASc0CfVX3LAqV4SAM5BVyNzDnbqDjVYADiHSKg7hhD891ABdcdQQtzDSHXHMH7dAVXPlx2CUi8LIKjhEghqOGGjjhBAUCMIcY8kEdRIOkG5oQ8Dj3LsvRolgKBGy7D3bujvvF5xwKleEQDOV4WAE8qcrznWTr0mAJyvS7B2rxMszhgB1m4MIe6xJGs3Vpi1e8M581JvCCCocULUE/prhfGOtVPjBYBzghBwQp9Un+iAU00UAM43r0bmnOTUHWqSAHC+JaHueIvgvycLqDsmE+KeQqo7pvDrDqh6vu0QlHpbAEFNlUBQUwkbdZoAgppGiPsdEkG9YyModC7mkv72HpLw3hWAp3cJeJpOwtP0v8BTdufMwtNc4N9ynCEATzMIeJpJwtNMG54YPALc/7TcvkfK7XtE7r+Q+/JeRefipqJm768c0Zy4K4HjzvzkAs9zFnA/AddaVTIcNxozswi4mU3ijtlBCtsIcE40h6DGygH0jHOiOXxmGkcwMD6HgPH3SRh/n+w9ZkWbn9u5pNzODeQ23LqibPnV/1mxsOAfzDx8Hs64CT7OuIleWeMmJJPGTSeNm8gZ1+0irZufM66HNd80WflNUKQ8kHiHlocE0rg+WePS9rE0/LJ4naWbbu0lcmQZG17v48b602ERfLINwZNlzE8RTKzX8MJIx+0hxO0T0jSaByyEgGutfAJwM4+Amw9IRd8HIWgaKSCWPMBGz/xoDp+ZxhEMjM8nYPxDEsY/JDaNMve76bldQMrtAuKBlc4F46C9loD9xTi0rC3EeywE7ifgWqvaAnCzkICbj0jc8VEIvAfyYYIZQL+wKJrDZ6ZxBAPjiwgY/5iE8Y/J3mNhtPm5XUzK7WKy92Ac/t8qYH8xDi0bC/EeS4D7CbjWqrEA3Cwh4GYpiTuWhsB7IB8mQD7gsiyaw2emcQQD48sIGP+EhPFPyN5jSbT5uf2UlNtPbQ/L5A7786EWI+fIPtN8wi+qfk9G9H9JBnozVgjDLmzmZ3k0ccLLo/HjrgCyOSvuFdH/STBo3L90ga7sfWg7Lbvr8xlwXsHWOrvzqxhYazTzVQTOcaXhPwfSa7ySoISrSEq4iliFs3LxueEY0DF/Toj7CxIGviD+xHAeCQMtyNUG4nSaEXdLUicGXT2bqsGrgfMCYlC1NLx61lheTcDzGhKnrSFWz5n8bnpu15Jyu5boGRaSePM+w/fXIlLc7YR07r8E7ifgWqt2Anj5SwJuviJxx1ch6NwjT1WRJ/1fR3P4zDSOYGD8awLG15Ewvo7sPb6MNj+335By+42tcx8R9h/usH9MblYz53mjkHneQJrn1XRig96vN4Vd3mPoHOYCjnVTGJZTMj/fRhN/IoZsWGvSy2NbJCb4kcfDywBjZVz+uIKEnt2xVeaNPa/rA4de32UeiWYq0PoAWuzffRfE1YYLWZB/yRzuAHOo9UBX+x0YKGiW1Js5ExjAtWW45oQlpI5ChtnVQsIyUtydhHRSNgB5ArjWCpk/O/du+ItqK9sd1KiwsE1RuBzo8U5F4cV6E/CFmxvBTpWxJj+C1+QMYU1+BK7J94znvcLwT96cB67LRWD+fhCA6S1gTEfkxmN6C3BNNgnBdG7gSxPz5Mbl70fDn4LRGMybG+/DNguIOx8h7i0C4i5CiHurgLiLEeL+SUDc1xLi/llA3GUIcW8TEPcNhLi3C4i7AiHuHQLirkKIe6eAuF2EuHcJiDuBEPduAXEnEeLeIyDuWoS49wqIuw4h7n0C4m5IiHu/gLhvJcR9QEDcdxDiPigg7jsJcf8iIO67CXEfEhB3a0LchwXE3Z4Q9xEBcXckxP2rgLgzCHH/JiDu+wlxHxUQd1dC3McExN2dEPdxAXH3JMR9QkDcvQhxnxQQ99OEuE8JiPsZQtynBcT9PCHuMwLifpEQ91kBcQ8lxH1OQNwvE+I+LyDuVwhxXxAQ92uEuC8KiHs8Ie5LAuKeSIhb/7LF9LjfJsSdQ0Dc0whx5xQQ93uEuHMJiHs2Ie5wAXHPJ8QdISDuBYS4IwXEvYQQd5SAuJcR4s4tIO6VhLijBcT9OSHuPALi/ooQd4yAuNcR4o4VEPdGQtxxAuL+gRB3XgFx/0SIO15A3NsIcecTEPceQtz5BcS9jxB3AQFxHybEXVBA3L8S4i4kIO6ThLgLC4j7NCHuIsC49W9qdfAdA+PpdwTo36Tr31XntOauf8urf4+qf5upf6dY0PpO/25P/4athHWvf9Olf99UzrrXv/fRv32pZN3r34Lo30V4rHv9OwH9zHx1614/Q66fp65v3evni/Wztrdb9/rZU/0cZkvrXj+XqJ/Ra2vd62fW9PNbqda9fp5JP9vTxbrXz7ro5z4ese71cxD6mYDe1r0+I9fnxf2te31+qs8SB1n3+mxNnzONtO71uYs+gxhr3euevO5Pv6XXyfqn7l1Ot+51L0/3teZa97rPo3sei6x73QPQ9fBy617Xh7pWWmPd69pB++j11r32ldpjbbbutefQ+rvTutd6pLn5oHWvuUrv22PWvcaxXtNzucP+9EG/Q6QoDjvGvkMkZwDTWT+o8TPHQ/NF0Tzmz7EYeo45wRPUAa8EvrhKj6WDRs/TnsjszrF4HjGbR13Nm6c4YY6/f9BvpENuoGuuAsXRQMl8a5WOt0xYmJj1KeE4AmMJo4QAUitpuiOoEIZ3BCUJjqAk0BGUchyBiM1TSogjcCM30LVXmSO4lu8IoOtT2nEExhJGaQGkVgY9R3QDVW8WPUnUCwXTfF6v8rvSgG+E/0MSsxtvWccNiNg4ZYW4AQ9Sba67ytzAdXw3AF2fco4bMJYwygkgtetNdwN6Y94Uhn+9MOsP5GQ33vLgBckJXg9NXkDQ/N4sLU/o11wPdGg3OA5NBJndIMSheZEO4MarzKHdyHdo0PWp4Dg0YwmjggBSq2j6CY7eLN+CT3AqEhxBRaAjuMlxBCI2z01CHIEPqTiVrjJHUInvCKDrc7PjCIwljJsFkFplCSc4epLhxMCzO8cqwLFaFMWN1VLOJqQ5CwmbsMrV+LRoVVvQ7iSfJznB71OujHS/y+1O9Xrd6d5Ud6ryKpWekWTd+r0qWflTUn0ej9vjT0pWKSrD7026PC+7cmV3LJazqBpwFlLVrFuU+XN0ITeS1IU6LWChlLNQLnVWwEK52f7Qlb3P75KkJ4n2nR7Df3Kq4/YQ4vbm4cif11ZYM2qE33/GCs7xD0C74xOAJx8BTwkkPCXY8MToQgP3Py23iaTcJgq3qlXCzZ9jEvsoJtvv9sz9xx/TuLL3+X0TJBGOYnIC/x53sgCSTiYQSTUSkVQLzFUqkYTnNn+O1Z1SyqUiBSxUDQmlVA0Cu9QUwKo1CXHXIrFqLXIp9SOhlPoRWErVFoCn2gQ81SHhqQ65lKqZx/zc1iXltq7wUipOgLDWcxyQS8ULWKj6zkK5VH4BC9VAglVtQJCBWwRYi1sIcTckyV9DolUtGGhQoS1LQWBDqZEAPDUi4OlWEp5uJVvVW/KYn9vGpNw2Fm5VCwsQ1ttM7/pr0G4Fd/1vI3T9twL7CbcLIOnbCUTShEQkTYR3/YsKIJKmTinlUsUFLNQdEkqpOwjs0kwAqzYjxH0niVXvJJZSJUilVAlgKdVcAJ6aE/DUgoSnFuRSqlke83PbkpTblsJLqVIChPUuxwG5VGkBC9XKWSiXKitgoe6WYFXvJsjAPQKsxT2EuFuT5K810aqWI1nVckCr2kYAntoQ8HQvCU/3kq3qPXnMz21bUm7bCreq5QUI630Suv7bwV3/+whd/+3Arn87ASTdjkAk7UlE0t4218wPdv2VC/n+gQ5yXrtFI6YOecyfY0fCHAngdGUgwZmCC9otFZwpAsDpl1Ay+wkqkipAPVMJcaeR1DONWDJXIpXMlYAlc7oAPKUT8JRBwlMGuWROzWN+bjuRctspyDsiwU4X+le+7necrrpfgJnoLMPpKugfnXnAAad6QAA4uwgBJ5Q5H3TKMPWgAHA+JKEMe4hgcboKsM1dCXF3I1m7bsQyzEMqwzzAMqy7ADx1J+CpBwlPPchlWNc85uf2YVJuHxZWhj2Cy4NHqpl4RICZeFTCae1u8Gnto4TT2t3AzfOYAGF6jECePUnk2ZN/WpuAJM/HnTaBelwAefYS0iaA/hGeJ5w2gXpCADiflNAmeJKgIr0FqGdvQtxPkdTzKWKboDqpTVAd2CboIwBPfQh4epqEp6fJbYLeeczPbV9Sbvvy2wRJSDPxjON01TMCzMSzQpxuMhKc/Rxwqn4CwNlfCDihzDnAKcPUAAHgfE5CGfYcweI8L8A2P0+I+wWStXuBWIbVJ5Vh9YFl2IsC8PQiAU8DSXgaSC7Dns9jfm5fIuX2JWFl2CDntFYNEmAmBks4rd0PPq0dTDit3Q/cPEMECNMQAnkOJZHnUP5pbSqSPIc5bQI1TAB5viykTeBHgnO40yZQwwWAc4SENsEIgoqMFKCeIwlxjyKp5yhim+B2UpvgdmCbYLQAPI0m4OkVEp5eIbcJRuYxP7evknL7Kr9NkI40E685Tle9JsBMvC7E6ULfIjPGAacaIwCcY4WAE8qcbzhlmHpDADjHSSjDxhEszngBtnk8Ie4JJGs3gViGtSSVYS2BZdhEAXiaSMDTmyQ8vUkuw8bnMT+3k0i5nSSsDHvLOa1VbwkwE5MlnNYeAp/WTiac1h4Cbp4pAoRpCoE83yaR59v001o39MUEU502gZoqgDynyWgTuBUSnO84bQL1jgBwviuhTfAuQUWmC1DP6YS4Z5DUcwaxTdCW1CZoC2wTzBSAp5kEPL1HwtN75DbB9Dzm53YWKbez6G0CtxdpJmY7TlfNFmAm5ghxutC3yLzvgFO9LwCcc4WAE8qc85wyTM0TAM4PJJRhHxAsznwBtnk+Ie4PSdbuQ2IZlkoqw1KBZdgCAXhaQMDTQhKeFpLLsPl5zM/tR6TcfiSsDFvknNaqRQLMxMcSTmt/A5/Wfkw4rf0NuHkWCxCmxQTyXEIizyX801roiwmWOm0CtVQAeS4T0iZIRILzE6dNoD4RAM5PJbQJPiWoyHIB6rmcEPcKknquILYJupDaBF2AbYLPBODpMwKeVpLwtJLcJliex/zcriLldhW/TZCCNBOfO05XfS7ATHwhxOlC3yKz2gGnWi0AnGuEgBPKnGudMkytFQDOLyWUYV8SLM5XAmzzV4S4vyZZu6+JZdgjpDLsEWAZtk4AntYR8PQNCU/fkMuwr/KYn9tvSbn9VlgZtt45rVXrBZiJ7ySc1p4An9Z+RzitPQHcPBsECNMGAnluJJHnRv5pLfTFBN87bQL1vQDy/EFImyANCc5NTptAbRIAzh8ltAl+JKjIZgHquZkQ9xaSem4htgl6k9oEvYFtgq0C8LSVgKefSHj6idwm2JzH/Nz+TMrtz/Q2gceFNBPbHKertgkwE9tlOF0P9C0yOxxwqh0CwLlTCDihzLnLKcPULgHg3C2hDNtNsDh7BNjmPYS495Ks3V5iGdafVIb1B5Zh+wTgaR8BT/tJeNpPLsP25DE/twdIuT0grAw76JzWqoMCzMQvEk5rz4BPa38hnNaeAW6eQwKE6RCBPA+TyPMw/bTWA30xwRGnTaCOCCDPX4W0CTxIcP7mtAnUbwLAeVRCm+AoQUWOCVDPY4S4j5PU8zixTTCI1CYYBGwTnBCApxMEPJ0k4ekkuU1wLI/5uT1Fyu0pfpsgAWkmTjtOV50WYCbOCHG60LfInHXAqc4KAOc5IeCEMud5pwxT5wWA84KEMuwCweJcFGCbLxLivkSydpeIZdhIUhk2EliGhcWYjyc9R/Ta5Ijh4EmPWyYwLqMMu5jH/NzmJOU2Z4ysMiwXLg9iT2tzxZg/x3D0HBmntRfAp7U6aDRBXQBunggBwhRBIM9IEnlGxtBPa6EvJogC5kEqeUYJIM/chDkywJmMBGc0LmixbYJoAeDMg54jQ0XyEFQkRoB6xhDijiWpZ2wMr00wltQmGAtsE8QJwFMcAU95SXjKS24TAPc/LbfxpNzG89sEqUgzkc9xuiqfADORX4jThb5FpoADTlVAADgLCgEnlDkLOWWYKiQAnIUllGGFCRaniADbXIQQd1GStStKLMPeIpVhbwHLsGIC8FSMgKfiJDwVJ5dhRWLMz+01pNxeI6wMK+Gc1qoSAsxESQmntTnAj2mUJJzW2ueY3ZhLCRCmUgTyvJZEntfST2u90BcTlHbaBKq0APIsI6RNkIEEZ1mnTaDKCgDndRLaBNcRVKScAPUsR4j7epJ6Xk9sE0wntQmmA9sE5QXgqTwBTzeQ8HQDuU1QLsb83N5Iyu2N9DaB1400ExUcp6sqCDATFWU4XS/0LTI3OeBUNwkAZyUh4IQy581OGaZuFgDOyhLKsMoEi1NFgG2uQoi7KsnaVSWWYXNJZdhcYBnmEoAnFwFPioQnRS7DqsSYn1s3KbduYWWYxzmtVR4BZsIr4bQ2Anxa6yWc1kYAT2t9AoTJRyDPBBJ5JvBPa6EvJkh02gQqUQB5JglpE/iQ4Ex22gQqWQA4q0loE1QjqEh1AepZnRB3DZJ61iC2CRaR2gSLgG2CmgLwVJOAp1okPNUitwmqx5if29qk3NbmtwmSkGaijuN0VR0BZqKuEKcLfYtMPQecqp4AcNYXAk4oczZwyjDVQAA4b5FQht1CsDgNBdjmhoS4G5GsXSNiGbacVIYtB5ZhtwrA060EPDUm4akxuQxrGGN+bm8j5fY2YWXY7c5prbpdgJloIuG0Nhp8WtuEcFobDTytbSpAmJoSyPMOEnnewT+thb6YoJnTJlDNBJDnnULaBH4kOJs7bQLVXAA4W0hoE7QgqEhLAerZkhD3XST1vIvYJlhDahOsAbYJWgnAUysCnu4m4elucpugZYz5ub2HlNt7+G2CdKSZaO04XdVagJloI8TpQt8ic68DTnWvAHC2FQJOKHPe55Rh6j4B4GwnoQxrR7A47QXY5vaEuDuQrF0HYhm2nlSGrQeWYR0F4KkjAU8pJDylkMuw9jHm59ZPyq1fWBmW6pzWqlQBZiJNwmltHPi0No1wWhsHPK1NFyBM6QTyzCCRZwb9tNYHfTFBJ6dNoDoJIM/7ZbQJfAoJzs5Om0B1FgDOByS0CR4gqEgXAerZhRD3gyT1fJDYJthMahNsBrYJHhKAp4cIeOpKwlNXcpugS4z5ue1Gym03epvA50Waie6O01XdBZiJHkKcLvQtMg874FQPCwDnI0LACWXOR50yTD0qAJyPSSjDHiNYnJ4CbHNPQtyPk6zd48QybCepDNsJLMN6CcBTLwKeniDh6QlyGdYzxvzcPknK7ZPCyrDezmmt6i3ATDwl4bQ2P/i09inCaW1+4GltHwHC1IdAnk+TyPNp/mkt9MUEfZ02georgDyfEdImSESC81mnTaCeFQDOfhLaBP0IKtJfgHr2J8Q9gKSeA4htgoOkNsFBYJvgOQF4eo6Ap+dJeHqe3CboH2N+bl8g5fYFfpsgBWkmXnScrnpRgJkYKMTpQt8i85IDTvWSAHAOEgJOKHMOdsowNVgAOIdIKMOGECzOUAG2eSgh7mEkazeMWIYdI5Vhx4Bl2MsC8PQyAU/DSXgaTi7DhsaYn9sRpNyOEFaGjXROa9VIAWZilITT2sLg09pRhNPawsDT2tEChGk0gTxfIZHnK/zTWuiLCV512gTqVQHk+ZqQNkEaEpyvO20C9boAcI6R0CYYQ1CRsQLUcywh7jdI6vkGsU1wjtQmOAdsE4wTgKdxBDyNJ+FpPLlNMDbG/NxOIOV2QpA2QTghx6g8TLTlwZ3k8yQn+H3KlZHud7ndqV6vO92b6k5VXqXSM5KsW79XJSt/SqrP43F7/EnJKkVl+L1Jl+eVURQ3Vqei5u/5iQRcvknC5ZtBcBkBzsmSaNxYy4AYn2TPaZJy+RP9aWkuj9v6zxMyvK60BFeGJ9XldVmA9aalupJSEvwJ/vQMryctIS3J73NZSE5KuYxLlx3j2R1LAsYnETD+Fgnjb5F1bWKM+bmdTMrt5EButZZF2rjD/kHjr0IYdn+w5nmjkHneQJoneq/NA+rI/GgZa1Me12F35bTNc0rM5X++rbkGPekVVnIrhuGPHCoCx1oBBJOdEKfYCDGPLQfMjbEQGMsiwFgZlz/+IKFnd2yVeWPP69QAmKfFBBYhczGmBpTU/t20EFRirAX5l6B3B0CvpsbgNtC0GA5Q0KSBjPkdoNMLC8OrhSZITWy5wDlkEW92x3rX8PXQeHmX4OaBcTMqxCTNf4y47yxmdtyLSHE3B8ed+UHzxHTgfgSutULmz+4lpv9FZyG7uYy2sBQD9BF6vATCiU4MkM9ngHmNsSax4DVJJKxJLHBNZsaEhntc2fuoZOC6VAfm7z0BmM4LxnRdAqbzAtdkloA1iQevSX3CmsQD12S2EJ5pCFyXW4H5myMkf02B+WsGzN/7hj9Novdwy2h8bTFXQNytCHHPExB3W0LcHwiIux0h7vkC4u5AiPtDAXF3JsS9QEDcXQhxLxQQdw9C3B8JiPsRQtyLBMT9GCHujwXE3ZcQ92IBcT9LiHuJgLhfIMS9VEDcAwlxLxMQ9yBC3J8IiHs0Ie5PBcT9KiHu5QLiHkeIe4WAuCcQ4v5MQNxvEuJeCYxb9yT1AxsVAuPpc0N9TqXPWmpbc9f9fd1P1j1R3dfTPS7d72lt/We6/6F7Abou9lv/nmFdulbUdVNX617XEdpTa3/ZS79B3rq059L+Y4B1r/VYa5Pm6aHWv4+wLs1deh+Pse41rvUa63gnW/8+LTrsTx/0ufuqq+DcPWdgzbN+UONnjofeT6tizJ/j5+yXjbiy9/n9Cdt3gQ/y6bE+J7xs5HPgHL+IEbN51NW8eb4gzPH3D/qpZOQGWn2VPem1OgRPjSPXZ43jCIwljDUCSG2t6Y5AW3+0I1hLcARrgXP80nEEIjbPl0IcgRu5gb66yhzBV3xHAF2frx1HYCxhfC2A1NaZ7gj0z+3RjmAdwRGsA87xG8cRiNg83whxBB7kBvr2KnME3/IdAXR91juOwFjCWC+A1L4z3RHol6egHcF3BEfwHXCOGxxHIGLzbBDiCLzIDbTxKnMEG/mOALo+3zuOwFjC+F4Aqf1guiPQr7pDO4IfCI7gB+AcNzmOQMTm2STEEfiQG+jHq8wR/Mh3BND12ew4AmMJY7MAUttiuiPQL0BFO4ItBEewBTjHrY4jELF5tgpxBAnIDfTTVeYIfuI7Auj6/Ow4AmMJ42cBpLYNPUf0C4rmRf/REbiy9/n9VfNoh7GN4DC2Aee43XEYIjbjdiEOIxG5gXZcZQ5jB99hQNdnp+MwjCWMnQJIbZfpPYcphJ7DLoIj2AWc427HEYjYPLuFOALor+X22MZyp/gSU70pXmsIf0Kq25ukvAme1IwMv/Ipd5pPJXncaQl+T0ZCSpLb607MUP4E638pXSW6L8/LrjjZHYvlCPbE/Pe/HOzK3uf/yA1NRsj13hvDyeveqzyv+8DkkYMQq54j+t0m+0l42h/D+/sSn4PbEqsD46HbMZ8D3xe9Gvi+6AMCsH6AgPWDJKwf/Ausu7L3+b99b3pufyHl9pdAbqVWnd2izJ/jISQfSF2o0wIW6rCzUC51VsBCHUGXogyJPUKQgV8FWItfCXH/RpK/3/6iLEP03t4jlGXvAa35UQF4OkrA0zESno6RreqvMebn9jgpt8eFW9Uq4ebP8QT7gCS74KoNfgRDj3WCQNK1gf2EkwJI+iSBSE6RiORUYK5SiSQ8t4Byj3VYBN6o0J9EnJFzkklb+DMx5s/xrBBwQn/Bew4XtFsqOM8JAOd5Cb2N8wS5vyDA5lwgxH2RZHMuknsbcwi2eQ6Q8C4JwNMlAp7CYjl40uOWCYzL6G1ciDE/tzlIuc1hy20YJ8dQp5sz1jETwBzQ5pgrVoCZ0JNEb9TwWPPJP5wQdwSJoCJiuWbifYKZeB9IeJEC8BRJwFMUCU9RZDMB3P+03OYm5TY330wkIc1ENDAPUs1EtAAzkYcwRwY4k5HgjHHAqWIEgDNWCDihzBnnlGEqTgA480oow/ISLE68ANscT4g7H8na5SOWYa2jOT8jag18FCK/ADzlJ+CpAAlPBchlWHys+bktSMptQWFlWCFcHjxSzUQhAWaiMHqOWUGJ6Od9AD7M0UGjCeoD4OYpIkCYihDIsyiJPIva5pr5Aa9/KpI8izltAlVMAHkWF9ImSEOC8xoHnOoaAeAsIQScUOYs6fSwVEkB4CwloYdVimBxrhVg7a4lxF2aZO1KE3tYflIPyw/sYZURgKcyBDyVJeGpLLmHdW2s+bm9jpTb6/g9LKjTLeeYCVVOgJm4XoKZuJ6wUcsLIP/yhLhvIBHUDUQzkUEyExlAM3GjADzdSMBTBRKeKpDNRPlY83NbkZTbinQzoVxIM3GT0zZTNwkwE5VktM0U9IWqNzvgVDcLAGdlIeCEMmcVpwxTVQSAs6qEMqwqweK4BNhmFyFuRbJ2iliGdSWVYV2BZZhbAJ7cBDx5SHjykMswV6z5ufWScusVVob5nOcSlU+AmUiQ8FziR+DnEhMIzyV+BNw8iQKEKZFAnkkk8kyiP5eooG/9SnbaBCpZAHlWE9ImgL5FproDTlVdADhrCAEnlDlrOj0sVVMAOGtJ6GHVIlic2gKsXW1C3HVI1q4OsYfVi9TD6gXsYdUVgKe6BDzVI+GpHrmHVTvW/NzWJ+W2Pr+HBXW6DRwzoRoIMBO3SDATtxA2akMB5N+QEHcjEkE1IpqJp0hm4imgmbhVAJ5uJeCpMQlPjclmomGs+bm9jZTb2/hmAvqijtudtpm6XYCZaCKkbQZ9X2JTB5yqqQBw3iEEnFDmbOaUYaqZAHDeKaEMu5NgcZoLsM3NCXG3IFm7FsQybACpDBsALMNaCsBTSwKe7iLh6S5yGdY81vzctiLltpWwMuxu57lEdbcAM3GPhOcSl4KfS7yH8FziUuDmaS1AmFoTyLMNiTzb8J9LhL71616nTaDuFUCebYW0CaBvkbnPAae6TwA42wkBJ5Q52zs9LNVeADg7SOhhdSBYnI4CrF1HQtwpJGuXQuxhDSX1sIYCe1h+AXjyE/CUSsJTKrmH1THW/NymkXKbxu9hQZ1uumMmVLoAM5EhwUxkEDZqJwHk34kQ9/0kgrqfaCZGkMzECKCZ6CwAT50JeHqAhKcHyGaiU6z5ue1Cym0XuplwQ1/U8aDTNlMPCjATD8lom7mh70vs6oBTdRUAzm5CwAllzu5OGaa6CwBnDwllWA+CxXlYgG1+mBD3IyRr9wixDBtDKsPGAMuwRwXg6VECnh4j4ekxchn2cKz5ue1Jym1PYWXY485ziepxAWail4TnEleAn0vsRXgucQVw8zwhQJieIJDnkyTyfJL+XKIb+tav3k6bQPUWQJ5PCWkTQN8i08cBp+ojAJxPCwEnlDn7Oj0s1VcAOJ+R0MN6hmBxnhVg7Z4lxN2PZO36EXtYk0k9rMnAHlZ/AXjqT8DTABKeBpB7WM/Gmp/b50i5fY7fw4I63ecdM6GeF2AmXpBgJl4gbNQXBZD/i4S4B5IIaiDRTEwjmYlpQDPxkgA8vUTA0yASngaRzcSLsebndjApt4ODmIlwQo5ReRhiy4M7xZeY6k3xWkP4E1Ld3iTlTfCkZmT4lU+503wqyeNOS/B7MhJSktxed2KG8idY/0vpKtF9eV53FsON1byY+Xt+CAGXQ0m4HPoXez67c/4yoCGo8b4OjJcLvGZfRuPG+hqob8ME6NswAtZfJmH9ZbK+DYk1P7fDSbkd/jeKZcTZOmqsEcC1YsS60uKRjUBe0uO58uBxvxHIdyPBfMdYk+/Ba6IIa/I9cE1GGa5BPwQ8AZonRwvQ3tEEfXiFpA+vELXXY+0hJJ/7AuOhc/uqAEy9Soj7NRKmXiP7udGx5uf2dVJuXyfmNmfuP9aFrux9VDJpv44RsF/HEOIeS8LUWNtcGd5sE9ibVSd4s01Ab/aG4fj8keTNxgnYl+MI+3I8aV+OJ3J9TbA3q03i+gkCMDWBEPdEEqYmkr3ZuFjzc/smKbdvEnv2Wvc2g3W0HkFHNwN1dJKAvtMW8JrUJ6zJFuCavGU4HxfMzfE2kwXo0GQCV04hceUUog7dAvY2jUje5m0BmHqbEPdUEqamkr3N5FjzczuNlNtpxNxujcb2nW4n7dd3BOzXdwhxv0vC1LvkvtNPYG/WlODNfgJ6s+mG47MEyZvNELAvZxD25UzSvpxJ5PpmYG/WnMT17wnA1HuEuGeRMDWL7M1mxJqf29mk3M4m951+BuvoXQQd/Rmoo3ME9J22gdekFWFNtgHX5H3D+bgcydvMFaBDcwlcOY/ElfOIOnQP2Nu0IXmbDwRg6gNC3PNJmJpP9jZzY83P7Yek3H5IzO12cN+pHWm/LhCwXxcQ4l5IwtRCct9pB9ibdSR4sx1Ab/aR4fisRPJmiwTsy0WEffkxaV9+TOT6VLA3Sydx/WIBmFpMiHsJCVNLyN5sUaz5uV1Kyu1Sct9pJ1hHOxN0dCdQR5cJ6DvtAq9JF8Ka7AKuySeG87GH5G0+FaBDnxK4cjmJK5cTdagr2Nt0J3mbFQIwtYIQ92ckTH1G9jafxpqf25Wk3K4k5nY3uO/0GGm/rhKwX1cR4v6chKnPyX2nPWBv1ovgzfYAvdkXhuOzOsmbrRawL1cT9uUa0r5cQ+T63mBv1ofE9WsFYGotIe4vSZj6kuzNVsean9uvSLn9itx32gvW0WcJOroXqKNfC+g77QOvSX/CmuwDrsk6w/m4PsnbfCNAh74hcOW3JK78lqhDz4O9zYskb7NeAKbWE+L+joSp78je5ptY83O7gZTbDcTc7gf3nYaQ9utGAft1IyHu70mY+p7cdzoA9mYvE7zZAaA3+8FwfN5O8mabBOzLTYR9+SNpX/5I5PqRYG82msT1mwVgajMh7i0kTG0he7NNsebndispt1vJfaeDYB19naCjB4E6+pOAvtMv4DUZS1iTX4Br8rPhfNyS5G22CdChbQSu3E7iyu1EHRoP9jYTSd5mhwBM7SDEvZOEqZ1kb7Mt1vzc7iLldhcxt4fAfacppP26W8B+3U2Iew8JU3vIfafDYG82jeDNDgO92V7D8dmW5M32CdiX+wj7cj9pX+4ncv10sDebSeL6AwIwdYAQ90ESpg6Svdm+WPNz+wspt7+Q+05HwDo6h6CjR4A6ekhA3+lX8JrMJazJr8A1OWw4H6eSvM0RATp0hMCVv5K48leiDs0He5sFJG/zmwBM/UaI+ygJU0fJ3uZIrPm5PUbK7TFibn8D950Wk/brcQH79Tgh7hMkTJ0g952Ogr3ZMoI3Owr0ZicNx2cXkjc7JWBfniLsy9OkfXmayPXLwd7sMxLXnxGAqTOEuM+SMHWW7M1OxZqf23Ok3J4j952OgXX0C4KOHgPq6HkBfafj4DVZQ1iT48A1uWA4Hz9C8jYXBejQRQJXXiJx5SWiDn0F9jbrSN4mLM58TOk5ouPOEcfBlB63DAlTmfvL9NzmJOU2JzG3J8B9pw2k/ZpLwH7NRcBUOAlT4XHcvtNJsDf7geDNTgK9WYTh+OxN8maRAvZlJGFfRpH2ZRSR6zeDvdlWEtfnFoCp3ARMRZMwFU32ZkAOoOU2Dym3eeK4fadTYB3dTtDRU0AdjQHvfcaanAavyU7CmpwGrkms4Xzcn+Rt4gToUByBK/OSuDIvUYf2gL3NPpK3iReAqXgCpvKRMJWP7G3i4szPbX5SbvMTc3sG3Hc6RNqvBQTs1wIETBUkYaogue90FuzNfiV4s7NAb1bIcHwOInmzwgL2ZWHCvixC2pdFiFx/DOzNTpC4vqgATBUlYKoYCVPFyN6scJz5uS1Oym1xct/pHFhHzxB09BxQR68R0Hc6D16Tc4Q1OQ9ckxKG8/FIkrcpKUCHShK4shSJK0sRdegi2NuExXC8zbUCMHUtAVOlSZgqTfY2JePMz20ZUm7LEHN7Adx3iiDt17IC9mtZAqauI2HqOnLf6SLYm+WOIWgV0JuVMxyfY0ne7HoB+/J6wr4sT9qX5YlcHxOD9WZxJK6/QQCmbiBg6kYSpm4ke7Pr48zPbQVSbiuQ+06XwDqan6Cjl4A6WlFA3yksD3ZNChLWxD7H7MZ8k+F8/BbJ21QSoEOVCFx5M4krbybqUBGwtylG8jaVBWCqMgFTVUiYqkL2NpXizM9tVVJuqxJzmyMPtu9UirRfXQL2q4uAKUXClCL3nXKCvVkZgjfLCfRmbsPxOZ3kzTwC9qWHsC+9pH3pJXJ9ObA3K0/iep8ATPkImEogYSqB7M08cebnNpGU20Ry3ykXWEcrEnQ0F1BHkwT0ncLBa1KJsCbhwDVJNpyP55K8TTUBOlSNwJXVSVxZnahDVcDexkXyNjUEYKoGAVM1SZiqSfY21eLMz20tUm5rEXMbAe47+Uj7tbaA/VqbgKk6JEzVIfedIsHeLIngzSKB3qyu4fhcRPJm9QTsy3qEfVmftC/rE7m+Otib1SRxfQMBmGpAwNQtJEzdQvZm9eLMz21DUm4bkvtOUWAdrUvQ0SigjjYS0HfKDV6T+oQ1yQ1ck1sN5+PlJG/TWIAONSZw5W0krryNqEMNwd7mVpK3uV0Apm4nYKoJCVNNyN6mcZz5uW1Kym1TYm6jwX2npqT9eoeA/XoHAVPNSJhqRu475QF7szsJ3iwP0JvdaTg+15C8WXMB+7I5YV+2IO3LFkSubwn2Zq1IXN9SAKZaEjB1FwlTd5G9WfM483PbipTbVuS+UwxYR9sQdDQGqKN3C+g7xYLXpC1hTWKBa3KP4Xy8nuRtWgvQodYErmxD4so2RB1qD/Y2HUne5l4BmLqXgKm2JEy1JXub1nHm5/Y+Um7vI+Y2Dtx3Sift13YC9ms7AqbakzDVntx3ygv2ZvcTvFleoDfrYDg+N5O8WUcB+7IjYV+mkPZlCpHru4C92UMkrvcLwJSfgKlUEqZSyd6sY5z5uU0j5TaN3HeKB+toD4KOxgN1NF1A3ykfeE0eIaxJPuCaZBjOxztJ3qaTAB3qRODK+0lceT9Rh3qCvU0vkrfpLABTnQmYeoCEqQfI3qZTnPm57ULKbRdibvOD+059SPv1QQH79UECph4iYeohct+pANibPUPwZgWA3qyr4fg8SPJm3QTsy26EfdmdtC+7E7m+P9ibPUfi+h4CMNWDgKmHSZh6mOzNusWZn9tHSLl9hNx3KgjW0YEEHS0I1NFHBfSdCoHXZBBhTQoB1+Qxw/n4GMnb9BSgQz0JXPk4iSsfJ+rQULC3eZnkbXoJwFQvAqaeIGHqCbK36Rlnfm6fJOX2SWJuC4P7TqNJ+7W3gP3am4Cpp0iYeorcdyoC9mavEbxZEaA362M4Ps+RvNnTAvbl04R92Ze0L/sSuX4s2JuNI3H9MwIw9QwBU8+SMPUs2Zs9HWd+bvuRctuPmNsl4L81vCyaowH9BezX/gRMDSBhagARUxPBGjCJpAHPCcDUcwRMPU/C1PNkDegfZ35uXyDl9oVAbsOtK9qGNfsHjb/KYdhYMj8vxhEn/GIcftyBcTiAsOIeGPefBIPGdYXZPrnAc94HNB0HYnDr8xKQZIKtdbb/aGNgrdEEWwU4x0GGC6te40EE8h9MIv/BNmGVkoshhmNAxzyEEPdQEgaG/gUGsjtnzcUMDJy+houB7M7vACnuM9dwNDgCvAdM1eBhQA0GYlCducZ8ThtGwPPLJE57mVgwZvK76bkdTsrtcKJnGBLL4c2cJczeX8NIcecqwdGLXOB5jgDuJ+Baq1yG40ZjZgQBNyNJ3DHSxh2ZH7T3GBKL3ZeonI6K4/CZaRzBwPgoAsZHkzA+muw9RsSZn9tXSLl9xdasjgj7D3fYPyY3q5nzvFnIPCuR5onea6wa1pXNT7A1ye5+rRp2eY+hc5gLOFbVMCynZH5etfEfRbxQk9akl8e2SEzwI09EEafhGZc/riChZ3dslXljz+trgUOv1+MCoMhUoNcCaLF/93oQVxsuZEH+JXO4A8yhXgO62tfBQEGzpN7MmcAAri3DNSf0J52+xJpdLSQ8R4o7TkgnZQyQJ4BrrZD5s3PvGGK1tRH8CKN+1Gwk4XGzseATUXQevyfkcRQhj2/EhWaPu7L3UaOBHa5XgR2ucYbjcBMBh28QcDheCA7HAXE4AYjDCYbjcDMBh5MIOJxoeB63EPL4FiGPbwrZz5OB+/lt4H6eZDgOfyLgcDoBh28JweEMIA7fA+JwsuE4/JmAwzkEHE4xPI/bCHl8n5DHt4Xs57nA/fwBcD9PNRyHOwg4/IiAw2lCcLgIiMPFQBy+YzgOdxJwuIyAw3cNz+MuQh4/IeRxupD9/ClwP68A7ucZhuNwDwGHXxBwOFMIDlcDcbgWiMP3DMfhXgIOvybgcJbhedxHyOM6Qh5nC9nP3wD383rgfp5jOA4PEHD4AwGH7wvB4SYgDjcDcTjXcBweJODwJwIO5xmex18IefyZkMcPhOznbcD9vAO4n+cbjsPDBBzuJeDwQyE43AfE4QEgDhcYjsMjBBweIuBwoeF5/JWQx8OEPH4kZD8fAe7n34D7eZHhODxKwOFJAg4/FoLDU0AcngHicLHhODxGwOF5Ag6XGJ7H44Q8XiDkcamQ/XwRuJ/DgL8TWmY4Dk8ScBhB+E3LJ0JwGAn8TUtuIA4/NRyHpwg4jCHgcLnheTxNyGMsIY8rhOznOOB+jgfu588Mx+FZAg4LEXC4UggOCwNxWBSIw1WG4/AcAYfXEHD4ueF5PE/IYwlCHr8Qsp9LAvfztcD9vNpwHF4k4LAcAYdrhODweiAObwDicK3hOLxEwGFFAg6/NDyPYXnwebyJkMevhOznSsD9XBm4n782HIc5CTh0E3C4TggOPUAc+oA4/MZwHOYi4DCJgMNvDc9jOCGPyYQ8rheyn6sB93MN4H7+znAcRhJwWJeAww1CcFgPiMMGQBxuNByHUQQcNiLg8HvD85ibkMdbCXn8Qch+bgzcz7cD9/Mmw3GYh4DDOwk4/FEIDpsDcdgSiMPNhuMwhoDDuwk43GJ4HmMJebyHkMetQvZza+B+vhe4n38yHId5CTjsQMDhz0Jw2BGIQz8Qh9sMx2E8AYfpBBxuNzyP+Qh5zCDkcYeQ/dwJuJ87A/fzTsNxWICAw64EHO4SgsNuQBz2AOJwt+E4LEjA4aMEHO4xPI+FCHl8jJDHvUL2c0/gfu4F3M/7DMdhEQIO+xBwuF8IDp8G4vAZIA4PAPOnc+a2ro6B8fTfJNF/T0P/TYgx1vrrv2mg38uv3ymv34eu3+n9jn7fuvVP/V5l/U5g/T5b/U7WBdb3+p2i+r2Y+p2O+n2E+p16q6zv9Tvh9HvN9Du59Puk9DuRNur361r/1O+l0e9U0e8D0e+02G19r9/JoN8roH8Tr3/PrX+TfNz6Xv+mVv8uVP+mUf8eT/+mLJd16d9E6d/16N+k6N9T6N8EFLAu/Uy7fi5bP1Osn4fVz3SWtS79TKJ+rk4/E6afZ9LP5LisSz9Top+L0Gf6+jxan6nWti59JqjPtfSZjD5P0D3xO6xL93R1X1L31HQ/SPc02lmXrsl1XalrIu3ntSd90Lq0p9K+QGua5mPNKb2tS+8Jva5ZP+i/M3QQiGlT/85QzgCms35Q42eOh/6jg8C1oc3xF/Qc0SKoAx4EJFs9lg4aPc9fgHM8FCdm8ygWMCVsnkOEOf7+Qf/VSuQGOnwVKI79L9vpeMuEhYlZnyOOIzCWMI4IILVfTXcElcPwjuBXgiP4FTjH3xxHIGLz/CbEEbiRG+joVeYIjvIdAXR9jjmOwFjCOCaA1I6j58j4g/B6kqiGcZrP61V+V9qgOE4SsxvvCccNiNg4J4S4AQ9SbU5eZW7gJN8NQNfnlOMGjCWMUwJI7bTpbkBvzKph+OPjXMCxqgLjPQNekJzg9dDkBQTN783SM4R+zWkgyZ51HJoIMjsrxKF5kQ7g3FXm0M7xHRp0fc47Ds1YwjgvgNQumH6CozfLq+ATnAsER3ABOMeLjiMQsXkuCnEEPqTiXLrKHMElviOArk9YXscRuLL5yRwPTRjAtaHNMQd6jowTHD3JcGLg2Z1jTuBYp68B9n+ucZyFhE2YkzDH3z8mP42Yyxa0O8nnSU7w+5QrI93vcrtTvV53ujfVnaq8SqVnJFm3fq9KVv6UVJ/H4/b4k5JVisrwe5Muz8uuXNkdi+UsdLxlwi6XIhLVrFuU+XMMR24kqQt1WsBCRTgLZbWYBSxUJNsfurL3+V2S9CTRvjMKHDgj7ihC3LnzcuQvd97/FNaMGmEcocs3Dmh3ogXgKZqApzwkPOWx4YnRhQbuf1puY0i5jRFuVauEmz/HWLSwoh/O0O8EQD7mqsfSQaM36xjg36GOE0DScQQiyUsikryBuUolkvDc5s8x3imlrDJFwELlk1BK5SOwS34BrJqfEHcBEqsWIJdSEwil1ARgKVVQAJ4KEvBUiISnQuRSKn9e83NbmJTbwsJLqTgBwlrEcUCWDRSwUEWdhXKp/AIWqpgEq1qMIAPFBViL4oS4ryHJ3zVkqzqJYFUnAa1qCQF4KkHAU0kSnkqSrWrxvObnthQpt6WEW9XCAoT1WtO7/u8Quv7XErr+7wC7/qUFkHRpApGUIRFJGeFd/6ICiKSsU0q5VHEBC3WdhFLqOgK7lBPAquUIcV9PYtXryaXUZEIpNRlYSpUXgKfyBDzdQMLTDeRSqlxe83N7Iym3NwovpUoJENYKjgNyqdICFqqis1CWXxewUDdJsKo3EWSgkgBrUYkQ980k+buZbFWnEqzqVKBVrSwAT5UJeKpCwlMVslWtlNf83FYl5baqcKtaXoCwukzv+i8gdP1dhK7/AmDXXwkgaUUgEjeJSNy2uWZ+sOuvXMj3D3iAeZBKnp685s/RS5gjAZyuDCQ4fbig3VLB6RMAzgQJJXMCQUUSBahnIiHuJJJ6JpFL5ncIJfM7QMJLFoCnZAKeqpHwVI1cMifmNT+31Um5rW7LbRglxwr6V75qOE5X1RBgJmrKcLoK+kdnajngVLUEgLO2EHBCmbOOU4apOgLAWVdCGVaXYHHqCbDN9Qhx1ydZu/rkMmwGoQybASS8BgLw1ICAp1tIeLqFXIbVy2t+bhuScttQWBnWCJcHj1Qz0UiAmbjV9NPaVYTT2lsJp7WrgKe1jQUIU2MCed5GIs/b+Ke1CUjyvN1pE6jbBZBnEyFtAugf4WnqtAlUUwHgvENCm+AOgoo0E6CezQhx30lSzzvJbYL3CG2C94CE11wAnpoT8NSChKcW5DZBs7zm57YlKbct+W2CJKSZuMtxuuouAWailRCnm4wE590OONXdAsB5jxBwQpmztVOGqdYCwNlGQhnWhmBx7hVgm+8lxN2WZO3aksuwOYQybA6Q8O4TgKf7CHhqR8JTO3IZdm9e83PbnpTb9sLKsA7Oaa3qIMBMdDT9tHYj4bS2I+G0diPwtDZFgDClEMjTTyJPP/+0NhVJnqlOm0ClCiDPNCFtAj8SnOlOm0ClCwBnhoQ2QQZBRToJUM9OhLjvJ6nn/eQ2wVxCm2AukPA6C8BTZwKeHiDh6QFym6BTXvNz24WU2y78NkE60kw86Dhd9aAAM/GQEKcLfYtMVwecqqsAcHYTAk4oc3Z3yjDVXQA4e0gow3oQLM7DAmzzw4S4HyFZu0fIZdh8Qhk2H0h4jwrA06MEPD1GwtNj5DLs4bzm57YnKbc9hZVhjzuntepxAWail+mntbsJp7W9CKe1u4GntU8IEKYnCOT5JIk8n6Sf1rqhLybo7bQJVG8B5PmUjDaBWyHB2cdpE6g+AsD5tIQ2wdMEFekrQD37EuJ+hqSez5DbBAsIbYIFQMJ7VgCeniXgqR8JT/3IbYK+ec3PbX9SbvvT2wRuL9JMDHCcrhogwEw8J8TpQt8i87wDTvW8AHC+IAScUOZ80SnD1IsCwDlQQhk2kGBxXhJgm18ixD2IZO0GkcuwRYQybBGQ8AYLwNNgAp6GkPA0hFyGvZTX/NwOJeV2qLAybJhzWquGCTATL5t+WnuccFr7MuG09jjwtHa4AGEaTiDPESTyHME/rYW+mGCk0yZQIwWQ5yghbYJEJDhHO20CNVoAOF+R0CZ4haAirwpQz1cJcb9GUs/XyG2CxYQ2wWIg4b0uAE+vE/A0hoSnMeQ2wat5zc/tWFJux/LbBClIM/GG43TVGwLMxDghThf6FpnxDjjVeAHgnCAEnFDmnOiUYWqiAHC+KaEMe5NgcSYJsM2TCHG/RbJ2b5HLsGWEMmwZkPAmC8DTZAKeppDwNIVchk3Ka35u3ybl9m1hZdhU57RWTRVgJqaZflqbKw5/WjuNcFqbC7h53hEgTO8QyPNdEnm+yz+thb6YYLrTJlDTBZDnDCFtgjQkOGc6bQI1UwA435PQJniPoCKzBKjnLELcs0nqOZvcJviU0Cb4FEh4cwTgaQ4BT++T8PQ+uU0wK6/5uZ1Lyu1cepvA40KaiXmO01XzBJiJD2Q4XQ/0LTLzHXCq+QLA+aEQcEKZc4FThqkFAsC5UEIZtpBgcT4SYJs/IsS9iGTtFpHLsM8IZdhnQML7WACePibgaTEJT4vJZdhHec3P7RJSbpcIK8OWOqe1aqkAM7HM9NPaAoTT2mWE09oCwM3ziQBh+oRAnp+SyPNT+mmtB/piguVOm0AtF0CeK4S0CTxIcH7mtAnUZwLAuVJCm2AlQUVWCVDPVYS4Pyep5+fkNsEqQptgFZDwvhCApy8IeFpNwtNqcptgVV7zc7uGlNs1/DZBAtJMrHWcrlorwEx8KcTpQt8i85UDTvWVAHB+LQScUOZc55Rhap0AcH4joQz7hmBxvhVgm78lxL2eZO3Wk8uw1YQybDWQ8L4TgKfvCHjaQMLTBnIZ9m1e83O7kZTbjcLKsO+d01r1vQAz8YPpp7VlCae1PxBOa8sCN88mAcK0iUCeP5LI80f+aS30xQSbnTaB2iyAPLcIaRMkI8G51WkTqK0CwPmThDbBTwQV+VmAev5MiHsbST23kdsEawltgrVAwtsuAE/bCXjaQcLTDnKb4Oe85ud2Jym3O/ltglSkmdjlOF21S4CZ2C3E6ULfIrPHAafaIwCce4WAE8qc+5wyTO0TAM79Esqw/QSLc0CAbT5AiPsgydodJJdhXxPKsK+BhPeLADz9QsDTIRKeDpHLsAN5zc/tYVJuDwsrw444p7XqiAAz8avpp7Uuwmntr4TTWhdw8/wmQJh+I5DnURJ5HqWf1nqhLyY45rQJ1DEB5HlcSJsgAwnOE06bQJ0QAM6TEtoEJwkqckqAep4ixH2apJ6nyW2Cbwhtgm+AhHdGAJ7OEPB0loSns+Q2wam85uf2HCm35+htAq8baSbOO05XnRdgJi7IcLpe6FtkLjrgVBcFgPOSEHBCmTMs3inDgDmgzTEHeo4M+6gnibY4OcGBM+LOSYg7VzzH2ulxy/wXkCLKsO8IZdh3QMILF4CncAKeIkh4iojnlmHA/U/LbSQpt5HxssqwKFwexJ7WRgkwE7nRc0Sf1tYmnNbqoNEEVRu4eaIFCFM0gTzzkMgzTzz9tBb6YoIYYB6kkmeMAPKMJcyRAU4fEpxxTptAxQkAZ14JbYK8BBWJF6Ce8YS485HUMx+5TbCR0CbYCCS8/ALwlJ+ApwIkPBUgtwni483PbUFSbgvy2wRJSDNRyHG6qpAAM1FYiNOFvkWmiANOVUQAOIsKASeUOYs5ZZgqJgCcxSWUYcUJFucaAbb5GkLcJUjWrgS5DNtEKMM2AQmvpAA8lSTgqRQJT6XIZdg18ebn9lpSbq8VVoaVdk5rVWkBZqKM6ae1dxBOa8sQTmvvAG6esgKEqSyBPK8jked1/NNa6IsJyjltAlVOAHleL6RN4EeCs7zTJlDlBYDzBgltghsIKnKjAPW8kRB3BZJ6ViC3CTYT2gSbgYRXUQCeKhLwdBMJTzeR2wQ3xpuf20qk3FbitwnSkWbiZsfpqpsFmInKQpwu9C0yVRxwqioCwFlVCDihzOlyyjDlEgBOJaEMUwSL4xZgm92EuD0ka+chl2E/Ecqwn4CE5xWAJy8BTz4SnnzkMswdb35uE0i5TRBWhiU6p7UqUYCZSDL9tLYd4bQ2iXBa2w64eZIFCFMygTyrkcizGv201gd9MUF1p02gqgsgzxoy2gQ+hQRnTadNoGoKAGctCW2CWgQVqS1APWsT4q5DUs865DbBNkKbYBuQ8OoKwFNdAp7qkfBUj9wmqB1vfm7rk3Jbn94m8HmRZqKB43RVAwFm4hYhThf6FpmGDjhVQwHgbCQEnFDmvNUpw9StAsDZWEIZ1phgcW4TYJtvI8R9O8na3U4uw3YSyrCdQMJrIgBPTQh4akrCU1NyGXZbvPm5vYOU2zuElWHNnNNa1UyAmbjT9NPaBwmntXcSTmsfBG6e5gKEqTmBPFuQyLMF/7QW+mKClk6bQLUUQJ53CWkTJCLB2cppE6hWAsB5t4Q2wd0EFblHgHreQ4i7NUk9W5PbBLsJbYLdQMJrIwBPbQh4upeEp3vJbYJ74s3PbVtSbtvy2wQpSDNxn+N01X0CzEQ7IU4X+haZ9g44VXsB4OwgBJxQ5uzolGGqowBwpkgow1IIFscvwDb7CXGnkqxdKrkM20cow/YBCS9NAJ7SCHhKJ+EpnVyG+ePNz20GKbcZwsqwTs5preokwEzcb/ppbW/Cae39hNPa3sDN01mAMHUmkOcDJPJ8gH9aC30xQRenTaC6CCDPB4W0CdKQ4HzIaROohwSAs6uENkFXgop0E6Ce3QhxdyepZ3dym+AAoU1wAEh4PQTgqQcBTw+T8PQwuU3QLd783D5Cyu0jQdoE4YQco/LwqC0P7iSfJznB71OujHS/y+1O9Xrd6d5Ud6ryKpWekWTd+r0qWflTUn0ej9vjT0pWKSrD7026PK/YErix4kqYv+cfJeDyMRIuHwuCywhwTvoDuwTPATHe057TJOXyJ/rT0lwet/WfJ2R4XWkJrgxPqsvrsgDrTUt1JaUk+BP86RleT1pCWpLf57KQnJRyGZcuO8azO5YEjPckYPxxEsYfJ+vao/Hm57YXKbe9ArnVWhZp4w77B42/ymHY/cGa581C5lmJNE/0XhsC1JFhcTLW5gxwnjlt83wi/vI/n9Rcg570QGvSVcLwRw5VgGMNBILJTohP2Agxjy0HzI0xAhjLKMBYGZc//iChZ3dslXljz2vvAJifig8sQuZi9A4oqf27p0JQibEW5F+C3h0Aveodj9tAT8VzgAI/pwTG3Afo9MLC8GqhCVITWy5wDlnEm92xnjZ8PTRenia4eWDcjAoxSfMfI+53S5od9yhS3NPBcWd+0DzRF7gfgWutkPmze4m+f9FZyDbWY8LCZsQA82mNdSgGbz7tc8xuzM+AeY2xJjPBa3KYsCYzgWvybHxouMeVvY/6FbguR4H56ycA07PAmD5NwPQs4Jr0F7Ams8FrcpawJrOBazJACM9cAK7LJWD+nhOSv/BY3FiRsbj8PS+AE+aCOSFPLJ4T5gIx/YKANZkHXpNYwprMA67Ji0J4Jh7IM/mBPDNQAKbngzFdnIDp+UBMvyRgTT4Er0kJwpp8CFyTQUJ45logz5QB8sxgIfkrD8zfjcD8DRHACQvAnFCJwAkLgJwwVMCaLASvSWXCmiwErskwITzjAvKMG8gzLwvA9CIwpqsRML0IiOnhAtbkY/Ca1CCsycfANRkhhGdqA3mmLpBnRgrJX0Ng/m4F5m+UAE5YDOaEJgROWAzkhNEC1mQJeE3uIKzJEuCavCKEZ5oDeaYlkGdeFYDpZWBMtyVgehkQ068JWJNPwGvSjrAmnwDX5HUhPNMRyDN+IM+MEZK/TsD8dQbmb6wATvgUzAkPETjhUyAnvCFgTZaD16QbYU2WA9dknBCeeRjIM48CeWa8AEx/Bsb0UwRMfwbE9AQBa7ISvCZPE9ZkJXBNJgrhmWeBPNMfyDNvCsnfi8D8vQTM3yRg/nTOPNZVITCe/l2Efg5fP0t+0toz+vll/bysfuZTP7eon5PTz2XpZ4uKWDHp51n08xP6GQB9jq3PTfU5nT5rSrT+c32+ofvpuies+5q6j6b7Nrr30Nr6z3W9q+srXSNon6t9ldZxrUVPWP+55j+93zRmJsWH/emD/l3RW1fB74pyBtY86wc1fuZ46N84AteGNsfJ6DmihVAH/DTwh8p6LB00ep6TgXOcEi9m86irefNMIczx9w/6rQvIDfT2VfZL1rdD8FYM5PpMdRyBsYQxVQCpTTPdEeiXnKEdwTSCI5gGnOM7jiMQsXneEeII3MgN9O5V5gje5TsC6PpMdxyBsYQxXQCpzTDdEdwchncEMwiOYAZwjjMdRyBi88wU4gg8yA303lXmCN7jOwLo+sxyHIGxhDFLAKnNNt0RnInDO4LZBEcwGzjHOY4jELF55ghxBF7kBnr/KnME7/MdAXR95jqOwFjCmCuA1OaZ7ggqheEdwTyCI5gHnOMHjiMQsXk+EOIIfMgNNP8qcwTz+Y4Auj4fOo7AWML4UACpLTDdEeg/8IR2BAsIjmABcI4LHUcgYvMsFOIIEpAb6KOrzBF8xHcE0PVZ5DgCYwljkQBS+xg9R/QEh5D+SFGRUtjA0XEPI8VdlBw3wrFpUKIf5/4YSLqLgaQLxKFCrq1UJymBdBcLcZKJSKey5Cpzkkv4ThK6PksdJ2ksYSwVQGrLTO8tPUHoLS0j9JaWAef4idNbErF5PhHiCKC/ivzUNpY7xZeY6k3xWkP4E1Ld3iTlTfCkZmT4lU+503wqyeNOS/B7MhJSktxed2KG8idY/0vpKtF9eV52xcnuWCxH8KnNEaABlEluaDJCrvfyeE5el1/leV0BJo8chFhXEFoZn5Hw9FkQ5x4BzsmQOGyrCJXTlUBc2lsbpretXNn7/I7xlQSMryJhfFX8f/9b4K7sff5vv5ue289Juf08kFup1Wa3KPPn+AVS86Qu1GkBC7XaWSiXOitgodaYfhKoZWANQQbWCrDPawlxf0mSvy//ohxD9Nz6EcqxfkDb+5UAPH1FwNPXJDx9Tbaqa+PNz+06Um7XCbeqVcLNn+M37IOR7IJLv6P3afAm+IZA0ieB79/+VgBJf0sgkvUkIlkfmKtUIgnPbf4cv2MdEoE3KvQnLxvknGDSFn5DvPlz3CgEnNBfaH+PC9otFZzfCwDnDxJ6Gz8Q5H6TAJuziRD3jySb8yO5t/EcwTY/ByS8zQLwtJmApy0kPG0h9zY2xZuf262k3G4NcoxvstP9yTET6icBZuJnCWbiZ8JG3SaA/LcR4t5OIqjtZDPxPMFMPA8kvB0C8LSDgKedJDztJJuJbfHm53YXKbe7+GYiCWkmdjttM7VbgJnYI6RtlowE514HnGqvAHDuEwJOKHPud8owtV8AOA9IKMMOECzOQQG2+SAh7l9I1u4Xchk2kFCGDQQS3iEBeDpEwNNhEp4Ok8uwg/Hm5/YIKbdHhJVhv+Ly4JFqJn4VYCZ+M/0ZvSKx+Gf0fiMIk54nKuajAoTpKIE8j5HI85htrpkf8PqnIsnzuNMmUMcFkOcJIW2CNCQ4TzrgVCcFgPOUEHBCmfO008NSpwWA84yEHtYZgsU5K8DanSXEfY5k7c6Re1iDCaXCYCDhnReAp/MEPF0g4ekCuYcF3P+03F4k5fYiv4cFdbqXHDOhLgkwE2H5BJgJPUn0Rs2Rz3zyz0GIO2c+DkHpccv8F5AizMQQgpkYAiS8XALwlIuAp3ASnsLzcc0EcP/TchtBym1EPraZUC6kmYgE5kGqmYjMZ/4cowhzZIAT+iLV3A44VW4B4IwWAk4oc+bBBS22DMsjAJwxEsqwGILFiRVgm2MJcceRrF0cuQx7mVCGvQwkvLwC8JSXgKd4Ep7iyWVYbD7zc5uPlNt8wsqw/Lg8iH0uMb8AM1EAPcesoMwukBIJzyXqoNEElQh8LrGgAGEqSCDPQiTyLJSP/Vyigr71q7DTJlCFBZBnESFtAuhbZIo64FRFBYCzmBBwQpmzuNPDUsUFgPMaCT2sawgWp4QAa1eCEHdJkrUrSe5hjST0sEYCCa+UADyVIuDpWhKeriX3sID7n5bb0qTclub3sKBOt4xjJlQZAWairAQzUZawUa8TQP7XEeIuRyKocmQzMYpgJkYBCe96AXi6noCn8iQ8lSebievymZ/bG0i5vYFvJqAv6rjRaZupGwWYiQpC2mbQ9yVWdMCpKgoA501CwAllzkpOGaYqCQDnzRLKsJsJFqeyANtcmRB3FZK1q0Iuw14llGGvAgmvqgA8VSXgyUXCk4tchlXOZ35uFSm3SlgZ5naeS1RuAWbCY/pzia0JzyV6CM8ltgY+l+gVIExeAnn6SOTpy0d/LhH61q8Ep02gEgSQZ6KQNgH0LTJJDjhVkgBwJgsBJ5Q5qzk9LFVNADirS+hhVSdYnBoCrF0NQtw1SdauJrmHNYbQwxoDJLxaAvBUi4Cn2iQ81Sb3sID7n5bbOqTc1uH3sKBOt65jJlRdAWaingQzUY+wUesLIP/6hLgbkAiqAdlMjCWYibFAwrtFAJ5uIeCpIQlPDclmon4+83PbiJTbRnQz4Ya+qONWp22mbhVgJhrLaJu5oe9LvM0Bp7pNADhvFwJOKHM2ccow1UQAOJtKKMOaEizOHQJs8x2EuJuRrF0zchk2nlCGjQcS3p0C8HQnAU/NSXhqTi7D7shnfm5bkHLbQlgZ1tJ5LlG1FGAm7jL9ucQnCM8l3kV4LvEJ4HOJrQQIUysCed5NIs+787GfS3RD3/p1j9MmUPcIIM/WQtoE0LfItHHAqdoIAOe9QsAJZc62Tg9LtRUAzvsk9LDuI1icdgKsXTtC3O1J1q49uYf1JqGH9SaQ8DoIwFMHAp46kvDUkdzDAu5/Wm5TSLlN4fewoE7X75gJ5RdgJlIlmIlUwkZNE0D+aYS400kElU42E5MIZmISkPAyBOApg4CnTiQ8dSKbibR85uf2flJu7w9iJsIJOUblobMtD+4UX2KqN8VrDeFPSHV7k5Q3wZOakeFXPuVO86kkjzstwe/JSEhJcnvdiRnKn2D9L6WrRPfleb1bEjfW9JLm7/nOBFw+QMLlA0FwGQHOyYg43Fij4nA57WLPaYIrNSk5Nd2X6k7weF0+T6IrxZXkT0hzeVxuv8uf4nMlJKa5kl0ZHv0/6HYnJaZ60v3uxPTLY9kxnt2xJGC8CwHjD5Iw/iBZ1zrnMz+3D5Fy+9BfeFBX9j7q0fjLZ+lwb1vK7P3VkxR3X3DcmZ9c4Hl2Re4nXMyqr+G40ZjpSuCObiTu6BYC7/FoPHZfonLaPR+Hz0zjCAbGuxMw3oOE8R5k79E1n/m5fZiU24cDudV1dHTYn5+ZYuDPHYaNJfPzSD7ihB/JRzBnQAJjxf1ovv8kGDTuXxofV/Y+agVQrFYCxeoxIMkEW+vszs8TWGs0wXqAc+xpeLNar3FPAvk/TiL/x4mFJysXvQzHgI65FyHuJ0gYeIJ4AKa5mIGBF8kGO7vzW0mKeyCp+YAuGE3V4CeBGgzEoBpoejPNytuTBDz3JnFab2LBmMnvpuf2KVJunyJ6hs4kzzDC8P3VhRT3SCHN6j7A/QRcazVSAC/3IeDmaRJ3PB2CZjXyILELsD/TNx+Hz0zjCAbG+xIw/gwJ48+QvUeffObn9llSbp+1Nasjwv7DHfaPyc1q5jyVkHm6SPNE7zVWDevK5ifYmmT7jyKFXd5j6BzmAo7lDcNySuann43/KOKFmrQmvTy2RWKCH3ki2h0wVsbljytI6NkdW2Xe2PPaP3DoNSBfABSZCtQ/gBb7dwNC8Fgya0H+JXO4A8yh+gNd7QAwUNAsqTdzJjCAa8twzQldSR2FN8yuFhK6k+IeJ6ST8hyQJ4BrrZD5s3Pvc39RbWU3l4PiwsLGAh+71+OF5yW8ph74OP/z4NNVxpq8AV6TCMKavAFckxfyhYZ7XNn7qKi8uLGi8wJPiwVgejwY0/EETI8HYnqgEEznB2K6IBDTLwnA9EQwposQMD0RiOlBAtbkTfCaFCWsyZvANRkshGeKA3mmBJBnhgjA9FtgTJclYPotIKaHCsF0OSCmywMxPUwApqeAMV2BgOkpQEy/LGBN3gavSUXCmrwNXJPhQnimEpBnKgN5ZoQATE8DY9pLwPQ0IKZHCsF0IhDTyUBMjxKA6XfBmK5JwPS7QEyPFrAm08FrUpuwJtOBa/KKEJ6pB+SZBkCeeVUApmeCMd2EgOmZQEy/JgTTzYCYbg7E9OsCMD0LjOlWBEzPAmJ6jIA1mQ1ek3sIazIbuCZjhfDMvUCeuQ/IM28IwPT7YEynETD9PhDT44RguhMQ052BmB4vANPzwJh+iIDpeUBMTxCwJh+A16QbYU0+AK7JRCE88zCQZx4F8sybAjD9IRjTTxEw/SEQ05OEYLovENPPAjH9lgBMLwRj+jkCphcCMT1ZwJp8BF6TFwhr8hFwTaYI4ZmXgDwzGMgzbwvA9MdgTI8iYPpjIKanCsH0q0BMvw7E9DQBmF4CxvQ4AqaXADH9joA1WQpekwmENVkKXJN3hfDMJCDPTAbyzHQBmP4EjOkZBEx/AsT0DCGYngXE9BwgpmcKwPRyMKY/IGB6ORDT7wlYkxXgNfmQsCYrgGsySwjPfATkmY+BPDNbAKZXgjG9goDplUBMzxGC6VVATH8BxPT7AjD9ORjTXxIw/TkQ03MFrMkX4DX5mrAmXwDXZJ4QnvkWyDPfAXnmAwGYXgPG9BYCptcAMT1fCKZ/BmJ6OxDTHwrA9JdgTO8mYPpLIKYXCFiTr8BrspewJl8B12ShEJ45AOSZX4A885EATK8DY/o4AdPrgJheJATTp4CYPgPE9McCMP0tGNMXCJj+FojpxQLWZD14TS4R1mQ9cE2WCOGZnMC3mIcD/xLXUgGY3gDGdGw8HtMbgJheJgTT8UBM5wdi+hMBmP4ejOnCBEx/D8T0pwLW5AfwmhQlrMkPwDVZLoRnrgHyTEkgz6wQgOkfwZi+noDpH4GY/kwIpm8EYroiENMrBWB6CxjTlQmY3gLE9CoBa7IVvCZVCWuyFbgmnwvhGTeQZ7xAnvlCAKZ/BmO6BgHTPwMxvVoIpmsDMV0XiOk1AjC9HYzpWwiY3g7E9FoBa7IDvCaNCGuyA7gmXwrhmduAPNMEyDNfCcD0LjCm7yJgehcQ018LwfQ9QEy3AWJ6nQBM7wFjuh0B03uAmP5GwJrsBa9JB8Ka7AWuybdCeMYP5Jk0IM+sF4Dp/WBMP0jA9H4gpr8TguluQEz3AGJ6AzB/Omf6L3x3DIyn/w6l/ruH+m/3xeUNC9N/L07/zTP9N7b033TSf5eotPW9/ls4+u+56L8fov9ehf6bC8r6Xr/nX7+rXr8bXb+LW79PurH1vX6HsX4Pr37vq37PqH5XZor1vX4/o37HoH6nnX6Hmn4P2BPW9/rdU/r9Sfp9Pfr9MPodJ8Ot7/V7NfS7IfS7CPRv3/Xvt9+xvte/Gda/e9W/s9S/69O/TfvE+l7/Hkr/pkf/hkT/ZkE/d7/J+l4/662fV9bPx+rnMfUzhb9Z3+vn2PSzWPrZH/2siX5eItpaO31Gr8+Z9bmmPkfTZ0Flre/1+YPuoeuere4R6j5XsvW97q3o/oCuR3X9oz18c+t77Ru199Faq7ld81Nn63u9J/S6Zv2g/07tRhx2jP07tTkDmM76QY2fOR76j9YD14Y2x+/Rc0QLlQ64Zz7chtFj6aDhD1sA5/hDPjGbR7GAKWHz/ECY4++fcPBEkRto01WgOPa/jK7jLRMWJmZ9fnQcgbGE8aMAUttsuiNwh+EdwWaCI9gMnOMWxxGI2DxbhDgCN3IDbb3KHMFWviOArs9PjiMwljB+EkBqP6PnmHWCCAXXk0Q1jNN8Xq/yu9J65uMkMbvxbnPcgIiNs40wx98/YLXxINVm+1XmBrbz3QB0fXY4bsBYwtghgNR2mu4GMo9A0cfHuYBjeYHx7gIvSE7wemjyAoLm92bpLkK/ZieQZHc7Dk0Eme0mzPH3D9gBeJEOYM9V5tD28B0adH32Og7NWMLYK4DU9pl+gqM3Sz/wCc4+giPYB5zjfscRiNg8+4U4Ah9ScQ5cZY7gAN8RQNfnoOMIjCWMgwJI7RcJJzh6kuHEwLM7x0PAsV4shRtroJxNSHMWEjbhoavxadHDtrHcST5PcoLfp1wZ6X6X253q9brTvanuVOVVKj0jybr1e1Wy8qek+jwet8eflKxSVIbfm3R5Xnblyu5YLGdxOOAspKpZtyjz53gEuZGkLtRpAQv1q7NQLnVWwEL9xvaHrux9fpckPUm07zwKDpwR91FC3MfyceTvmK2wZtQILxK6fC8C7c5xAXg6TsDTCRKeTtjwxOhCA/c/LbcnSbk9KdyqVgk3f46n2Ecx2QWXfidAT/AmOEUg6Tjg32Y5LYCkTxOI5AyJSM4E5iqVSMJzC6ginFLKpSIFLNQ5CaXUOQK7nBfAqucJcV8gseoFcin1EkGlXwKWUhcF4OkiAU+XSHi6RC6lgPufltuw/Jzc6nHLhMl1QHEChDVHfscBqXgBC5XTWSiXyi9goXLlB8+RIbF6kmgZCM9vvrUIJ8QdQZK/iPxcqzqEYFWHAK1qpAA8RRLwFEXCU1R+rlUF7n9abnOTcptbuFUtLEBYo9HCiu76lyZ0/XXQ6M1aGtj1zyOApPMQiCSGRCQx+WV3/YsKIJJYp5RyqeICFipOQikVR2CXvAJYNS8h7ngSq8aTS6lhhFJqGLCUyicAT/kIeMpPwlN+cimVN7/5uS1Aym0B4aVUKQHCWtBxQFYZJGChCjkL5VJlBSxUYQlWtTBBBooIsBZFCHEXJclfUbJVHUGwqiOAVrWYADwVI+CpOAlPxclWtUh+83N7DSm31wi3quUFCGsJ07v+itD1L0Ho+itg17+kAJIuSSCSUiQiKWWba+YHu/7KhXz/wLXAPEglz2vzmz/H0oQ5EsDpykCCswwuaLdUcJYRAM6yEkrmsgQVuU6Ael5HiLscST3LkUvmUYSSeRSQ8K4XgKfrCXgqT8JTeXLJfF1+83N7Aym3N9hyG0bJsYL+la8bHaerbhRgJirIcLoK+kdnKjrgVBUFgPMmIeCEMmclpwxTlQSA82YJZdjNBItTWYBtrkyIuwrJ2lUhl2GvEsqwV4GEV1UAnqoS8OQi4clFLsMq5zc/t4qUWyWsDHPj8uCRaibcAsyEx/TT2saE01oP4bS2MfC01itAmLwE8vSRyNPHP61NQJJngtMmUAkCyDNRSJsA+kd4kpw2gUoSAM5kCW2CZIKKVBOgntUIcVcnqWd1cpvgdUKb4HUg4dUQgKcaBDzVJOGpJrlNUC2/+bmtRcptLX6bIAlpJmo7TlfVFmAm6ghxuslIcNZ1wKnqCgBnPSHghDJnfacMU/UFgLOBhDKsAcHi3CLANt9CiLshydo1JJdhbxDKsDeAhNdIAJ4aEfB0KwlPt5LLsFvym5/bxqTcNhZWht3mnNaq2wSYidtNP61NIZzW3k44rU0BntY2ESBMTQjk2ZREnk35p7WpSPK8w2kTqDsEkGczIW0CPxKcdzptAnWnAHA2l9AmaE5QkRYC1LMFIe6WJPVsSW4TjCe0CcYDCe8uAXi6i4CnViQ8tSK3CVrkNz+3d5Nyeze/TZCONBP3OE5X3SPATLQW4nShb5Fp44BTtREAznuFgBPKnG2dMky1FQDO+ySUYfcRLE47Aba5HSHu9iRr155chr1JKMPeBBJeBwF46kDAU0cSnjqSy7B2+c3PbQoptynCyjC/c1qr/ALMRKrpp7VPEE5rUwmntU8AT2vTBAhTGoE800nkmU4/rXVDX0yQ4bQJVIYA8uwko03gVkhw3u+0CdT9AsDZWUKboDNBRR4QoJ4PEOLuQlLPLuQ2wVuENsFbQMJ7UACeHiTg6SESnh4itwkeyG9+bruSctuV3iZwe5FmopvjdFU3AWaiuxCnC32LTA8HnKqHAHA+LAScUOZ8xCnD1CMCwPmohDLsUYLFeUyAbX6MEHdPkrXrSS7D3iaUYW8DCe9xAXh6nICnXiQ89SKXYY/lNz+3T5By+4SwMuxJ57RWPSnATPQ2/bR2OOG0tjfhtHY48LT2KQHC9BSBPPuQyLMP/7QW+mKCp502gXpaAHn2FdImSESC8xmnTaCeEQDOZyW0CZ4lqEg/AerZjxB3f5J69ie3CaYR2gTTgIQ3QACeBhDw9BwJT8+R2wT98puf2+dJuX2e3yZIQZqJFxynq14QYCZeFOJ0oW+RGeiAUw0UAM6XhIATypyDnDJMDRIAzsESyrDBBIszRIBtHkKIeyjJ2g0ll2HTCWXYdCDhDROAp2EEPL1MwtPL5DJsSH7zczuclNvhwsqwEc5prRohwEyMNP209h3Cae1IwmntO8DT2lEChGkUgTxHk8hzNP+0FvpiglecNoF6RQB5viqkTZCGBOdrTptAvSYAnK9LaBO8TlCRMQLUcwwh7rEk9RxLbhPMJLQJZgIJ7w0BeHqDgKdxJDyNI7cJxuQ3P7fjSbkdT28TeFxIMzHBcbpqggAzMVGG0/VA3yLzpgNO9aYAcE4SAk4oc77llGHqLQHgnCyhDJtMsDhTBNjmKYS43yZZu7fJZdhsQhk2G0h4UwXgaSoBT9NIeJpGLsOm5Dc/t++QcvuOsDLsXee0Vr0rwExMN/209hPCae10wmntJ8DT2hkChGkGgTxnkshzJv201gN9McF7TptAvSeAPGcJaRN4kOCc7bQJ1GwB4JwjoU0wh6Ai7wtQz/cJcc8lqedccpvgfUKb4H0g4c0TgKd5BDx9QMLTB+Q2wfv5zc/tfFJu5/PbBAlIM/Gh43TVhwLMxAIhThf6FpmFDjjVQgHg/EgIOKHMucgpw9QiAeD8WEIZ9jHB4iwWYJsXE+JeQrJ2S8hl2AeEMuwDIOEtFYCnpQQ8LSPhaRm5DFuc3/zcfkLK7SfCyrBPndNa9akAM7Hc9NPaTYTT2uWE09pNwNPaFQKEaQWBPD8jkedn/NNa6IsJVjptArVSAHmuEtImSEaC83OnTaA+FwDOLyS0Cb4gqMhqAeq5mhD3GpJ6riG3CT4ktAk+BBLeWgF4WkvA05ckPH1JbhOszm9+br8i5fYrfpsgFWkmvnacrvpagJlYJ8TpQt8i840DTvWNAHB+KwScUOZc75Rhar0AcH4noQz7jmBxNgiwzRsIcW8kWbuN5DLsI0IZ9hGQ8L4XgKfvCXj6gYSnH8hl2Ib85ud2Eym3m4SVYT86p7XqRwFmYrPpp7W/EU5rNxNOa38DntZuESBMWwjkuZVEnlvpp7Ve6IsJfnLaBOonAeT5s5A2QQYSnNucNoHaJgCc2yW0CbYTVGSHAPXcQYh7J0k9d5LbBB8T2gQfAwlvlwA87SLgaTcJT7vJbYId+c3P7R5SbvfQ2wReN9JM7HWcrtorwEzsk+F0vdC3yOx3wKn2CwDnASHghDLnQacMUwcFgPMXCWXYLwSLc0iAbT5EiPswydodJpdhSwll2FIg4R0RgKcjBDz9SsLTr+Qy7FB+83P7Gym3vwkrw446p7XqqAAzccz009roePxp7THCaa2eJyrm4wKE6TiBPE+QyPME/7QW+mKCk06bQJ0UQJ6nhLQJfEhwnnbaBOq0AHCekdAmOENQkbMC1PMsIe5zJPU8R24TfEJoE3wCJLzzAvB0noCnCyQ8XSC3Cc7mNz+3F0m5vchvEyQhzcQlx+mqSwLMRFgBGU4X+haZHAUccOYoYP4ccwoBJ5Q5c+GCFluG5RIAznD0HBn2UU8SbXEiwIEz4o4gxB1ZgGPt9Lhl/gtIEWXYCkIZtgJIeFEC8BRFwFNuEp5yF+CWYcD9T8ttNCm30QVklWF5cHkQe1qbR4CZiEHPEX1aW5ZwWquDRhNUWeBpbawAYYolkGcciTzjCtBPa6EvJsjrtAlUXgHkGS+kTeBHgjOf0yZQ+QSAM7+ENkF+gooUEKCeBQhxFySpZ0Fym2AloU2wEkh4hQTgqRABT4VJeCpMbhMUKGB+bouQcluE3yZIR5qJoo7TVUUFmIliQpwu9C0yxR1wquICwHmNEHBCmbOEU4apEgLAWVJCGVaSYHFKCbDNpQhxX0uydteSy7AvCGXYF0DCKy0AT6UJeCpDwlMZchlWqoD5uS1Lym1ZYWXYdc5prbpOgJkoZ/ppbTLhtLYc4bQ2GXhae70AYbqeQJ7lSeRZnn5a64O+mOAGp02gbhBAnjfKaBP4FBKcFZw2gaogAJwVJbQJKhJU5CYB6nkTIe5KJPWsRG4TrCG0CdYACe9mAXi6mYCnyiQ8VSa3CW4qYH5uq5ByW4XeJvB5kWaiquN0VVUBZsIlxOlC3yKjHHAqJQCcbiHghDKnxynDlEcAOL0SyjAvweL4BNhmHyHuBJK1SyCXYV8RyrCvgISXKABPiQQ8JZHwlEQuw3wFzM9tMim3ycLKsGrOaa2qJsBMVDf9tLY54bS2OuG0tjnwtLaGAGGqQSDPmiTyrMk/rYW+mKCW0yZQtQSQZ20hbYJEJDjrOG0CVUcAOOtKaBPUJahIPQHqWY8Qd32SetYntwnWEdoE64CE10AAnhoQ8HQLCU+3kNsE9QqYn9uGpNw25LcJUpBmopHjdFUjAWbiViFOF/oWmcYOOFVjAeC8TQg4ocx5u1OGqdsFgLOJhDKsCcHiNBVgm5sS4r6DZO3uIJdh6wll2Hog4TUTgKdmBDzdScLTneQyrGkB83PbnJTb5sLKsBbOaa1qIcBMtDT9tLYz4bS2JeG0tjPwtPYuAcJ0F4E8W5HIsxX/tBb6YoK7nTaBulsAed4jpE2QhgRna6dNoFoLAGcbCW2CNgQVuVeAet5LiLstST3bktsEGwhtgg1AwrtPAJ7uI+CpHQlP7chtgnsLmJ/b9qTctg/SJggn5BiVhw62PLiTfJ7kBL9PuTLS/S63O9Xrdad7U92pyqtUekaSdev3qmTlT0n1eTxujz8pWaWoDL836fK83iiFG2tcKfP3fAcCLjuScNkxCC4jwDnpCuwSdAdiPMWe0yTl8if609JcHrf1nydkeF1pCa4MT6rL67IA601LdSWlJPgT/OkZXk9aQlqS3+eykJyUchmXLjvGszuWBIynEDDuJ2HcT9a1DgXMz20qKbepgdxqLYu0cYf9A//Jdhh2f7DmqYTM00WaJ3qv9QLqyJP5ZKzNLuA8c9rmmVbg8j/TNdegJ/2oNWlPGP7IwQMc61EgmOyEmGYjxDy2HDA3Rh9gLH0BY2Vc/viDhJ7dsVXmjT2vGQEwdyoQWITMxcgIKKn9u04hqMRYC/IvQe8OgF5lFMBtoE4FOEBBkwYy5vuBTi8sjPBOE2sMTWy5wDlkEW+2z6ANXw+Nl84ENw+Mm1EhJmn+Y8RdrbTZcfclxV0dHHfmB80TDwD3I3CtFTJ/di/xwF90FrKby6fjw8KeicflQI/3RTzefD4DfL6mC5jXGGvyLHhNVhPW5FngmjxYIDTc48reR60FrstXwPw9JADT/cGY/o6A6f7ANekqYE0GgNdkI2FNBgDXpJsQntkEXJfNwPx1F5K/bcD87QDmr4cATngBzAl7CJzwAnBNHhawJi+C12QfYU1eBK7JI0J45iBwXQ4B8/eoAEy/BMb0CQKmXwKuyWMC1mQQeE1OEdZkEHBNegrhmbPAdTkPzN/jQvKXA3hWlgt4ttBLACcMBXNCFOGJ76FATD8hYE2GgdckmrAmw4Br8qQQnokF8kxeIM/0FoDp4WBMFyFgejgQ008JWJMR4DUpRliTEcA16SOEZ0oAeaYUkGeeFpK/64D5ux6Yv74COGE0mBMqEDhhNJATnhGwJq+A1+Qmwpq8AlyTZ4XwTGUgz1QF8kw/AZh+DYzpRAKmXwNiur+ANXkdvCbJhDV5HbgmA4TwTA0gz9QC8sxzQvJXH5i/W4D5e14AJ7wB5oTGBE54A8gJLwhYk3HgNbmdsCbjgGvyohCeuQPIM3cCeWagAExPAGO6NQHTE4CYfknAmkwEr8m9hDWZCFyTQUJ4ph2QZzoAeWawkPylAfOXAczfEGD+dM581lUhMJ7+XYR+Dl8/S/6ttWf088v6eVn9zKd+blE/J6efy9LPFh21/nP9PIt+fkI/A6DPsfW5qT6n02dNBa2Y9fmG7qfrnrDua+o+mu7b6N6D1/rPdb2r6ytdI2ifq32V1nGtRa2s/1zzn95vGjNDCoT96YP+XdHQq+B3RTkDa571gxo/czz0bxyBa0Ob4zD0HNFCqAPuDPyhsh5LBw1/cAA4x5cLiNk86mrePC8T5vj7B/3WBeQGGn6V/ZJ1eAjeioFcnxGOIzCWMEYIILWRpjsCdxjeEYwkOIKRwDmOchyBiM0zSogjcCM30OirzBGM5jsC6Pq84jgCYwnjFQGk9qrpjkBLDtoRvEpwBK8C5/ia4whEbJ7XhDgCD3IDvX6VOYLX+Y4Auj5jHEdgLGGMEUBqY013BLvy4R3BWIIjGAuc4xuOIxCxed4Q4gi8yA007ipzBOP4jgC6PuMdR2AsYYwXQGoTTHcEelS0I5hAcAQTgHOc6DgCEZtnohBH4ENuoDevMkfwJt8RQNdnkuMIjCWMSQJI7S3THYH+A09oR/AWwRG8BZzjZMcRiNg8k4U4ggTkBppylTmCKXxHAF2ftx1HYCxhvC2A1Kai54ieYC/SHyl62+w/zvT7n/xkxD2VHDfCsWlQoh/nngok3WlA0gXiUE2VQ7o0JymBdKcJcZKJSKfyzlXmJN/hO0no+rzrOEljCeNdAaQ23fTeUhqhtzSd0FuaDpzjDKe3JGLzzBDiCKC/ipxpG8ud4ktM9aZ4rSH8Calub5LyJnhSMzL8yqfcaT6V5HGnJfg9GQkpSW6vOzFD+ROs/6V0lei+PC+74mR3LJYjmGlzBGgAZZIbmoyQ6/1eAU5e37vK8zoLTB45CLHOIrQyZpPwNDuIc48A56QX8L1ATwLfCzQH2ZsuLadt5cre53eMzyFg/H0Sxt8v8N//Frgre5//2++m53YuKbdzA7mVWm12izJ/jvOQmid1oU4LWKgPnIVyqbMCFmq+6SeBWgbmE2TgQwH2+UNC3AtI8rfgL8oxRM/tIUI59hDQ9i4UgKeFBDx9RMLTR2Sr+mEB83O7iJTbRcKtapVw8+f4MftgJLvg0u/o7QzeBB8TSPpb4Pu3Fwsg6cUEIllCIpIlgblKJZLw3ObPcSnrkAi8UaE/eVkm5wSTtvDLCpg/x0+EgBP6C+1PcUG7pYLzUwHgXC6ht7GcIPcrBNicFYS4PyPZnM/IvY3uBNvcHUh4KwXgaSUBT6tIeFpF7m2sKGB+bj8n5fbzIMf4JjvdLxwzob4QYCZWSzATqwkbdY0A8l9DiHstiaDWks1ED4KZ6AEkvC8F4OlLAp6+IuHpK7KZWFPA/Nx+Tcrt13wzkYQ0E+uctplaJ8BMfCOkbZaMBOe3DjjVtwLAuV4IOKHM+Z1ThqnvBIBzg4QybAPB4mwUYJs3EuL+nmTtvieXYY8SyrBHgYT3gwA8/UDA0yYSnjaRy7CNBczP7Y+k3P4orAzbjMuDR6qZ2CzATGwx/Rm9o4Rn9LYQhOko8Bm9rQKEaSuBPH8ikedPtrlmfsDrn4okz5+dNoH6WQB5bhPSJkhDgnO7A061XQA4dwgBJ5Q5dzo9LLVTADh3Sehh7SJYnN0CrN1uQtx7SNZuD7mH9TihVHgcSHh7BeBpLwFP+0h42kfuYQH3Py23+0m53c/vYUGd7gHHTKgDAszEQQlm4iBho/4igPx/IcR9iERQh8hmohfBTPQCEt5hAXg6TMDTERKejpDNxC8FzM/tr6Tc/ko3E8qFNBO/OW0z9ZsAM3FURttMQV+keswBpzomAJzHhYATypwnnDJMnRAAzpMSyrCTBItzSoBtPkWI+zTJ2p0ml2G9CWVYbyDhnRGApzMEPJ0l4eksuQw7VcD83J4j5facsDLsvPNcojovwExcMP25xIL58M8lXiAIU0Hg30i4KECYLhLI8xKJPC8VYD+XqKBv/Qor6LQJkDlgzTEHYY4McELfIpPTAafKKQCcuYSAE8qc4bigxfawwgWAMwI9R4bF0ZNEW5zIguZbu0hC3FEFOdZOj1vmv4AU0cN6mlAqPA0kvNwC8JSbgKdoEp6iC3J7WMD9T8ttHlJu8xSk97CgTjfGMRMqRoCZiJVgJmIJGzVOAPnHEeLOSyKovGQz0ZdgJvoCCS9eAJ7iCXjKR8JTPrKZiCtofm7zk3Kbn28moC/qKOC0zVQBAWaioJC2GfR9iYUccKpCAsBZWAg4ocxZxCnDVBEB4CwqoQwrSrA4xQTY5mKEuIuTrF1xchnWj1CG9QMS3jUC8HQNAU8lSHgqQS7DihU0P7clSbktKawMK4XLg9jnEksJMBPXoueYFZTZBZKX8FyiDhpNUF7gc4mlBQhTaQJ5liGRZ5mC9OcSoW/9Kuu0CVRZAeR5nZA2AfQtMuUccKpyAsB5vRBwQpmzvNPDUuUFgPMGCT2sGwgW50YB1u5GQtwVSNauArmH9Ryhh/UckPAqCsBTRQKebiLh6SZyD+vGgubnthIpt5X4PSyo073ZMRPqZgFmorIEM1GZsFGrCCD/KoS4q5IIqirZTDxPMBPPAwnPJQBPLgKeFAlPimwmqhQ0P7duUm7ddDPhhr6ow+O0zZRHgJnwymibuaHvS/Q54FQ+AeBMEAJOKHMmOmWYShQAziQJZVgSweIkC7DNyYS4q5GsXTVyGTaQUIYNBBJedQF4qk7AUw0SnmqQy7DkgubntiYptzWFlWG1nOcSVS0BZqK26c8ltiI8l1ib8FxiK+BziXUECFMdAnnWJZFnXfpziW7oW7/qOW0CVU8AedYX0iaAvkWmgQNO1UAAOG8RAk4oczZ0eliqoQBwNpLQw2pEsDi3CrB2txLibkyydo3JPazBhB7WYCDh3SYAT7cR8HQ7CU+3k3tYtxY0P7dNSLltwu9hQZ1uU8dMqKYCzMQdEszEHYSN2kwA+TcjxH0niaDuJJuJIQQzMQRIeM0F4Kk5AU8tSHhqQTYTzQqan9uWpNy2DGImwgk5RuXhLlse3Cm+xFRvitcawp+Q6vYmKW+CJzUjw698yp3mU0ked1qC35ORkJLk9roTM5Q/wfpfSleJ7svzqlYaN1b10ubv+bsIuGxFwmWrILiMAOekTz7cWH2B51Z323Oa4EpNSk5N96W6Ezxel8+T6EpxJfkT0lwel9vv8qf4XAmJaa5kV4ZH/w+63UmJqZ50vzsx/fJYdoxndywJGL+bgPF7SBi/h6xrdxU0P7etSblt/Rce1JW9j+pQ4PJZOjoXecuYvb9SSHHHg+PO/OQCz7MNcD8B11qh88fg5TYE7riXxB33hsB7dCiA3ZeonLYtyOEz0ziCgfG2BIzfR8L4fWTv0aag+bltR8ptu0BudR0dHfbnZ6YY+EsMw8aS+WlfkDjh9gUJ5gxIYKy4OxT8T4JB4/6l8XFl76NmAcVqDlCsOgJJJthaZ3d+SYG1RhNsEnCOKYY3q/UapxDI308ifz+x8GTlItVwDOiYUwlxp5EwkEY8ANNczMBAsTJcDGR3fnNIcRcvw9FgdMFoqganAzUYiEGFXlcGp6UT8JxB4rQMYsGYye+m57YTKbediJ7hLpJnuK6M2fvrblLc5cpw9ALdrL4fuJ+Aa63Q+WPw8v0E3HQmcUfnEDSrkQeJdwP7Mw8U5PCZaRzBwPgDBIx3IWG8C9l73F/Q/Nw+SMrtg7ZmdUTYf7jD/jG5Wc2cZ4KQefpI80TvNVYN68rmJ9iaZPstS2GX9xg6h7mAYyWHYTkl8/OQjf8o4oWatCa9PLZFYoIfeSLaFjBWxuWPK0jo2R1bZd7Y89o1cOjVrWAAFJkK1DWAFvt33ULwWDJrQf4lc7gDzKG6Al1tNzBQ0CypN3MmMIBry3DNCW1IHYWby5gdd1tS3JXBcWd+0J2U7kCeAK61QubPzr3d/6Laym4ue+YLC3se+Ni9Hu9IPsJr6oGP8/cAn64y1uQF8Jr8SliTF4Br8nDB0HCPK3sfdRS4LseB+XtEAKYHgjF9loDpgcA1eVQIps8D1+UiMH+PCcD0IDCmc+THY3oQcE16CliTweA1yUlYk8HANXlcCM+E58eNFZkfl79eAjA9FIzpWAKmhwIx/YQQTOcFYjofENNPCsD0y2BMFyRg+mUgpnsLWJPh4DUpRFiT4cA1eUoIzxQB8kwxIM/0EYDpkWBMlyZgeiQQ008LwfR1QExfD8R0XwGYHg3GdAUCpkcDMf2MgDV5BbwmNxHW5BXgmjwrhGcqA3mmKpBn+gnA9GtgTCcSMP0aENP9hWC6GhDTNYCYHiAA02PAmK5DwPQYIKafE7AmY8FrUo+wJmOBa/K8EJ65BcgzjYA884IATI8DY7oZAdPjgJh+UQimWwAxfRcQ0wMFYHoCGNOtCZieAMT0SwLWZCJ4Te4lrMlE4JoMEsIz7YA80wHIM4MFYHoSGNOdCJieBMT0ECGYfgCI6QeBmB4qANOTwZjuTsD0ZCCmhwlYkyngNXmYsCZTgGvyshCeeQzIM48DeWa4AExPBWO6LwHTU4GYHiEE0/2AmB4AxPRIAZh+B4zpFwmYfgeI6VEC1uRd8Jq8RFiTd4FrMloIzwwB8swwIM+8IgDTM8CYfpWA6RlATL8qBNNjgJh+A4jp1wRg+j0wpicSMP0eENOvC1iTWeA1mURYk1nANRkjhGemAHlmKpBnxgrA9BwwpmcRMD0HiOk3hGD6fSCm5wExPU4ApueCMb2AgOm5QEyPF7Am88Br8hFhTeYB12SCEJ5ZDOSZpUCemSgA0/PBmF5FwPR8IKbfFILp1UBMrwViepIATC8AY3odAdMLgJh+S8CaLASvybeENVkIXJPJQnhmA5BnvgfyzBQBmF4ExvTPBEwvAmL6bSGY3gHE9C4gpqcKwPRiMKb3ETC9GIjpaQLWZAl4TQ4Q1mQJcE3eEcIzh4A8cwTIM+8KwPQyMKZPETC9DIjp6UIwfRaI6fNATM8QgOlPwZgOK4DH9KdATM8UsCbLwWuSk7Amy4Fr8p4QnokA/gWQKOBfsZwlANOfgTEdT8D0Z0BMzxaC6QJATBcCYnqOAEyvAmO6GAHTq4CYfl/AmnwOXpNrCGvyOXBN5grhmVJAnikN5Jl5AjC9GozpGwmYXg3E9AdCMH0TENM3AzE9XwCm14Ix7SJgei0Q0x8KWJMvwWviJqzJl8A1WSCEZ3xAnkkE8sxCAZj+Gozp2gRMfw3E9EdCMF0PiOkGQEwvEoDpb8CYvpWA6W+AmP5YwJp8C16T2whr8i1wTRYL4ZmmQJ5pBuSZJQIw/R0Y0/cQMP0dENNLhWD6XiCm7wNiehkwfzpn+i/YdwyMp/8Opf67h/pv95221lz/vTj9N8/039jSf9NJ/12iPNbZrf5bOPrvuei/H6L/XoX+mwslre/1e/71u+r1u9H1u7j1+6S91vf6Hcb6Pbz6va/6PaP6XZlNrO/1+xn1Owb1O+30O9T0e8DSrO/1u6f0+5P0+3r0+2H0O06esr7X79XQ74bQ7yLQv33Xv98eZX2vfzOsf/eqf2epf9enf5s2w/pe/x5K/6ZH/4ZE/2ZBP3e/wvpeP+utn1fWz8fq5zH1M4VbrO/1c2z6WSz97I9+1kQ/L3Hc+l6f0etzZn2uqc/R9FlQrLWm+vxB99B1z1b3CHWf63rre91b0f0BXY/q+kd7+BrW99o3au+jtVZzu+anu6zv9Z7Q65r1g/47tZ/gsGPs36nNGcB01g9q/Mzx0H+0Hrg2tDl+ip4jWqh0wCkFcRtGj6WDhj9sAZzj8oJiNo9iAVPC5llOmOPvn3DwRJEbaMVVoDj2v4yu4y0TFiZmfT5zHIGxhPGZAFJbabojSAzDO4KVBEewEjjHVY4jELF5VglxBG7kBvr8KnMEn/MdAXR9vnAcgbGE8YUAUluNnmPWCSIUXE8S1TBO83m9yu9KSynISWJ2413juAERG2eNEDfgQarN2qvMDazluwHo+nzpuAFjCeNLAaT2leluQG/M5DD88XEu4FjJwHi/Bi9ITvB6aPICgub3ZunXhH7NV0CSXec4NBFktk6IQ/MiHcA3V5lD+4bv0KDr863j0IwljG8FkNp6009w9GZ5CHyCs57gCNYD5/id4whEbJ7vhDgCH1JxNlxljmAD3xFA12ej4wiMJYyNAkjtewknOHqS4cTAszvHH4BjFSuDG6t4GcdZSNiEPyDnKJUtu0WZP8dNzkK51GkBC/Wjs1AudVbAQm1m+w9X9j6/dyT0JNG+Zgs4cEbcWwhxbwXGbS/cttoKN4YHfYTQRXoE6Bt/EoCnnwh4+pmEp59teGJ0OYH7n5bbbaTcbgvkVqqwVgk3f47b2a3+7IJL/+Y8BbwJthNI+jTwfQg7BJD0DgKR7CQRyc7AXKUSSXhu8+e4yymlXCpSwELtllBK7Sawyx4BrLqHEPdeEqvuJZdSjxFU+jFgKbVPAJ72EfC0n4Sn/eRSak9B83N7gJTbA8JLqTgBwnrQcUAuFS9goX5xFsql8gtYqEMSrOohggwcFmAtDhPiPkKSvyNkq9qLYFV7Aa3qrwLw9CsBT7+R8PQb2aoeLmh+bo+ScntUuFUtLEBYj5ne9ddvlEV3/Y8RSDoP8K+WHhdA0scJRHKCRCQnhHf9iwogkpNOKeVSxQUs1CkJpdQpArucFsCqpwlxnyGx6hlyKfUkQaWfBJZSZwXg6SwBT+dIeDpHLqVOFzQ/t+dJuT0vvJQqJUBYLzgOyKVKC1ioi85CuVRZAQt1SYJVvUSQgbBC5lsLPUd03DkKceRPj1vmv4AUYVX7EKxqH6BVzSkATzkJeMpFwlOuQlyrCtz/tNyGk3IbXki2VS0vQFgjwHwA7/qXJHT9ddDozVoS2PWPFEDSkQQiiSIRSZRtrpkf7PorF/LNLLmBeZBKnrkLmT/HaMIcCeB0ZSDBmQcXtFsqOPMIAGcMeo4MFYkhqEisAPWMJcQdR1LPOHLJ3JdQMvcFEl5eAXjKS8BTPAlP8eSSObaQ+bnNR8ptPltuwyg5VtC/IpXfcboqvwAzUUCG01XQP2pS0AGnKigAnIWEgBPKnIWdMkwVFgDOIhLKsCIEi1NUgG0uSoi7GMnaFSOXYf0IZVg/IOEVF4Cn4gQ8XUPC0zXkMqxoIfNzW4KU2xLCyrCSuDx4pJqJkgLMRCnTT2u9hNPaUoTTWi/wtPZaAcJ0LYE8S5PIszT/tDYBSZ5lnDaBKiOAPMsKaRNA/8jLdU6bQF0nAJzlJLQJyhFU5HoB6nk9Ie7yJPUsT24TDCC0CQYACe8GAXi6gYCnG0l4upHcJri+kPm5rUDKbQV+myAJaSYqOk5XVRRgJm4S4nSTkeCs5IBTVRIAzpuFgBPKnJWdMkxVFgDOKhLKsCoEi1NVgG2uSojbRbJ2LnIZ9gKhDHsBSHhKAJ4UAU9uEp7c5DKsaiHzc+sh5dYjrAzzOqe1yivATPhMP61tQjit9RFOa5sAT2sTBAhTAoE8E0nkmcg/rU1FkmeS0yZQSQLIM1lIm8CPBGc1p02gqgkAZ3UJbYLqBBWpIUA9axDirklSz5rkNsFAQptgIJDwagnAUy0CnmqT8FSb3CaoUcj83NYh5bYOv02QjjQTdR2nq+oKMBP1hDhd6Ftk6jvgVPUFgLOBEHBCmfMWpwxTtwgAZ0MJZVhDgsVpJMA2NyLEfSvJ2t1KLsMGE8qwwUDCaywAT40JeLqNhKfbyGVYo0Lm5/Z2Um5vF1aGNXFOa1UTAWaiqemntWmE09qmhNPaNOBp7R0ChOkOAnk2I5FnM/pprRv6YoI7nTaBulMAeTaX0SZwKyQ4WzhtAtVCADhbSmgTtCSoyF0C1PMuQtytSOrZitwmGEpoEwwFEt7dAvB0NwFP95DwdA+5TXBXIfNz25qU29b0NoHbizQTbRynq9oIMBP3CnG60LfItHXAqdoKAOd9QsAJZc52Thmm2gkAZ3sJZVh7gsXpIMA2dyDE3ZFk7TqSy7DhhDJsOJDwUgTgKYWAJz8JT35yGdahkPm5TSXlNlVYGZbmnNaqNAFmIt3009qnCKe16YTT2qeAp7UZAoQpg0CenUjk2Yl/Wgt9McH9TptA3S+APDsLaRMkIsH5gNMmUA8IAGcXCW2CLgQVeVCAej5IiPshkno+RG4TjCS0CUYCCa+rADx1JeCpGwlP3chtggcLmZ/b7qTcdue3CVKQZqKH43RVDwFm4mEhThf6FplHHHCqRwSA81Eh4IQy52NOGaYeEwDOnhLKsJ4Ei/O4ANv8OCHuXiRr14tchr1CKMNeARLeEwLw9AQBT0+S8PQkuQx7vJD5ue1Nym1vYWXYU85prXpKgJnoY/pp7SjCaW0fwmntKOBp7dMChOlpAnn2JZFnX/5pLfTFBM84bQL1jADyfFZImyANCc5+TptA9RMAzv4S2gT9CSoyQIB6DiDE/RxJPZ8jtwleI7QJXgMS3vMC8PQ8AU8vkPD0ArlNMKCQ+bl9kZTbF+ltAo8LaSYGOk5XDRRgJl6S4XQ90LfIDHLAqQYJAOdgIeCEMucQpwxTQwSAc6iEMmwoweIME2CbhxHifplk7V4ml2FjCWXYWCDhDReAp+EEPI0g4WkEuQwbVsj83I4k5XaksDJslHNaq0YJMBOjTT+tnUE4rR1NOK2dATytfUWAML1CIM9XSeT5Kv201gN9McFrTptAvSaAPF8X0ibwIME5xmkTqDECwDlWQptgLEFF3hCgnm8Q4h5HUs9x5DbBOEKbYByQ8MYLwNN4Ap4mkPA0gdwmeKOQ+bmdSMrtRH6bIAFpJt50nK56U4CZmCTE6ULfIvOWA071lgBwThYCTihzTnHKMDVFADjfllCGvU2wOFMF2OaphLinkazdNHIZNpFQhk0EEt47AvD0DgFP75Lw9C65DJtayPzcTifldrqwMmyGc1qrZggwEzNNP61dQTitnUk4rV0BPK19T4AwvUcgz1kk8pzFP62FvphgttMmULMFkOccIW2CZCQ433faBOp9AeCcK6FNMJegIvMEqOc8QtwfkNTzA3KbYBKhTTAJSHjzBeBpPgFPH5Lw9CG5TTCvkPm5XUDK7QJ+myAVaSYWOk5XLRRgJj4S4nShb5FZ5IBTLRIAzo+FgBPKnIudMkwtFgDOJRLKsCUEi7NUgG1eSoh7GcnaLSOXYVMIZdgUIOF9IgBPnxDw9CkJT5+Sy7ClhczP7XJSbpcLK8NWOKe1aoUAM/GZ6ae1WwintZ8RTmu3AE9rVwoQppUE8lxFIs9V9NNaL/TFBJ87bQL1uQDy/EJImyADCc7VTptArRYAzjUS2gRrCCqyVoB6riXE/SVJPb8ktwmmEtoEU4GE95UAPH1FwNPXJDx9TW4TrC1kfm7XkXK7jt4m8LqRZuIbx+mqbwSYiW9lOF0v9C0y6x1wqvUCwPmdEHBCmXODU4apDQLAuVFCGbaRYHG+F2CbvyfE/QPJ2v1ALsPeJZRh7wIJb5MAPG0i4OlHEp5+JJdh3xcyP7ebSbndLKwM2+Kc1qotAszEVtNPa48TTmu3Ek5rjwNPa38SIEw/EcjzZxJ5/sw/rYW+mGCb0yZQ2wSQ53YhbQIfEpw7nDaB2iEAnDsltAl2ElRklwD13EWIezdJPXeT2wQzCG2CGUDC2yMAT3sIeNpLwtNecptgVyHzc7uPlNt9/DZBEtJM7HecrtovwEwcEOJ0oW+ROeiAUx0UAM5fhIATypyHnDJMHRIAzsMSyrDDBItzRIBtPkKI+1eStfuVXIbNIpRhs4CE95sAPP1GwNNREp6OksuwI4XMz+0xUm6PCSvDjjunteq4ADNxwvTT2tgC+NPaE4TTWj1PVMwnBQjTSQJ5niKR5yn+aS30xQSnnTaBOi2APM8IaRP4keA867QJ1FkB4DwnoU1wjqAi5wWo53lC3BdI6nmB3CaYQ2gTzAES3kUBeLpIwNMlEp4ukdsE5wuZn9uwwpzc6nHLhP3xAzYT6UgzkQOYB6lmApkD1hxzEubIACf0LTK5HHCqXALAGS4EnFDmjMAFLbYMixAAzkj0HBn2UU8SbXGiwIEz4o4ixJ2bZO1yF+aWYfMIZdg8IOFFC8BTNAFPeUh4ylOYW4YB9z8ttzGk3MYIK8NicXkQe1obK8BMxKHniD6tvZ5wWquDRhPU9cDT2rwChCkvgTzjSeQZX5h9WuuDvpggn9MmUPkEkGd+GW0Cn0KCs4DTJlAFBICzoIQ2QUGCihQSoJ6FCHEXJqlnYXKbYD6hTTAfSHhFBOCpCAFPRUl4KkpuExQqbH5ui5FyW4zeJvB5kWaiuON0VXEBZuIaIU4X+haZEg44VQkB4CwpBJxQ5izllGGqlABw/r/2rgO8iuL77ksjAQKBkFBEKSKCNS8ESCwISFUE6QoWQghFKUpTFDQIKGLvvTcUe0fFLhbsXeyKvfeG+L/D7y1cJrOHIHfg3b9533e+vLwzc/fM3JnZu7Ozs1tpuAzbykOI00xB2NzMQ7mbewrtmnu+DFvs4TJsseCA10JBe2rhoT219NSeWnq+DGuWl/x1u7Wnut1a2WVYq+q7tfFWCoKJbZL9bu1uHu7WbuPhbu1ugndrWys4MbX2MHhu62nw3Nb/3VrRjQnaVE8TxNsoGDzbKpkm6CjZOLerniaIb6egcW6vYZpgew9nkR0UnD138FDuHT2dPXf0PE1wv4dpgvsFB7ydFLSnnTy0p509taedPU8T7JCX/HVb4KluC/xPE5RKBhPx6kg3HlcQTBQqiXRFd5FpV9044+0UNM4iJY1TdORsX30ZFm+voHF20HAZ1sFDiNNRQdjc0UO5iz2FdsWeL8Me9HAZ9qDggFeioD2VeGhPu3hqT7t4vgzrmJf8dburp7rdVdll2G7Vd2vjuykIJnZP9ru1gzzcrd3dw93aQYJ3azspODF18jB47uFp8NzD/91a0Y0JOldPE8Q7Kxg8uyiZJhgl2Ti7Vk8TxLsqaJx7apgm2NPDWaSbgrNnNw/l7u7p7Nnd8zTBwx6mCR4WHPB6KGhPPTy0p56e2lNPz9ME3fKSv257earbXom6TSNkENKDyh/p9tcxkD8Z+tDZQYnO9p50Sve1MsGr8vJcHb55QVBnCtPZO+9/f/cyY4206INJdHEgPzVTLGjrYMHGxAfE3mxArMnqwGfHGCtYlkMEbI3+32eko+gbazsefuH1uneiMffJSzghdMbeiTMp/62PY2I7TYlD/mWjL0w0+vjeeXIdqE+en4YiPWhIlnkfwUgvCOTPFmaANANbqnAd+hp4N9ZW3yT3h2kvfT1E832T+wqx2Ix/Psr9eIvkLvchnsr9hHC5w4/0ONFPsD8K+jouWX88lugHZhY2ti7H0f29Q+vL1YGxd2d9+eDzUMH7kPsKj2s+fDJe2Cd3efDJeEGf9M/bNGNPwcZ94vcI+mWxYP0NUNCmJwq36Yc8tOmJgj4ZqMAnk4R98ogHn0wS9MkgJePM44J+WSpYf4OV1N8ywfp7TrD+higYEyYLjwkveRgTJgv6ZKgCn0wR9skrHnwyRdAn+ykZZ14X9MubgvW3v4I2PU24TX/goU1PE/TJMAU+mS7sk488+GS6oE+GKxlnPhH0y2eC9XeAkvr7WrD+vhWsvwMVjAkzhMeEHz2MCTMEfXKQAp8cJeyTnz345ChBnxysZJz5TdAvfwjW3wgFbXqmcJuOeViBO1PQJ6UKfDJL2CepHnwyS9AnI5WMMxmCa38yBddKlCmpv2zB+qsrWH+jFIwJFcJjQq6HMaFCcEwoV+CT2cI+yfPgk9mCPhmtZJxpJDjONBEcZ8YoaNNzhNt0Sw9teo5gmx6rwCdzhX3SyoNP5gr6ZJyScWZbwXGmreA4c4iS+ttJsP4KBOvvUAVjwgnCY0KRhzHhBMExYbwCn8wX9kkHDz6ZL+iTCUrGmRLBcWZXwXFmooI2vUC4Te/poU0vEGzTkxT45CRhn3T34JOTBH1ymJJxppfgOLOX4DhzuJL66ydYf/0F62+yYP2ZOjO7HLRJ2DPPRZh1+GYt+RLqM2b9slkva9Z8mnWLZp2cWZdl1ha9S7xZz2LWT5g1AOY+trlvau7TmXtNq8z+dvTXzKebOWEzr2nm0cy8jZl7aEZ1Yq53zfWVuUYwca6Jq8x5fPW5iHgz/pn+ZtrM5Lyg0kf6uaIp/4HnilISPrc/UvZDe9LPOAr6xpvGqb43nSzYuM/qHQT6Cj6obGxN9bDp5FRBjdPy1HSe+H+580zzoHH1R3rXBckONP0/9iTr9E2wK4akf46ojgiSdsA4QsGgdmSyRwTG8dIRwZEeIoIjBTXOqI4IVHSeGUoigkLJDnTUfywiOMp/RCDqn6OrI4KkHTCOVjCozUz2iMBsJyodEcz0EBHMFNQ4qzoiUNF5ZimJCNpJdqBj/mMRwTH+IwJR/xxbHREk7YBxrIJBrSLZI4IXcuUjggoPEUGFoMbZ1RGBis4zW0lEUCTZgY77j0UEx/mPCET9M6c6IkjaAWOOgkFtbrJHBO0D+YhgroeIYK6gxnnVEYGKzjNPSUTQXrIDHf8fiwiO9x8RiPrnhOqIIGkHjBMUDGrzkz0iMC94ko4I5nuICOYLajyxOiJQ0XlOVBIRdJDsQAv+YxHBAv8Rgah/TqqOCJJ2wDhJwaB2srRGaYFlnl5SVNBStuDS5S73VO6453JLRGymUUov5z5ZcNA9RXDQFWyHcUnfao0kNQy6pyiJJDtKRiqn/sciyVP9R5Ki/jmtOpJM2gHjNAWD2unJPrfU28Pc0uke5pZOF9R4RvXckorOc0ayX4aFnUe6sUt2yDPz/JzJz2Rn8v9ivZ4l3DhjHsp6lodL5bM9taezHZFhunCdlAnuO1MuuO/MOYLtkl86J/u0SMHGfVa38XM8tPFzPbXxc/Oi3zVdsHGfNf092ev2PE91e16ibrVezUyqkfwaz5c852l11O8KHHVBtaMK4n8qcNSFyX6JY04DF3o4DVykIHy+yEO5L/Z0+rsYXI5JzOkM8HA5NkAw7L1EQXu6xEN7utRTe7rUc6h6UV7y1+1lnur2MuWh6k5pya/xct8T7xvbuMwesH2FO8HlHgbpJYL7O1+hYJC+wsNAcqWngeTKhFatA0laZvJrvMrXsgThjir6SMXVeu6QeXP81XnJr/EaJY1T9Anga+UKXai1cV6roHFep2Fu4zoPp/uFCsKchR7Kfb2nMOd6z3Mbgz2EzYMFB7wbFLSnGzy0p0We2tMiz3MbC/OSv25v9FS3Nzpu4ydzpHtTdTARv0lBMHGzhmDiZg8d9RYFg/8tHsp9q6cB6lbPwcQQD8HEEMEB7zYF7ek2D+3pdk/t6XbPwcQteclft3d4qts7/AcTxZLBxJ3V02bxOxUEE3cpmTYrkWycd1c3zvjdChrnPUoap+jIeW/1ZVj8XgWNc7GGy7DFHkKc+xSEzfd5KPf9nkK7+z1fhu3v4TJsf8EB7wEF7ekBD+1piaf2tMTzZdh9eclftw96qtsHlV2GPSRXD+20BhMPKQgmHk72NXrvelij97CHE9O7gmv0HlFwYnrEw+D5qKfB81GmNfwI+79McvB8rHqaIP6YgsHzcSXTBKMkG+cT1Y0z/oSCxrlUSeMUHTmfrJ7Dij+poHE+pWEO6ykPIc7TCkK7pz2U+xlPod0znuewDvBwqXCA4IC3TEF7WuahPT3rqT0963kOS7D/e6vb5zzV7XP+57BEI93nq4OJ+PMKgokXNAQTL3joqC8qGPxf9FDulzwNUC95DiYO9BBMHCg44L2soD297KE9veKpPb3iOZh4MS/56/ZVT3X7qvdgIl4gGUy8Vj1tFn9NQTDxuo5ps7joRqpvVDfO+BsKGuebShqn6Mj5VvVlWPwtBY1zuYbLsOUeQpy3FYTNb3so9zueQrt3PF+GjfBwGTZCcMB7V0F7etdDe3rPU3t6z/Nl2Nt5yV+373uq2/eVXYZ9UL0uMf6BgmDiw2Rfl7jKw7rEDz2cmFYJrkv8SMGJ6SMPg+fHngbPj/N8r0uMi+76taJ6miC+QsHg+YmSaQLRXWQ+rW6c8U8VNM7PlDRO0ZHz8+o5rPjnChrnFxrmsL7wEOJ8qSC0+9JDub/yFNp95XkOq8zDpUKZ4ID3tYL29LWH9vSNp/b0jec5LMH+761uv/VUt9/6n8MSjXS/qw4m4t8pCCa+1xBMfO+ho/6gYPD/wUO5f/Q0QP3oOZgY5SGYGCU44P2koD395KE9/eypPf3sOZj4IS/56/YXT3X7i/9gQnSjjl+rp83ivyoIJn5TMm0mul/i79WNM/67gsb5h5LGKTpy/ll9GRb/U0Hj/EvDZdhfHkKclQrC5pUeyv23p9Dub8+XYWM8XIaNERzwViloT6s8tKd/PLWnfzxfhq3MS/66DfL91K2x2zxY95PMwURMrh7UrksUrANvGlOkNdqNcmMbUrNc+XWJptDSA5TRKVXm1PzkPzEZjdKDZ5qnwTMt3/u6RNFdv9IF60Hr4JmuYPDM8KDRR+MU3UWmRnXjjNdQ0DgzlTRO0ZEzS67QauewshQ0zprSGn2EODU9hDi1FIR2tTyUu7an0K52vt85rEM8zGEdIjjgZStoT9ke2lMdT+2pTr7fOSzB/u+tbut6qtu6/uewRCPdnOpgIp6jIJiopyGYqOeho9ZXMPjX91DuXE8DVK7nYOJQD8HEoYIDXgMF7amBh/aU56k95XkOJurnJ3/d5nuq23zvwUSh6EYdDaunzeINFQQTjXRMmxWK7pfYuLpxxhsraJxNlDRO0ZFzi+rLsPgWChpnUw2XYU09hDhbKgibt/RQ7q08hXZbeb4Mm+jhMmyi4IDXTEF7auahPTX31J6ae74M2zI/+eu2hae6baHsMqxl9brEeEsFwcTWyb4usbOHdYlbe1iX2FlwXWIrBSemVh4Gz208DZ7beF+XWCi661fr6mmCeGsFg+e2SqYJRHeRaVPdOONtFDTOtkoap+jIuV31HFZ8OwWNc3sNc1jbewhxdlAQ2u3godw7egrtdvQ8h3W4hzmswwUHvJ0UtKedPLSnnT21p509z2HtkJ/8dVvgqW4L/M9hiUa68epgIh5XEEwUaggmCj101HYKBv92Hspd5GmAKvIcTEz2EExMFhzw2itoT+09tKcOntpTB8/BRLv85K/bjp7qtqMjmJDWXiymvbDAp86Sf6+z0P7BaKtPSGNaTT2sSnzfJVj7fVKNtd9LEmnCfLvQ/7sSdiPsnr+uPcl+0JNsnOVhg5kzWyb3WGjKfY6Hcp/VUj7gC1i7kCy/VJk7CY6jgu0mLukLPnZ2coydyeyfPf4D/gkCP2PEHh7O6Z09ndM7O9plunCdnCW4luAcwdi7S76fc1eynQ98tPEuHtp4V09tvKvHa4Kwvyd73e7pqW73dIwfqcLau1Wfi/6VPtOWunloS909taXuVZis3uhNLAXrt1cg639fZY4Jlrm3kjKnCJZ5LyVlThUs896bqMwFG/eJ9xGsvxmpfsosPa7v48k3qcI6+wr65s4sOVt3Z+nozz0EfdEv0NG291Wis7+wTulxsS1NLu2YJriYiGztnCavc4Bgf2mbpuOcNVCwzMcoOWcNCnToHKxE5xAlOocq0bmfEp37K9E5TInO4Up0HqBE54FKdB6kROfBSnSOUKKzVInOkUp0linROUqJznIlOkcr0TlGic6xSnSOU6LzECU6D1Wic7wSnROU6JyoROckJToPU6LzcE86k/me8eRNVOaCjfvEpwjW3ywl87JTAx06pynROV2JziOU6DxSic4ZSnQepUTn0Up0zlSic5YSncco0XmsEp0VSnTOVqLzOCU65yjROVeJznlKdB6vROcJSnTOV6LzRCU6FyjReZISnScr0XmKEp2nKtF5mhKdpyvReYYSnWcq0XmWEp1nK9F5jhKd5yrReZ4Snecr0XmBEp0XKtF5kRKdFyvReYkSnZcq0XmZEp2XK9F5hRKdVyrReZUSnVcr0XmNEp3XKtF5nRKdC5XovF6JzhuU6FykROeNSnTepETnzUp03qJE561KdN6mROftSnTeoUTnnUp03qVE591KdN6jROe9SnQuVqLzPiU671ei8wElOpco0fmgEp0PKdH5sBKdjyjR+agSnY8p0fm4Ep1PKNG5VInOJ5XofEqJzqeV6HxGic5lSnQ+q0Tnc0p0Pq9E5wtKdL6oROdLSnS+rETnK0p0vqpE52tKdL6uROcbSnS+qUTnW0p0Llei820lOt9RovNdJTrfU6LzfSU6P1Ci80MlOj9SovNjJTpXKNH5iRKdnyrR+ZkSnZ8r0fmFEp1fKtH5lRKdXyvR+Y0Snd8q0fmdEp3fK9H5gxKdPyrR+ZMSnT8r0fmLEp2/KtH5mxKdvyvR+YcSnX8q0fmXEp0rlej8W4nOVUp0/qNEpzGoQWdMWKetb2P3c+9JNnbJly93iif/pAjrTI3J1WW3fB1tMk1J30lXojNDic4aSnRmKtGZpURnTSU6aynRWVuJzmwlOuso0VlXic4cJTrrKdFZX4nOXCU6GyjRmadEZ74SnQ2V6GykRGdjJTqbKNG5hRKdTZXo3FKJzq2U6GymRGdzJTpbKNHZUonOrZXobKVE5zZKdLZWonNbJTrbKNHZVonO7ZTo3F6Jzh2U6NxRic6dlOjcWYnOAiU648I6pe+N980Lgn3z5O6PG3vn58nrLBS8h8/LW7CRH18+6S/skws8+KSdoE/65/npz6nCZS4SLPNFgj6+xFP9SbeZ9oL1d4WCfjxQuB9f5aEfdxD0yUAFPhkk7JNrPPiko6BPBikZW4sFy7xQ0Mc3KKm/EsH6u0Ww/m5TMCYMFR4T7vIwJuwi6N+hCnyyn7BP7vHgk10FfbKfknFmN8Ey3yfo4weUxMC7C9bfIwr68TDhfvy4h37cSdAnwxT4ZLiwT5Z68Mkegj4ZrmRs7SxY5qcFfbxMSf11Eay/FwXr72UFY8JBwmPC6x7GhK6C/j1IgU8OFvbJmx58sqegTw5WMs50Eyzz24I+fldJDNxdsP4+UtCPS4X78Sce+nEPQZ+UKvDJSGGffObBJz0FfTJSydjaS7DMXwr6+Gsl9ddbsP5+EKy/nxSMCeXCY8JvHsaEvQT9W67AJ6OFffKHB5/sLeiT0UrGmT6CZV4p6ONVSmLgfQTrLzU/+fvxWOF+nJHvQaegT8YqGFvHCfsk04NP+gn6ZJySsXVfwTLXypezlZ2vo/76C9ZffcH6a6BgnB4vPCY08jAmDBD073gF4/QEYZ808eCTgYI+maBknB4kWOYtBceZZp7Gaek2M1iw/lopGFsnCffjbT304yGCPpmkYGw9TNgnbT34ZKigTw5TMrbuJ1jmHQTH1p2UxMD7C9ZfO8H6a5/k43RpbhAcnit4L4xsvZUrr3OYoH95eQs28uPLJ5OFfbLcg0+GC/pkcq6OceYAwTK/I+jj9zzVn3SbOVByLYSCfjxVuB+v8NCPDxL0yVQl/fhgwTJ/KujjzxW06enCbforD216hKB/pyvwyRHCPvnag09KBX1yhJJxZqRgmb8V9PH3SuKFMsH6+1lBP54h3I9/9dCPRwn6ZIaSflwuWObfBX38p4I2fbRwm/7bQ5seLejfoxX4ZKawT1Z58MkYQZ/MVDLOjBUsc9BAzlZKAx3xwjjB+stokPz9+BjhfpzVQF7nIYI+OUZJPz5UsMy1BftxHQVtukK4Tdf30KbHC/q3QkG8MFvYJw08+GSCoE9mKxlnJgqWuaHgONNYSbwwSbD+tlIwts4R7sctPPTjwwR9MkdJPz5ccm2YYD9uraBNzxNu09t5aNOTBf07T0G8cLywT3bw4JMpgj45Xsk4M1WwzDsLjjNxJfHCNMH666BgbJ0v3I9LPPTj6YI+ma+kHx8hWObdBPtxJwVteoFwm+7qoU0fKejfBQrihZOEfdLNg09mCPrkJCXjzFGCZe4pOM70VhIvHC1Yf30VjK2nCPfj/h768UxBn5yipB/PktxjX7AfD1HQpk8TbtPDPLTpYwT9e5qCeOF0YZ8c4MEnxwr65HQl40yF5P6YguNMqZJ4Ybbk3koKxtYzhfvxOA/9+DhBn5yppB/PkdxzQrAfT1TQps8WbtOTPbTpuYL+PVtBvHCOsE+mevDJPEGfnKNknDle8pkQwXFmhpJ44QTJtXUKxtbzhPvxbA/9eL6gT85T0o9PFCzzXMF+fLyCNn2BcJte4KFNLxD07wUK4oULhX1ysgefnCTokwuVjDMnS85zCY4zZyiJF04RrL9zFYytFwv34ws89ONTBX1ysZJ+fJpkmQX78aUK2vSlwm36Sg9t+nRB/16qIF64TNgnV3vwyRmCPrlMyThzpmCZrxMcZ65XEi+cJVh/NysYW68Q7se3eejHZwv65Aol/fgcwTLfKdiP71bQpq8SbtP3eWjT5wr69yoF8cLVwj55wINPzhP0ydVKxpnzBcv8kOA484iSeOECwfpbqmBsvVa4Hz/toR9fKOiTa5X044sEy/ysYD9+XkGbXijcpl/20KYvFvTvQgXxwvXCPnnVg08uEfTJ9UrGmUsFy/yG4DjzlpJ44TLB+ntPwdi6SLgff+ihH18u6JNFSvrxFYJlXiHYjz9V0KZvEm7TX3po01cK+vcmBfHCzcI++dqDT66SnFtWMs5cLVjm7wTHmR+UxAvXCNbfrwrG1luF+/EfHvrxtYI+uVVJP75O8n3ggv14lYI2fbtwm07x8I77hYL+vV1BvHCHsE/SPPjkekGf3KFknLlBsMw1BN/9mJWnI15YJFh/dZL8/Z6m390l3I/reejHNwr65C4l/fgmwTI3EOzH+Qra9D3CbbqJhzZ9s6B/71EQL9wr7JOmHnxyi6BP7lUyztwqWOZmguNMCyXxwm2C9ddawdh6n3A/buuhH98u6JP7lPTjOyTfBy7Yj3dS0KYfEG7ThR7a9J2C/n1AQbywRNgnRR58cpegT5YoGWfuFixzR8FxpkRJvHCPYP11UjC2PiTcj7t46Mf3Sq7hVdKPFwuWuZtgP+7hqR/HhOvvvpgOnfcr0fmAEp1LlOh8UInOh5TofFiJzkeU6HxUic7HlOh8XInOJ5ToXKpE55NKdD6lROfTSnQ+o0TnMiU6n1Wi8zklOp9XovMFJTpfVKLzJSU6X1ai8xUlOl9VovM1JTpfV6LzDSU631Si8y0lOpcr0fm2Ep3vKNH5rhKd7ynR+b4SnR8o0fmhEp0fKdH5sRKdK5To/ESJzk+V6PxMic7Plej8QonOL5Xo/EqJzq+V6PxGic5vlej8TonO75Xo/EGJzh+V6PxJic6flej8RYnOX5Xo/E2Jzt+V6PxDic4/lej8S4nOlUp0/q1E5yolOv9RojNI0aEzpkRnihKdqUp0pinRma5EZ4YSnTWU6MxUojNLic6aSnTWUqKzthKd2Up01lGis64SnTlKdNZTorO+Ep25SnQ2UKIzT4nOfCU6GyrR2UiJzsZKdDZRonMLJTqbKtG5pRKdWynR2UyJzuZKdLZQorOlEp1bK9HZSonObZTobK1E57ZKdLZRorOtEp3bKdG5vRKdOyjRuaMSnTsp0bmzEp0FSnTGlegsVKKznRKdRUp0tleis4MSnR2V6CxWorNEic5dlOjcVYnO3ZTo3F2Jzk5KdO6hRGdnJTq7KNHZVYnOPZXo7KZEZ3clOnso0dlTic5eSnT2VqJzLyU691ais48Snfso0dlXic5+SnTuq0RnfyU6ByjROVCJzkFKdA5WonOIEp1DlejcT4nO/ZXoHKZE53AlOg9QovNAJToPUqLzYCU6RyjRWapE50glOsuU6BylRGe5Ep2jlegco0TnWCU6xynReYgSnYcq0Tleic4JSnROVKJzkhKdhynRebgSnZOV6JyiROdUJTqnKdE5XYnOI5ToPFKJzhlKdB6lROfRSnTOVKJzlhKdxyjReawSnRVKdM5WovM4JTrnKNE5V4nOeUp0Hq9E5wlKdM5XovNEJToXKNF5khKdJyvReYoSnacq0XmaEp2nK9F5hhKdZyrReZYSnWcr0XmOEp3nKtF5nhKd5yvReYESnRcq0XmREp0XK9F5iRKdlyrReZkSnZcr0XmFEp1XKtF5lRKdVyvReY0Sndcq0XmdEp0Llei8XonOG5ToXKRE541KdN6kROfNSnTeokTnrUp03qZE5+1KdN6hROedSnTepUTn3Up03qNE571KdC5WovM+JTrvV6LzASU6lyjR+aASnQ8p0fmwEp2PKNH5qBKdjynR+bgSnU8o0blUic4nleh8SonOp5XofEaJzmVKdD6rROdzSnQ+r0TnC0p0vqhE50tKdL6sROcrSnS+qkTna0p0vq5E5xtKdL6pROdbSnQuV6LzbSU631Gi810lOt9TovN9JTo/UKLzQyU6P1Ki82MlOlco0fmJEp2fKtH5mRKdnyvR+YUSnV8q0fmVEp1fK9H5jRKd3yrR+Z0Snd8r0fmDEp0/KtH5kxKdPyvR+YsSnb8q0fmbEp2/K9H5hxKdfyrR+ZcSnSuV6Pxbic5VSnT+o0RnkKpDZ0yJzhQlOlOV6ExTojNdic4MJTpreNKZYulsV9ChqKi8Y2F5vF28tKCwZGRx+4Ki9iM7FMeL4+2L248qLG7Xrry4qLhjyciSjgUl8aJ25fHR7UvajU7Y3kawzJmeypwq7JusVLn62yNfzlaXfB1tJk3QFzWV9JN0wTLXUlLmDMEy11ZS5hqCZc5WUuZMwTLXUVLmLMEy11VS5pqCZc5RUuZagmWup6TMtQXLXF9JmbMFy5yrpMx1BMvcQEmZ6wqWOU9JmXMEy5yvpMz1BMvcUEmZ6wuWuZGSMucKlrmxkjI3ECxzEyVlzhMs8xZKypwvWOamSsrcULDMWyopcyPBMm+lpMyNBcvcTEmZmwiWubmSMm8hWOYWSsrcVLDMLZWUeUvBMm+tpMxbCZa5lZIyNxMs8zZKytxcsMytlZS5hWCZt1VS5paCZW6jpMxbC5a5rZIytxIs83aCZTbrFAw+ThS4F6E3YS/C3oQ+hH0IfQn9CPsS+hMGEAYSBhEGE4YQhhL2I+xPGEYYTjiAcCDhIMLBhBGEUsJIQhlhFKGcMJowhjCWMI5wCOFQwnjCBMJEwiTCYYTDCZMJUwhTCdMI0wlHEI4kzCAcRTiaMJMwi3AM4VhCBWE24TjCHMJcwjzC8YQTCPMJJxIWEE4inEw4hXAq4TTC6YQzCGcSziKcTTiHcC7hPML5hAsIFxIuIlxMuIRwKeEywuWEKwhXEq4iXE24hnAt4TrCQsL1hBsIiwg3Em4i3Ey4hXAr4TbC7YQ7CHcS7iLcTbiHcC9hMeE+wv2EBwhLCA8SHiI8THiE8CjhMcLjhCcISwlPEp4iPE14hrCM8CzhOcLzhBcILxJeIrxMeIXwKuE1wuuENwhvEt4iLCe8TXiH8C7hPcL7hA8IHxI+InxMWEH4hPAp4TPC54QvCF8SviJ8TfiG8C3hO8L3hB8IPxJ+IvxM+IXwK+E3wu+EPwh/Ev4irCT8TVhF+IdgFk3FCCmEVEIaIZ2QQahByCRkEWoSahFqE7IJdQh1CTmEeoT6hFxCA0IeIZ/QkNCI0JjQhLAFoSlhS8JWhGaE5oQWhJaErQmtCNsQWhO2JbQhtCVsR9iesANhR8JOhJ0JBYQ4oZDQjlBEaE/oQOhIKCaUEHYh7ErYjbA7oRNhD0JnQhdCV8KehG6E7oQehJ6EXoTehL0IexP6EPYh9CX0I+xL6E8YQBhIGEQYTBhCGErYj7A/YRhhOOEAwoGEgwgHE0YQSgkjCWWEUYRywmjCGMJYwjjCIYRDCeMJEwgTCZMIhxEOJ0wmTCFMJUwjTCccQTiSMINwFOFowkzCLMIxhGMJFYTZhOMIcwhzCfMIxxNOIMwnnEhYQDiJcDLhFMKphNMIpxPOIJxJOItwNuEcwrmE8wjnEy4gXEi4iHAx4RLCpYTLCJcTriBcSbiKcDXhGsK1hOsICwnXE24gLCLcSLiJcDPhFsKthNsItxPuINxJuItwN+Eewr2ExYT7CPcTHiAsITxIeIjwMOERwqOExwiPE54gLCU8SXiK8DThGcIywrOE5wjPE14gvEh4ifAy4RXCq4TXCK8T3iC8SXiLsJzwNuEdwruE9wjvEz4gfEj4iPAxYQXhE8KnhM8InxO+IHxJ+IrwNeEbwreE7wjfE34g/Ej4ifAz4RfCr4TfCL8T/iD8SfiLsJLwN2EV4R+CObHHCCmEVEIaIZ2QQahByCRkEWoSahFqE7IJdQh1CTmEeoT6hFxCA0IeIZ/QkNCI0JjQhLAFoSlhS8JWhGaE5oQWhJaErQmtCNsQWhO2JbQhtCVsR9iesANhR8JOhJ0JBYQ4oZDQjlBEaE/oQOhIKCaUEHYh7ErYjbA7oRNhD0JnQhdCV8KehG6E7oQehJ6EXoTehL0IexP6EPYh9CX0I+xL6E8YQBhIGEQYTBhCGErYj7A/YRhhOOEAwoGEgwgHE0YQSgkjCWWEUYRywmjCGMJYwjjCIYRDCeMJEwgTCZMIhxEOJ0wmTCFMJUwjTCccQTiSMINwFOFowkzCLMIxhGMJFYTZhOMIcwhzCfMIxxNOIJh3y5v3tpt3opv3jZt3eZv3ZJt3UJv3O5t3J5v3Ept3/pr36Zp31Zr3wJp3rJr3l5p3g5r3bpp3Wpr3RZp3MZr3HJp3CJr3811OMO+VM+9sM+9DM+8aM+/xMu/IMu+fMu92Mu9NMu8kMu/7Me/SMe+pMe+AMe9XMe8uMe8FMe/cMO+zMO+KMO9hMO84MO8PMHvzm33vzZ7yZr92sxe62Wfc7OFt9sd+mGD2dTZ7Jpv9iM1ev2YfXbNHrdn/1eytavYtNXuCmv02zV6WZp9Iswej2d/Q7B1o9uUze96Z/eTMXm1mHzSzx5jZv8vsjWX2nTJ7Opn9ksxeRGafH7OHjtmf5gOC2VfF7FliYk6z14bZx8LsEWH2XzB7G5h9A8wz+eZ5d/MsuXlO2zwDbZ4vNs/umudizTOn5nlO86ykeQ7RPONnnp8zz6aZ577MM1XmeSXzLJB5zsY8w2KeDzHBrnmuwTwzYNbjm7XuZh25WaNt1j+b9cBmra1Z42nWPJo1gGZNnFkjZtZMmTVEZk2NWWNi1lyYNQjmnry5R23u2Zp7mOaenrnHZe75mHsg5p6AmSM3c8ZmDtXMKZo5NjPnZOZgzJyEuUY316zmGs5c05gYP+V/4Upg1q6aT69g7ScxlK2O3Q1v1nqatY9mLaBZG2fWipm1U2YtkVlbY9aamLUXZi2CuTdv7lWbe7fmXqa5t2fudZl7P+ZeiLk3YObKzdyxmUs1c4tmrs3MPZm5mOaEFoSWhK0J5trGrMluTdiW0IbQlrAdYXvCDoQdCTsRdiaYC604oZDQjlBEaE/oQOhIKCaUEHYh7ErYjbA7oRNhj+B/1z5dCF0JexK6EboTehB6BpU/+6St/b5v4m/eii6ND3/muu483QDALU38/WBQ1nW3rxp0MOeeTPz9rX7m7m8Mu6Eh594CNs9KjeauANwtgFsCuGWAewtwnwHuF8ClpkVz9QDXDHA7Am5XwPUG3FDAlQNuCuBmA+40wF0CuEWAWwy4JwH3GuA+BtwPgPsHcNnp0dyWCW7Z2S8sXTi/dBTnWoB8OwGuANgsBPmKQL4OIF8J4HYFNncH+fYA+bqAfN0A1wPY7AXy7QXy9QH5+gGuP7A5EOQbDPINBfmGAe4AYPMgkG8EyDcS5CsH3BhgcxzIdyjINwHkOwxwk4HNqSDfdJDvSJDvaMDNAjaPBflmg3xzQL5FIN/3IN9PIN+vgPsd2PwL5PsHcOkZ0TYzM6Lz1QJcNrCZA/LlAi4fcE0B1wJwbYDO7UG+AsAVAptFgNslwS3/6NUBh006qh/ndgfH6wVs9gXcIMANB1wp4MYC7jBQhimAmwZszgBcBbA5B3DzgM1TQb7zAHc54K4H3O2Aux9wjwPuOcC9Drj3Afc54H4A3J+AS60RzdUGXB7gtgLctoArAFwJ4LoCbm/ADQLcgYAbDbhJgDsScLMBtwBwZwHuXMBdBLhLEpyrb16b4Fzj50Jg805g8z7APQy4pYB7FnAvA2454D4A3EeA+wTUy+eA+xLY/B7k+wlwvwCbfwAulhltMw1wGZnRNmuBfHUAlwNsNgb5WgGuLeAKAbc74LoCbm/ADQHccMCNAtwkwE0F3BGAOwpwM4GPZoN8cwF3PLB5Msh3GuDOADbPBfkuANxFwOblIN9VgLsG2LwJcLcCm3cB7h5g8wGQ7yHAPQJsPpngXOeVZcBmbla0zcaAawa41oDbAXCFgCvOii7DroDbHdjsArgewGZvwO0NbPYH+QYBbgiwOQxwBwObIwE3Ctg8BOSbALhJwOYUwB0FbM4C3LHA5nyQ7yTAnQJsngm4C4DNiwF3KbB5Hch3A+BuBDZvA9y9wOb9gFsCbC4F+Z4G3DJg80XAvQFsLgfcO8DmJyDf54D7Etj8DnC/Apt/AO4vYDOtZnS+GoDLqhltsw7g8oDNRoBrAmxuDfK1BlwbYHNHwBUBmx0BVwJsdgX5ugOuJ7DZB3ADgc0hgNsP2CwF+UYBbjSweSjgJgOb0wB3BLBZAfLNAdw8YHMB4M4ANs8G3LnA5mUg35WAuxrYvB5wtwKbdwDuLmDzQZDvEcA9Bmw+BbgXgM2XAfcqsPkuyPcB4D4CNj8D3LfA5g+A+wnYXAny/QO4WK1omxmAy64VbTMHcPWBzTyQrxHgmgCbWyc41zXXtsBmb2CzH+AGA2444EoBNwZwEwA3BXDTAHckqJejATcL2JwD8h0PuPnA5smAOxvYPA9wFwCbl4J8VwDuKmDzRpDvFsDdBmzeDbiHgM1HAfc4sPk0yPcs4J4HNt8A+ZYD7h1g80PAfQlsfgO474DNn0G+3wD3B7CZUjs6XzrgatSOtlkbcHnAZiPANQE2m4F8LQHXCtjcEeQrAFwhsNkRcJ2BzT0B1x3Y3Avk2wdw/YDNASDfYMANBTYPBPlGAG4ksFkOuHHA5njATQQ2p4B80wF3JLB5NOCOBTaPA9xcYPNEkO9kwJ0KbJ4BuHOAzfMBdyGweRnIdyXgrgY2rwPcImDzZsDdCmzeBfLdC7j7gM0lgHsE2HwccEuBzWUg3/OAexHYfAVwbwCbywH3DrD5Ici3AnCfAptfAO4bYPN7wP0IbP4G8v0JuJXA5j+AS82OtpkBuMzsaJvZIF8O4OoDm3mAawxsNgXcVsDm1iBfa8C1ATa3B9zOwGYh4IqAzRKQbzfAdQI2uwCuO7DZC3B7AZv9QL4BgBsEbA4F3HBg8yDAjQA2y0G+sYA7BNicALjDgc2pgJsObB4N8h0DuApgcw7gTgA2FwDuZGDzDJDvbMCdC2xeALhLgM3LAXclsHkdyHcD4G4ENm8B3B3A5t2AuxfYvB/kexBwDwObTwLuGWDzBcC9BGy+DvK9Bbi3gc0PE5xrrvITNJbXibbZFXC9ANcPcIMBNxxwpXWiyzAKcKOBzUMANwnYnAy4qcDmUSDfLMAdC2zOAdx8YPMkwJ0CbJ4F8p0LuPOBzYsBdxWweS3gFgKbt4F8dwLubmDzfsA9Cmw+Abgngc0XQb5XAPcasLkccB8CmysA9ymw+R3I9yPgfgY2/wDc6ofLI2ymAi69brTNOiBfPcDlApuNANcM2GwJuFbA5o4gXwHgCoHNjoDrBGx2AdyewGYfkK8f4PoDm0MAdyCwOQJwI4HNQ0G+iYA7DNicBriZwOaxgJsNbC4A+U4B3GnA5tmAuwjYvBRwlwOb14N8NwLuZmDzDsDdB2wuAdxDwOZTIN8ywD0HbL4MuLeAzXcA9x6w+RnI9yXgvgY2fwDc78DmX4D7G9jMyInOlwW4WjnRNnMA1xDYbAK4psDmNiBfG8BtB2zuDLgOwGYJ4HYFNjuBfF0Atyew2SfBua659gU2jwI2KwB3POBOBtyZgDsfcJcD7lrALQTcIlAvNwPuVmDzbpBvMeDuBzYfAtyTwOYzgHsW2HwJ5HsVcK8Dm++DfB8BbgWw+QXgfgQ2fwHcb8DmSpDvH8DF6kXbrFkvOl824OoCmw0AtyWw2RxwLYHNbUG+7QC3A7DZHuQrBtwuwOYegOsFbO4NuH2AzQEg32DADQU2R4B8ZYArBzYPAdwUYHM64I4ENmeBfBWAOw7YnAfyzQfcAmDzNJDvTMCdDWxeBLhLgc2rAHcNsHkDyHcT4G4BNu9KcK5YYzGwmVM/2mY+4JoCbmvAtQXczoBrXz+6DMWA2wXY7AS4PYHNHoDrBWz2Bfn6A24gsDkUcAcAmwcDrhTYHAPyHQK48cDmYYA7Atg8CnAzgc15IN98wC0ANk8D3LnA5gWAuwjYvBrkuw5w1wObNwPuLmDzXsDdB2w+BvItBdxTwOZzgHsV2HwDcG8Bmx+BfJ8A7jNg82vA/QRs/gq434HNWG50vjTAZeRG26wFuPrAZh7gGgKbzUG+rQG3DbC5HeDiwGYR4DoAm3uAfF0B1w3Y7A24fYHNgYAbDGweBPKVAq4M2BwLuEnA5mTATQU2Z4F8FYA7Dtg8AXCnAptnAO4sYPNikO8ywF0BbF4LuJuAzVsBdzuweT/I9yDgHgY2nwDcs8DmC4B7CdhcDvK9C7j3gc0VgPsK2PwWcN8Dm3+AfCsBtwrYTG0QzdVsEG0zG3B1gc36IF8e4BoCm80TnOuaqxWw2RfYHAS4YYAbAbjRgBsPuKmAOwpwMwF3LKiX4wA3F9hcAPKdArjTgM2zAHcRsHkp4C4HNq8B+RYC7gZg8w6Q727A3QtsLgHcUmDzacAtAzZfBPleAdxrwOZ7IN+HgPsY2PwccD8Amz8D7ldg8y+QbxXgVr8oIcJmVl50vtqAqwNs5gKuKbDZDHAtgM3WIF9bwG0PbBaBfB0BVwJsdgJcT2BzL8D1ATb7g3yDADcE2Nwf5DsAcAcBm2Ug32jAjQU2JwFuMrB5BOBmAJvHgHyzATcH2DwxwblijVOAzRXA5peA+x5wvwHub8DVyI/WWRNwtfOjbeYALg/YbAS4JsBmc5Bva8BtA2y2BdxOwGYccO2AzRKQbzfAdQI2uwKuN7DZB3B9gc2hIN8wwB0AbJYCbiyweSjgJgCb00G+GYA7GtisANwJwOYCwJ0MbJ4D8p0PuAuBzcsAdy2weT3gFgGbd4J89wBuMbD5IOCeADafAtwzwOYrIN/rgHsT2HwXcCuAzc8A9wWw+SPI9wvgfgM2VwIutWG0zQzAZTaMtlkP5GsAuHxgcwvAtQQ2twHctsBmAcjXDnDtgc1dANcF2OwGuB7AZj+QbwDgBgGb+wNuBLBZBrhyYHMiyHc44KYAm0cC7lhg8zjAzQU2TwH5TgfcmcDmeYC7FNi8AnBXAZs3gny3AO42YPNuwC0BNh8G3KPA5jKQ73nAvQhsvga4d4DN9wH3IbD5ZYJzXQN9C2w2ahRtcyvAtQLcdoArAFwHwHUCXDfA9WwUXfa9ANcH2BwA8g0G3FBgczjgyoDN0YAbC2xOAPkOA9xkYPNokO8YwFUAm/MAdyqweQbgzgI2zwf5LgLcJcDmtSDf9YBbBGzeCrjFwOYDgHsQ2HwM5FsKuKeAzZdAvlcB9zqw+TbgVgCbnwHuC2DzW5DvB8D9BGyuBPn+AVyscbTNDMDVbRxtsz7gGgCbjUG+poDbCtjcBnBtgM3tAbcjsFkQkS+xrc/q93abT2L78CDx7+r3N5tX53YO7WzcJ57F7ErbLy4oLskK1v0I62+XFax9p7Wv+glterAfvjos2LNirX27LOaTnfg/xuoyzGNeM7IVyxNL/BZ+Uh15w2OE5cvyUL7igqKi0H5ND/YLCgoLssMyVqy1n8nqzHzSGJdlcemMCzWa/KNS1l+fKZu8Pjuor88w3dyKdfVzbh7j0izueMalW9wJjMuwuPmMC/tcllU+X23fR1soKChqn+vQHx7L/DYpZd1y8nElFsiNYdnBun4Mj8GPnealDgrjMet4QbDuWB1Yx68ZeB3P4zHreKEeu37s8SLdT/0UxCz7XE+6o35CX2Y4uNBW2H/SmS2ePp2Vkafn38P8/LedEn9zHDbttpsRVC4P/y1Mb35rk/heN3C3RW7X5bc0h90cR/606uOoOE6WI1/nxN+Cjfy4+rMP+xlWHUnZD/s/76f2WO7jfEmfkqqO5eHxawaVxxcfY7kr9uP1E7a5sO6yHFpzHBxvI5zjx8lyHMdlKzVJbdnnjmpb2BaPW3kbCfkg8N0P48X/th/6iWFwP0x31KvfuDvesSp+5npDX9Z0cKGtxOsh1ompeHo+D8TT8+9hfv5bWeJvjsOm3W5rBpXLw3/jMdWBVtn4uTQW8Te0a/8W2q0ZuM//nRP/F2zcB7YjVwxRN6jsK7vOXLYyHbZyHPkzN/Fxsh35NtZXnmKBOOpjrnLXDeTHZZ4/q/o4ao9TYyOPU8NxnGxHvn/bl3KA5iyHBsF+VmqfmwJHeQJHOQKHVtMvp1nzfC5bdR1lsmPhGtYx7d/sukt36PFcd3G/c7HxjqH9WlbdSOkP7dV21LXrfBimz97A9HU2MH1dR/pMkD5nA+3X28D09Tcwfe4Gpm+wgenzHOldcXDYt/MZF/bDsG01ZL9vjmuI8Pg1La2+4omGQeW6y3fUnekTYZsbUz6176Sp5VO4bm6roaNcvNw8DW+rdrpYUNnXtS07rj7If68T8XvdiN9zIn6vF/F7/YjfcyN+bxBU/thjufk/w/q/lvV/Tctu2Adc9WprcNWzz/+DTXgsCa1hX3N9j1m/o7btmr/Nt2xt6Pwtz2/Hi657Gq6+HKZH8we8DbrKkWnli7pWS42wja457bSp69GMyui6hudaa1hl5Me1+1iYL+o+T9R8uvDYXeg3zipwxlmC9juE9mv7sd8+tJ/tx/6a+9h1/Nhfs4anLrMfyNmPp1vt+Z7EX9OWr4ytPaZ93qtKf3PFhvVYGvveVg7j6lfBFjq2K87kNutYx+a6cq18uYzj6VIjbOeup9z1LRtIMyqjKzbmWrOtMvLjNqiCLXRsV5zNbda2js115VXBFjq2K07lNmtZx+a6GlbBFjp2I0d6brOmdWyuK8zr9/qioDjU2ngDy9bEkb4xS2PHMo0Y18Ti7GsVfpz8Kupy3acO06HrN/tvEARVmmNyaa7K+h0/fqz6+h37OjHVix58nZjqqNewfhr7qZ8C1M5d7Tb0ZRMHF9raIvE/j+t4+sasjDw9/x7m57+tSPzNcdisSj/kv/F7Te9ZZUth6Ta2P7jW2nqeGykJy8F9Glhl5HXHz2n2J9X6n+s28c6RVZiPtfu/a6yzz+fhd86Feuzf0FgXpsuKOE7nxP8FG/WJj7bvfZnv4bWM+fuzVaawDnkfyXToTrfS75Wy1uZvwbp1yPPnW+X2M37ES+32xD8hx/s3j2Hsj6uthbpN2eZtQFvjfYsfP2qs4+Pxhp7TQ1+54rQmTNfq/BVrudBf4X2ZNMZJngPNcc5McdeP+aRXbJr6cY3buRbH44eGrH7set2c4yWPhe2Pqw2Hujd0vOT92R4veV3Yaz1c10D8N3u8zHRodY3ZfDzLj7mPyccz1zicbqUvYONZ49i6ZeT57XgoWdoCvzaxP+trC/M2si2Ede+67kT3s9Z33YnGszyma3X+irUcj2/MJ83iOid+L9ioj3s84+W1xzNf9ZMTVG4D9njGbdvrcTiXb3Guth+zOK7Pde2AYlDXcTI38jiZVTzO/7fybO7jxISPY6914TFzVeYnUWzO89cHx8ncyONkVvE4msuz+cbgghLXGMz122Mwmkvm5UVjNj8PZVj1w8fnuqwO7Hw+5gjDY/PYh68J4rERTz80caI3dbnQigW4T/k1rPmkVXgpj9OnfDypik9d409VfRrWmcundvzn5zp+rU9d8Sy//xgVz46sok83Zz/l81u2T13jEk+/ofeIwjrLCSr7m1//us5PnWXqoNguG/dpHYeedCv9hCr6lLdR80mr8FKeDe6nrnv8qJ+62gD3TVhnOUFlf9v3ZzaHT/l96iifHqm8n1Z1v4Cq+jQsu8un6awO+P++fOpaF1Lboce+7z5HeT91rTdC/XR9643COnPFkDmsDjaXT/l6mCifnqq8n7p8ivrp+nwa1pnLpzFWB7xOfPmU+yzUaq+hCnme/gIF/TSsy9X6K9atY9f1PU9v+xT1a15nrmcN6llclmXbfPg6o7oW58ojrd9e18jzJ8O5w/UciD3O3OBok6j8qL7W14ftNZKuOZ66EfW1Pl2udfqu+6K2Xzw9wwL9kuaoE9svdwK/uJ7h2VC/8HLba+lc62tda3ftZ4s2dA2ya5+UzekXfk0U5ZcHN6Ff7HWGrnXTm+p6I8tRX+h6I0z/BKgvV/lRfaFnVrke13NwWVZ9+XmGfW19rdm3K3DH8rw+efpnQX25yo/qy/U8GS+3vc7SVZee11jD+qrl0GrX1yugvlzP321offFy22tDs5KsvmpWob6Wb8L6stez1gL1FbNsdxaprw7lrmcc5Ox3LHL5W1C/8xkEQftx1zMIgvbXPAOS48V+4Zp9m+r50V/mmneXs1/UwXWvRlD/6NB+Az/217T/PD/2Szbjs7btY9bxgmDda4nAOn6yPWsb1l0jh9YcB2e3cdfzCo0cx3HZyha0lSdoq56grdqCthoI2soRtFVT0FZukpaxjqAtyTYhWfeS9SXZtyV1xQRtSbZVST/acX2Ytk3iiyueFjwndnDta2Ofj2t7OnbMOl5Yf4FV3vD42Q49oe6aDi5tI7SWlJSXty8cXRovaN+uQ7vyophlP9Rq/1aVayrXud3vs8PxItd9iWxWr+aTxrjaFpfOuFAj36/c77PV8SrVPz9+joPjz+RviC/rB+5+H9aPq39yjrdpe/9o19yxvbes+V7L4lz3Juy9MM13e087XgfhfIex7VojXZV1T6kO/WH6MDbNiEjP15vx9O0TBzbaF1nty/fzg02YplRLJz9+upW+hGm252Fcz6Ggddvrew4l1FPXqjeeN8v631d9uZ6RTHXosZ+B7OyoL9cYlcvKYz5pFV7K41yLz/3Gx7/1+ch8bJ9u4Uhv+8Z8cqz03L+utbrhMV1jTdhO+HMurjZj7z2D2qurnzdhx3Glj+oz/UA/5+X30W6bMk2uPraFpTlMPxD0c5eP+T1qu000daTfwlFvdYPK7SXMm2X976u+tnTUV6ZDT7qVflgV+zl/Rs580iq8lMfZz9d5Vpsdd30+Mh/bp1s60nPfhHWWY6Xn/nU9Qxge0/UcVdhO7OdzzadGxbp6Vv+tqFze0CeZPL3FZTEurWLd49RM/J/GjsNthTrSrfQTExUYrnXPYHnC/DmO42dYx19Ht+M37ifbVqrjtzC9qdMxiX9MnOSzfXYsLigI9YV1nx6sO4YE1vHTrfRTE1p5rBr+3ZjrodEdS+Oj25WOLm1fOmpUUVmp61n7sM5MPZn2Gb5XpzartykzJpat3iQwWM/HNhIOdNyRYgNDvPrlPLw2YtbxQj1RJzQzCRsOWlxvikN78zCza4WXvTIo5hDganE5EfnNB12hVTeydX+rbmSBn0bmOr3x8Md8wlMkP4Xy9KGOdCv9uQnCnKrOt0KsdMfxTLrrQLpYxN/VNhy/pVWs+5vr1MpDjjB9eOyaFZU1hlwtxvHQzHxqJ/7n9cVthTrSrfRXWyEHDxPC/DmO42dax19Ht+M3O+So5Uhfy5He+OcS6zTOyy7dCVcf07LPf7O1XcfCIekwo7y4ZFRByejy0ng8XjiqoHx9YYb08Yval3YsK+0Yj5cUxcuL4u3Xd/wWie9ZFiftpyxHOaXsFyeWLfCPsP7q188G/ws07Cn3bsxezOK6O47ls5z8VZy+tqjNdegPj2XqJ7zMdU0l2n08NYj2Q+D4LRZEBw/2bbbg35c5bv9glxOVLeRcS6ntcvP8fLl84LDh8mngOEZqRF6X3RRQjvXl5XXvuqUR6tFwyd088f/mvuTeIfFd97mouKj6XIQ/Uucie3lYCkuHroN0n4OKCtAjeq5b4akWx2Nx17nLZ/vi9eOnfRUV5AbRbcqUszWrD7vdxKw68KSxypMZa67LPPqkgE1mpFp67PoJv5sp0XAZxZjyqV2mTR07dNzUieVTKr08JbTYmf3Oef6x09jp7PSuWQt+Rgl/T/abCNsk/k/mmwhbJb5riGi2T/y/uSOatglCd0TTcZNdXXuaOi70/NCzM6JxPZiaaqWz8/DxshtL0y0iTXeWpntEmh4sTY+IND1Zmp4RaXqxNL0i0vRmaXpHpNmLpdkrIs3eLM3eEWn6sDR9ItLsw9LsE5GmL0vTNyJNP5amX0SafVmafSPS9Gdp+kekGcDSDIhIM5ClGRiRZhBLMygizWCWZnBEmiEszZCINENZmqERafZjafaLSLM/S7N/RJphLM2wiDTDWZrhEWkOYGkOiEhzIEtzYESag1iagyLSHMzSHByRZgRLMyIiTSlLUxqRZiRLMzIiTRlLU8bSpLI0o1iaUVYan4u66Qqhnd/xurDAXrwaBJUj/ww/x65y5B8ef1O9LDvD0mPXj32Fya8+YxaXVlG5HK6rz9C/5qqsK0tnty170TG/Ignbr+vW9KiKtfb3CdbV67rSccVxPmOTYvZArZ+2Hi9AmzS5/JVmcVXxl/lMY+k2zUzL2rrz0zficTTbH7aVZL+27JP4P5mvLbsnvofLWVaE6QOffWPtchb7paT82H42folX+TwQHr9m4PO8tPY84No0hteP3bf9bPQSX7Nw17Upi2sxd+jLLAcX2lqzGoHZ4ukzWRl5ev49zM9/OzDx17U5mH0nyrVpCv+N94uhVtnsl+m6/oZ27d/sVUC8bkL/+o19iqBPUx167DqLehAnarOf8sRfw38ZYZO3hZQq2DyEaRmb+O56GIq/pOMI69iZ6zl2qnXsMP0UZnNChM3YemxWtU5TIsp/eOKvOd43Vvm53zKZ/WkgXTpIt7769HwnrMiOjVODyrExP769uD3kXX9De/Zvdj/NdNSBaxMZH+WutZ5y2w8U1mZlSLVsuNLbm17Z9u2H18P8fBWBa6z1vKlW3B7/FyT+Gv/MjdAcBJXPp7ZGXl8ZEen5OYynn5/4y8c6VxuqyeyHuusGlf2DNnSLydXlmg1zavmxH1/fmHOadVz+QHtV6j9Mfw6zeaZVr7zv2/FK1KqRkOcPYG/sWMIfbrbjkjosj6vcdtzHN0qQjMlDPeH1Cu/rOQ496Vb6y61y1Wf1k2qV1a5/g3qO4/L7PBnWcetZxzX95PvEd9cD/7ztXWkduy6znerIG1XmxczmNYnvdR357Q1PeT3YG6Dxl3T7iOtzHGXl7a2uVdYw/aLEX1PPPyW+u+Y4arPymE9ahZfyrH4g71emw+6z6ey4vFxBsLbcPL3dHnMc6blv7Bew8D5ibyTj2jAAnYvC/FHnInvzjzD93Ym/rnMRv+7gq0mjbLvGaFed1HHktft0RkT6HKscYfoljnLYNnn75XWfFmHzUabl4WDd8nO/8vj5hYhj8/KnOspjj4FRsX49S2uYfmlQufyuDegk5+ZDza4Xv7hePJ9upX+Gaf4poh54vbnOl7YGnr6+o97C8ZTXu/0CR+7bMB33rcuGPSZ7emluu2xHeQNLfwOH/pBzvbA+5rCVav3Py2T8VTu21q6dztbD20IDZt+uQ/s8hsbheo4yoj5Uz3Ecuw+9y8pnj4XZETqj9Lk27LXHxIyI9FHn048c+rJBfh63JPs6oC8S/2/udUCb+ykf6eMXFhd3KCkcWVDUcVTZ6FFF7Tb18TsUdYgXF5cWl3UoG11SVDZyUx9/Q5/y8vn05J9hWsLKxPf1PT1ZKxadLhbxd7UNx29pFev+luxPT2YmDCTz05OxRKZkfHoybDtR9+o8rVNYExeG/uTX53a/DoLKL7tpGVtbhnqxaM0xOc2VXtCTwo7hmj923XMU1LOmDjNYHcYcx7TnGcL0TWLr6grP/9wPriekQi7TcVwex9i+y7SOy+dWYtYxagbu9mDPCccCH3W79rrFLoNdJzGgJwjk+na6pac5q8PWbPznfZ7Xp/F5K5AuDaTjZVoz1gXy5+Gykg6jS9q1GxlvVzKqvCTeYX3n4Sms33NOelz1ux77f+te+EdYv+f12HE167FTWZpuLE23iDTdWZruEWmi1mPzND1Zmp4RaaLWY/M0UeuxeZqo9dg8TdR6bJ4maj02TxO1HpuniVqPzdNErcfmaaLWY/M0UeuxeZqo9dg8TdR6bJ4maj224XWvp41vxvW08er1tIzj6zPjLJ3dttB62rD9utbThu3W2N8tWFcvt4HmVv2uCW3ve02ot6dv41b9+IhNeP34qH9TP+jp27A9hHMXQeCeIwjraHOtmd018X8yr5ktSnwPr8N3iq3VbLf/mPV9Q1+MiMYO15hflTHZdRyX5vA46YLHcV2j+l3vu3ZNVSbTmRpU7iv2tT+/Vkm1bLjS2+dZ237WpilvpbWefL4mw6Hf85qtIntO4bjEX6Oln1WH6/ORfe+lpqPOeRp7Pev61njxtak8/aDEX6OvKLZuvdXyUm9r12u41kXxdljL0hym349p7hhz10MQ4JjB1sDT83LbL4d1rSdw3Ruz1yW6bNsvEXHZsdeweV7bVunli3x+0aXdtbZHUM+athKureDzfHUdeux1I2MsXeH9Vd42sgO3TwxyHMet5/CPfQ80PK5pP7tEtNFagbuv2vfouT7B8as826or/nGtMbBfuJETUW/2J9X6n5fJ1M/usbV27XS2Htd6Ls8v5Smw20nUeBX1QtKprKwdrbK6rtE2xfqyobF165WPm+mWJjRGmo89pmY70nPf2Bu+8/Ztrz3j8Zs95sUcx+Fa7DGYr/d3pQ/t2fcoKhJ/je4JsXX1uebhTb4wFqjrOI6dh88dViW+8jTHXO53XmXtuumYoy7MMedH1AvvbzyvfU8pTL9FbK3Nk6y68zQ/XOml6zy2to/J9fiJsdaeN13PN9Ry6LGfPzg7WNcXa8arwD32pVrpazuO61orbsd24XH5eTPVcQz+PIxX37Ityl3P4Hh+bqYkZh0vrA/+Gz9+zcDtm84yeuJ2u+L+cb3AiW9RznWnO7SvyV83iHZ4zOK4gFSHgJwgurFuquN43v7Q82R8QaGrkccCvyeG8CJ+9fba1nFDLurEYA8uYfobmc0bEt9dD9Twh2bsY6ZEHNM+SfsJRtcO7OEgzgdY12JO+4L/zmDdugyDfz6w13DYsU8E/Lj2QwH8uNnWcfnAXjeofEKyJ+xcwacraLP1RQV5UUH6YqYvDPKyHOXzETS4HtLhPqhjaQ7T84cJ7ImQOo56Q2/Ycy0O5uW2H/RBC41dx3Y9HG4fOyPYsPI/Hqwtv+0zTw+TrfGZ62GNqjwA8hTTbPvM9RAK8pnroQ3Xwzp1g8p+st8Svj6f2RctrsXhyGdh+hdY+W2fcU0+fMYf8HD5LOqhlVeYZttnLh8gn7keGKnnqDfXwxv29sTr85kdlLseWkI+C9MvD9aWX4vP3mOaN7XPeJ3Wt/K5HpAM685vncYLsx3lCT/2Aztcq+uBHXvhXWDVEf/wMm3ohB+vo1xm367LDXkoJ9tRRtRHXOc6u498x8q3aeKHeNx+cClw1F99h3aXrzfUn/yN1//Wn6hv2Ofvf+tP13kK+TNMv5KVbxP5s8CeWA8c9ed6QMzl683hT/vmiit+tP3p2hwK+dMVK2Y7jmPHilmxteXbVP60NUc9hB8V32YzzejGQXj9tDluHKAH013xCXowfX3XIGGd5QSVx/waFsevI7Ot47jaXIylqcrN9Zjj2Pa1dmNHm6vqXEcYS/C4OyyT30nHeKU5hqh5lqiNY5pXsd3yBynMJ63CS3mc7ZbHe3a7rerkpl1PPL09V2Y+OVZ6e1zkdcJtobbJN9+pylxYmH57R9t09Z2w3FW9eZPsD/C2Sxj4//YA7+Z+gHZzv6ZwQx/g5Qsck/1Bw4GJRKafdQWaY4H89ff/lwcN946tq2tTPWi4Nxtn7YVA1Q8aOj+VHjTsz+rwMOs8zue4+GLmwSBdGkjHyxTm8f3A/XDWvw9kelandRzPpBsP0sUi/q624fgtrWLd35L9gftxCQPJ/MD9SCvO4GWXviG/+piWff6brS1sO/8fNxLZ0Ad4t0x81/0Ab1HJpnqA19PisPa+Hx5wPcDremgg7DvdKtbWZbeKdTWFaXqwND0i0vRkaXqyNOZjn3O4PteDdN0sjl/3dLc4/hBND4vj15ihJnNu5RuMmY/9Uibz8fswWVGx57Uy8fW9yrFh4ruZa2qc+F4+8fBp5dPK9502cvy4sh7TJpZNHTdp4p6l48dzx9kNin/sJ43sfCnW/6nW//YTUekOu1H57d+iGh/Xr+GNfE0T/2/uC/kRie/KTyCl1ScQ/Kk+gaz/BNKA6TIf1wkk5PjuEfYkgo/Bn59cPE30FKK3+5j66RKsW4/8iX77BOupHbeLWccLgsrnBn78ZHtLjDkxh4FKGZ2D9508bnrp1PLwtMyLwM2mOIpon6bt63NXus11unatU7XvBdgutX+z1yrb+f8/Hsc1RMYi/obHCdZzHJdm13D7b4/jOQYuyLG08mN5HiLbu04hgVWHyI+uud6Yw5arT/GhuCeza6ez9XA/8Be38HK4/JUaVK5L1/091+ki/N3z2v4OrlORXX57Tp9z/HmHDfUH31xmQ/zB68h++QXva6kWx/XxNf7JfqnTI/H/5r7U4SGM69kZe2xH94k8hROF9nmfr11wvfzJfkakb+KvKeswq2yuDZhSHXVla+DpebnTrPrifbzGpqkvGH656itMz18m4Epvr4kJ0w9J/DX/2y+5c/Vd17kK9fmwDv8/3uPe0Ln10Ynvuqcm2pdtqqkJP/FWvMT3+gLX1IQrpki10tl5eL5uLE23iDTdWZruEWmipjh4mqgpDp4manNKnqY3S9M7Ik3U5pQ8TdTmlDxN1OaUPE3U5pQ8TdTmlDxN1OaUPE3U5pQ8TdTmlDxN1OaUPE3U5pQ8TdTmlDzNYJZmcESaISzNkIg0Q1maoRFp9mNp9otIsz9Ls39EmmEszTArjWtdhOD0le9NdItd04JhWTxv+FnlB93XbKwX+Byz18ZF6HrNfMJzKtrQxbWJY7rFpTOOX6fuwtK52pb5eN7gcaTn81d887W7/10v8OMFgf52Z3NpFZXLsaHtLup+affEd79j3/9iQF9t3HxyHfrt+YwaFcGaT1gHybTJaLfE/8m8yejuie/hfMKIMH3gtZ/H7fM4n5/jfQ2tZ5W+DRML3HMKrnkA1225WMTf0JbNJeuG1a75e3vdqctWxgba2pw+dc2NxKz/efoUR9lcY30Ni0tjXFU39t7Fqh9f8wTo3BZzlDf8PdOR3tWOXM9f2y+d9rQZbCHyPZ8jD49fm/0+qnzktDF9Jo0JrI89txrWWyOWhvsrJajc9mtE2Aqs/22bqcwe/2iYLy9P/L+558vDl1gqXxpUtKnm33zWT2jTg33n/JsrXl7f/Jvh0ZKe1S80Tfzmea6haHPG26acYQxryrtt4vvESVPHjZ4xsHzqPuMmDiifXj556riR48sHjhtV3n306PKyqXtOmjZxavnkwPq4hjvX76Z4Goa3cJXV5h7e+JZn5pMXyNdXARveGvixX8DDr8AqCz+uPYwHghpCe2E7cC2PsJcn8ctwri8mry9ua0l1HCv8hKuzGrDf8iK0eto3szC072t/VVeb4Y+N17K40HdpjnyxiP9TrL8obQzYzXZwoc3QV1xvWI5wOw++lWBoV7IuQ/u+bnGH9n1d9rnaAv/N7q/2eYdrssdUYa2lMYe+VOuYtkaextV+U6z/06zfU6uQ1tV+Q27NlBXIl+XQyn+zL4UDR/rQVjhGpUfY4ksbePoaVlpfPsx1aAq1/x8usBYEWBccAA==",
|
|
5197
|
-
"debug_symbols": "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1Tr/5PU3t7RqnX/y+9/c2qp1/snvf+OLq57zQ3xz1fP551ZXrfNP/vw5vrzq+fkb3141mX/y+pvbX7XOP3n9zW2wWuef/P43t8OqLLklVuv8k9//xtdYPeeH+B6ryfzD19/J/JM/f46vspqcv8nrb26Z1Tr/5PU3t85qnX/y+ptbaLXOP/n9b26l1Tr/5Pe/8aVWz/khvtVqMv/kz59ze63KEl9s9fz8jW+2msw/ef3N7bZa55+8/ua2W63zT37/m9tvtc4/+f1vbsNVWeIrrp7zQ3zH1WT+yZ8/57ZcrfNPXn/je64m809ef3Obrtb5J6+/uV1XZcktu1rnn/z+N7fuap1/8vvf+MKr5/wQ33g1mX/y58+5nVfr/JPX3/jWq+fzz629WuefvP7mFl+t809ef3Orr9b5J7//zS2/Wuef/P43vv7qOT/E9189nX9J7r8qyf1XJb7/6un5W+L7rybzz11/S3L/VUnuvyrJ/Vcluf+qJPdfleT+q5Lcf1Xi+6+e80N8/9Vk/uHr72T+uZ8/l/j+q8n5m7z+JvdfleT+q5Lcf1WS+69Kcv9VSe6/Ksn9VyW5/6rE918954f4/qvJ/HM/fy7J/Vclvv/q+fkb3381mX/y+pvcf1WS+69Kcv9VSe6/Ksn9VyW5/6ok91+V+P6r5/wQ3381mX/y58/J/Vclvv9qcv4mr7/J/Vcluf+qJPdfleT+q5Lcf1WS+69Kcv9VSe6/KvH9V8/5Ib7/ajL/5M+fk/uvSnz/1eT8TV5/k/uvSnL/VUnuvyrJ/Vcluf+qJPdfleT+q5Lcf1Xi+6+e80N8/9Xz+Sf3X5Xk/qsS33/1/PyN77+azD95/U3uvyrJ/Vcluf+qJPdfleT+q5Lcf1WS+69KfP/Vc36I77+azD98/Z3MP/nz5/j+q8n5m7z+JvdfleT+q5Lcf1WS+69Kcv9VSe6/Ksn9VyW5/6rE918954f4/qvJ/JM/f07uv6rx/VdPz98a3381mX/u+luT+6/qkrv+1uT+q5rcf1WT+69qcv9VTe6/qvH9V8/5Ib7/ajL/3M+fa3L/VY3vv5qcv8nrb3L/VU3uv6rJ/Vc1uf+qJvdf1eT+q5rcf1WT+69qfP/Vc36I77+azD/38+ea3H9V4/uvJudv8vqb3H9Vk/uvanL/VU3uv6rJ/Vc1uf+qJvdf1eT+qxrff/WcH+L7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0bznk7QkltKjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWOpr3fJIWxVJH855P0qJY6mje80laFEsdzXs+SYtiqaN5zydpUSx1NO/5JC2KpY7mPZ+kRbHU0bznk7Qoljqa93ySFsVSR/OeT9KiWOpo3vNJWhRLobznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p43lPe8obznDeU9byjveVsUlZbEUg3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKed5T3vKO85x3lPe8o73lfFJWWxFId5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU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cnl1H6VdX2y/0kav3/umjV7r900bnQv2TRudIfZNG5039k0bnU32TRudY3ZNu4snzapeXm06JmnLWD7eu8mnV9vdV49yJYax0sPfl7ag0lZUWkGlVVTahkrbUWkNldZRaQcpraFYylAsZSiWMhRL7eLjy5MWxVKGYilDsZShWMpQLOUolnIUSzmKpRzFUrt4FPOkRbGUo1jKUSzlKJZyFEsNFEsNFEsNFEsNFEvt4r/MkxbFUgPFUgPFUgPFUoPEUnUhsVRdSCxVFxJL1YXEUnVRVFoSS9WFxFJ1IbFUXUgsVRcUSxUUSxUUSxUUSxUUS+3im82TFsVSBcVSBcVSBcVSBcVSFcVSFcVSFcVSFcVSu3iC86RFsVRFsVRFsVRFsVRFsZSgWEpQLCUolhIUS+3id86TFsVSgmIpQbGUoFhKUCylKJZSFEspiqUUxVK7eLnzpEWxlKJYSlEspSiWUhRLNRRLNRRLNRRLNRRL7eI9z5MWxVINxVINxVINxVINxVIo73lFec8rynteUd7zivKeV5T3vKK85xXlPa8o73lFec8rynteUd7zivKeV5T3vKK85xXlPa8o73lFec8rynteUd7zivKeV5T3vKK85xXlPa8o73lFec8rynteUd7zivKeV5T3vKK85xXlPa8o73lFec8rynteUd7zivKeV5T3vKK85xXlPReU91xQ3nNBec8F5T2XRVFpSSwlKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeK8p4rynuuKO+5orznuigqLYmlFOU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPe8obznDeU9byjveUN5z9uiqLQklmoo73lDec8bynveUN7zhvKeN5T3vKG8520f77nJNe1ok7TNlsvaNCsfa7NG/zUljTelFm9KPd6ULN6UPN6URrgp7aOe3ndKe9QcX+zyapc6vQq3T+/9OUDfFKBmDyDZA+h3B6iL9l+vrssokwDF12lf39ykPy/kdQ12ffe/Wp/15T8DN1rgTgtstMBOCzxggXdRNacKXGiBKy2w0AIrLTCNtIRGWkIjLTkWaa23hHK9OxS5jXsszprF1WNR1jTusRhrGvdYhDWNeyy+msZVVtxjsdU07rHIahr3WFw1jRudqoZIvU5l/Tb4NkF0UPri1+Ferl+He/341uDX1+EtOiftmzY6Ju2bNjol7Zs2OiTtm1YPlrbLNa3f/GinRUekfdNGJ6R900YHpH3ThuejXdMejaWepu1HY6nnaY/GUs/THo2lnqc9Gks9T6uotCiW6iiW6iiW6iiW6iiWMhRLGYqlDMVShmKpXQTNedKiWMpQLGUoljIUSxmKpRzFUo5iKUexlKNYahdBc560KJZyFEs5iqUcxVKOYqmBYqmBYqmBYqmBYqldBM150qJYaqBYaqBYaqBYapBYqi8kluoLiaX6QmKpvpBYqi+KSktiqb6QWKovJJbqC4ml+oJiqYJiqYJiqYJiqYJiqV3cz3nSoliqoFiqoFiqoFiqoFiqoliqoliqoliqolgqvP9837QolgpvPt83LYqlwjvP902LYqnwtvN906JYKrznfN+0KJYKbzjfNy2KpcK7zfdNi2Kp8FbzfdOiWCq803zftCiWCm803zctiqXC+8z3TYtiqfA2833Tolgqvst817Qoljqc9/x5WhRLHc57/jwtiqVQ3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7zn/Wje87Fc//rgKLdpD8ZSk7QHY6lJ2oOx1CTtwVhqkvZgLPU87dG855O0B2OpSdqDsdQk7cFYapJWUWlRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWOpr3fJIWxVJH855P0qJY6mje80laFEsdzXs+SUtiKTua93ySlsRSdjTv+SQtiaVsUVRaEkvZ0bznk7QklrKjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWOpr3fJIWxVJH855P0qJY6mje80laFEsdzXs+SYtiqaN5zydpUSx1NO/5JC2KpY7mPZ+kRbHU0bznk7Qoljqa93ySFsVSR/OeT9KiWOpo3vNJWhRLHc17PkmLYqmjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLIXynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe+4o77mjvOeO8p47ynvui6LSkljKUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8H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jmKpN2ir35kWxVIdxVIdxVIdxVIdxVKGYilDsZShWMpQLPUGe/Y706JYylAsZSiWMhRLGYqlHMVSjmIpR7GUo1gqvP9837QolgpvPt83LYqlwjvP902LYqnwtvN906JYKrznfN+0KJYKbzjfNy2KpcK7zfdNi2Kp8FbzfdOSWKqHd5rvm5bEUj280XzftCSW6oui0pJYqoe3me+blsRSPb7LfNe0KJY6nPf8eVoUSx3Oe/48LYqlUN7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85/1o3vOxXP/64Ci3aQ/GUpO0B2OpSdqDsdQk7cFYapL2YCz1PO3RvOeTtAdjqUnag7HUJO3BWGqSVlFpUSx1NO/5JC2KpY7mPZ+kRbHU0bznk7Qoljqa93ySFsVSR/OeT9KiWOpo3vNJWhRLHc17PkmLYqmjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWOpr3fJIWxVJH855P0qJY6mje80laFEsdzXs+SYtiqaN5zydpUSx1NO/5JC2KpY7mPZ+kRbHU0bznk7QklrKjec8naUksZUfznk/SkljKFkWlJbGUHc17PklLYik7mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWOpr3fJIWxVJH855P0qJY6mje80laFEsdzXs+SYtiqaN5zydpUSyF8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p77ijvuaO8547ynjvKe+6LotKSWMpR3nNHec8d5T13lPfcUd5zR3nP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",
|
|
5187
|
+
"bytecode": "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",
|
|
5188
|
+
"debug_symbols": "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Psjirg+yuOuDLO76IIu7Psjirg+yuOuDLO76IIu7Psjirg+yuOuDLO76IIu7Psjirg+yuOuDLO76IIu7Psjirg+yuOuDLO76IIu7Psjirg+yuOuDLO76IIu7Psjirg+yuOuDLO76IIu7Psjirg+yuOuDLO76IIu7Psjirg+yuOuDLO76IIu7Psjirg+yuOuDLO76IIu7Psjirg+yuOuDLO76IIu7Psjirg+yuOuDLO76IIu7Psjirg+yuOuDLO76IIu7Psjirg+yuOuDLO76IKu7Psjqrg+yuuuDrO76IOvibc2u7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K664Os7vogq7s+yOquD7K564Ns7vogm7s+yOauD7It3tbs5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCbuz7I5q4Psrnrg2zu+iCb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eamjcc8HalFe6mjc84FalJc6Gvd8oBblpY7GPR+oRXmpo3HPB2pRXupo3POBWpSXOhr3fKAW5aWOxj0fqEV5qaNxzwdqUV7qaNzzgVqUlzoa93ygFuWljsY9H6hFeSkU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO65objnhuKeG4p7bijuuS2KUkvyUobinhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p73lHc847inncU97yjuOd9UZRakpfqKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847invfXc89zTssl/VzqQO2aiclHKr1/VvtdQQ6vQJwrqDkv11RySYMZZ+k64yz3mxmnKLUFpbai1DaUWkOp7SS1r+eT76y2ylWt3Xie6t3zbKvWuz/aVu3RvNRztYpSezQv9Vzt0bzUc7VH81LP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lzoa93ygFuWljsY9H6hFeamjcc8HalFe6mjc84FalJc6Gvd8oBblpY7GPR+oJXkpPRr3fKCW5KX0aNzzgVqSl9JFUWpJXkqPxj0fqCV5KT0a93ygFuWljsY9H6hFeamjcc8HalFe6mjc84FalJc6Gvd8oBblpY7GPR+oRXmpo3HPB2pRXupo3POBWpSXOhr3fKAW5aWOxj0fqEV5qaNxzwdqUV7qaNzzgVqUlzoa93ygFuWljsY9H6hFeamjcc8HalFe6mjc84FalJc6Gvd8oBblpY7GPR+oRXmpo3HPB2pRXupo3POBWpSXOhr3fKAW5aWOxj0fqEV5qaNxzwdqUV4KxT1XFPdcUdxzRXHPFcU9VxT3XFHcc0VxzxXFPVcU91xR3HNFcc8VxT1XFPdcUdxzRXHPFcU9VxT3XFHcc0VxzxXFPVcU91xR3HNFcc8VxT1XFPdcUdxzRXHPFcU9VxT3XFHcc0VxzxXFPVcU91xR3HNFcc8VxT1XFPdcUdxzRXHPFcU9VxT3XFHcc0VxzxXFPVcU97yguOcFxT0vKO55QXHPy6IotSQvVVDc84LinhcU97yguOcFxT0vKO55QXHPC4p7XlDc84LinhcU97yguOcFxT0vKO55QXHPC4p7XlDc84LinhcU97yguOcFxT0vKO55QXHPC4p7XlDc84LinhcU97yguOcFxT0vKO55QXHPC4p7XlDc84LinhcU97yguOcFxT0vKO55QXHPC4p7XlDc84LinhcU97yguOcFxT0vKO55QXHPC4p7XlDc84LinhcU97yguOcFxT0vKO55QXHPC4p7XlDc84LinhcU97yguOcFxT0vKO55QXHPC4p7XlDc84LinhcU97yguOcFxT0vKO55QXHPC4p7XlDc84LinhcU97yguOcFxT0vKO55QXHPC4p7XlDc84LinhcU97yguOcFxT0vKO55QXHPC4p7XlDc84LinhcU97yguOcFxT0vKO55RXHPK4p7XlHc84rintdFUWpJXqqiuOcVxT2vKO55RXHPK4p7XlHc84rinlcU97yiuOcVxT2vKO55RXHPK4p7XlHc84rinlcU97yiuOcVxT2vKO55RXHPK4p7XlHc84rinlcU97yiuOcVxT2vKO55RXHPK4p7XlHc84rinlcU97yiuOcVxT2vKO55RXHPK4p7XlHc84rinlcU97yiuOcVxT2vKO55RXHPK4p7XlHc84rinlcU97yiuOcVxT2vKO55RXHPK4p7XlHc84rinlcU97yiuOcVxT2vKO55RXHPK4p7XlHc84rinlcU97yiuOcVxT2vKO55RXHPK4p7XlHc84rinlcU97yiuOcVxT2vKO55RXHPK4p7XlHc84rinlcU97yiuOcVxT2vKO55RXHPK4p7XlHc84rinlcU97yiuOcVxT2vKO55RXHPK4p7XlHc84binjcU97yhuOcNxT1vi6LUkrxUQ3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOeG4p4bintuKO65objntihKLclLGYp7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuub2Bey56TV+6DtSumZh8pPLt/h9qvyso4RVU5wpqzss1lVzSYMZZus649UThZsY1lFpDqe0ktW/gk79TbUKpzSi1cjC1Va5q7cbzvIFP/k613v3RtmqP5qWeqz2al3qu9mhe6rnao3mpp2rr0bzUc7VH81LP1R7NSz1Xi/JSb+CTv1MtyktVlJeqKC9VUV6qorxUQ3mphvJSDeWlGspLvYFP/k61KC/VUF6qobxUQ3mphvJShvJShvJShvJShvJSb+CTv1MtyksZyksZyksZyksZykt1lJfqKC/VUV6qo7zUG/jk71SL8lId5aU6ykt1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5aUSyksllJdKKC+VUF4qo7xURnmpjPJSGeWlXo80f6talJfyDj/fWC3KS3nHnm+sFuWlvAPPN1aL8lLeUecbq0V5Ke+Q843VoryUd7z5xmpRXso72HxjtSgv5R1qvrFalJfyjjTfWC3KS3kHmm+sFuWlvOPMN1aL8lLeYeYbq0V5qcNxz5+rRXmpw3HPn6tFeanDcc+fq0V5KRT3vKK45xXFPa8o7nlFcc8rinteUdzziuKeVxT3vKK45xXFPa8o7nlFcc8rinteUdzziuKeVxT3vKK45xXFPa9H45735frXB3u6VXswLzVQezAvNVB7MC81UHswL/Vc7dG45wO1B/NSA7UH81IDtQfzUgO1ilKL8lJH454P1KK81NG45wO1KC91NO75QC3KSx2Nez5Qi/JSR+OeD9SivNTRuOcDtSgvdTTu+UAtyUu1o3HPB2pJXqodjXs+UEvyUm1RlFqSl2pH454P1JK8VDsa93ygFuWljsY9H6hFeamjcc8HalFe6mjc84FalJc6Gvd8oBblpY7GPR+oRXmpo3HPB2pRXupo3POBWpSXOhr3fKAW5aWOxj0fqEV5qaNxzwdqUV7qaNzzgVqUlzoa93ygFuWljsY9H6hFeamjcc8HalFe6mjc84FalJc6Gvd8oBblpY7GPR+oRXmpo3HPB2pRXupo3POBWpSXOhr3fKAW5aWOxj0fqEV5qaNxzwdqUV7qaNzzgVqUlzoa93ygFuWljsY9H6hFeamjcc8HalFe6mjc84FalJc6Gvd8oBblpY7GPR+oRXmpo3HPB2pRXupo3POBWpSXOhr3fKAW5aWOxj0fqEV5KRT3vKG45w3FPW8o7nlDcc8binveUNzzhuKeNxT3vKG45w3FPW8o7nlDcc8binveUNzzhuKeNxT3vKG45w3FPW8o7nlDcc8binveUNzzhuKeG4p7bijuuaG454bintuiKLUkL2Uo7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG45x3FPe8o7nlHcc87inveF0WpJXmpjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nkncc91IXHPV7UgL7WqBXmpVS3IS61qFaUW5KVWtSAvtaoFealVLchLrWpRXorEPV/VorwUiXu+qkV5KRL3fFWL8lIk7vmqFuWlSNzzVS3KS5G456talJcicc9XtSgvReKer2pRXorEPV/VorwUiXu+qkV5KRL3fFWL8lIk7vmqFuWlSNzzVS3KS5G456talJcicc9XtSgvReKer2pRXorEPV/VorwUiXu+qkV5KRL3fFWL8lIk7vmqFuWlSNzzVS3KS5G456talJcicc9XtSgvReKer2pRXorEPV/VorwUiXu+qkV5KRL3fFWL8lIk7vmqFuWlSNzzVS3KS5G456talJcicc9XtSgvReKer2pRXorEPV/VorwUiXu+qkV5KRL3fFWL8lIk7vmqFuWlSNzzVS3KS5G456talJcicc9XtSgvReKer2pRXorEPV/VorwUiXu+qkV5KRL3fFWL8lIk7vmqFuWlSNzzVS3JSyUU9zyhuOcJxT1PKO55WhSlluSlEop7nlDc84TinicU9zyhuOcJxT1PKO55QnHPE4p7nlDc84TinicU9zyhuOcJxT1PKO55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G4p7boui1JK8lKG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKeG4p7bijuuaG454binhuKe24o7rmhuOeG4p4bintuKO65objnhuKedxT3vKO45x3FPe8o7nlfFKWW5KU6inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO4553EPS8LiXu+qgV5qVUtyEutakFealWrKLUgL7WqBXmpVS3IS61qQV5qVYvyUiTu+aoW5aVI3PNVLcpLkbjnq1qUlyJxz1e1KC9F4p6valFeisQ9X9WivBSJe76qRXkpEvd8VYvyUiTu+aoW5aVI3PNVLcpLkbjnq1qUlyJxz1e1KC9F4p6valFeisQ9X9WivBSJe76qRXkpEvd8VYvyUiTu+aoW5aVI3PNVLcpLkbjnq1qUlyJxz1e1KC9F4p6valFeisQ9X9WivBSJe76qRXkpEvd8VYvyUiTu+aoW5aVI3PNVLcpLkbjnq1qUlyJxz1e1KC9F4p6valFe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xT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDc84binjcU97yhuOcNxT1vKO55Q3HPG4p73lDcc0Nxzw3FPTcU99xQ3HNbFKWW5KUMxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU97yjuOcdxT3vKO55R3HP+6IotSQv1VHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vKO55R3HPO4p73lHc847inncU97yjuOcdxT3vJO55XUjc81UtyEutakFealUL8lKrWkWpBXmpVS3IS61qQV5qVQvyUqtalJcicc9XtSgvReKer2pRXorEPV/V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",
|
|
5198
5189
|
"brillig_names": [
|
|
5199
5190
|
"get_note_internal",
|
|
5200
5191
|
"decompose_hint",
|
|
@@ -5209,8 +5200,8 @@
|
|
|
5209
5200
|
"directive_integer_quotient",
|
|
5210
5201
|
"directive_to_radix"
|
|
5211
5202
|
],
|
|
5212
|
-
"verification_key": "
|
|
5213
|
-
"artifact_hash": "
|
|
5203
|
+
"verification_key": "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",
|
|
5204
|
+
"artifact_hash": "ff6671ddb572df3d961df43ed4c3adf75a7d3763-2b5a769afaac625933122fea9f690682-client-ivc-true"
|
|
5214
5205
|
}
|
|
5215
5206
|
],
|
|
5216
5207
|
"outputs": {
|
|
@@ -5529,6 +5520,33 @@
|
|
|
5529
5520
|
"kind": "struct",
|
|
5530
5521
|
"path": "EcdsaRAccount::entrypoint_abi"
|
|
5531
5522
|
},
|
|
5523
|
+
{
|
|
5524
|
+
"fields": [
|
|
5525
|
+
{
|
|
5526
|
+
"name": "parameters",
|
|
5527
|
+
"type": {
|
|
5528
|
+
"fields": [
|
|
5529
|
+
{
|
|
5530
|
+
"name": "inner_hash",
|
|
5531
|
+
"type": {
|
|
5532
|
+
"kind": "field"
|
|
5533
|
+
}
|
|
5534
|
+
}
|
|
5535
|
+
],
|
|
5536
|
+
"kind": "struct",
|
|
5537
|
+
"path": "EcdsaRAccount::verify_private_authwit_parameters"
|
|
5538
|
+
}
|
|
5539
|
+
},
|
|
5540
|
+
{
|
|
5541
|
+
"name": "return_type",
|
|
5542
|
+
"type": {
|
|
5543
|
+
"kind": "field"
|
|
5544
|
+
}
|
|
5545
|
+
}
|
|
5546
|
+
],
|
|
5547
|
+
"kind": "struct",
|
|
5548
|
+
"path": "EcdsaRAccount::verify_private_authwit_abi"
|
|
5549
|
+
},
|
|
5532
5550
|
{
|
|
5533
5551
|
"fields": [
|
|
5534
5552
|
{
|
|
@@ -5567,33 +5585,6 @@
|
|
|
5567
5585
|
],
|
|
5568
5586
|
"kind": "struct",
|
|
5569
5587
|
"path": "EcdsaRAccount::constructor_abi"
|
|
5570
|
-
},
|
|
5571
|
-
{
|
|
5572
|
-
"fields": [
|
|
5573
|
-
{
|
|
5574
|
-
"name": "parameters",
|
|
5575
|
-
"type": {
|
|
5576
|
-
"fields": [
|
|
5577
|
-
{
|
|
5578
|
-
"name": "inner_hash",
|
|
5579
|
-
"type": {
|
|
5580
|
-
"kind": "field"
|
|
5581
|
-
}
|
|
5582
|
-
}
|
|
5583
|
-
],
|
|
5584
|
-
"kind": "struct",
|
|
5585
|
-
"path": "EcdsaRAccount::verify_private_authwit_parameters"
|
|
5586
|
-
}
|
|
5587
|
-
},
|
|
5588
|
-
{
|
|
5589
|
-
"name": "return_type",
|
|
5590
|
-
"type": {
|
|
5591
|
-
"kind": "field"
|
|
5592
|
-
}
|
|
5593
|
-
}
|
|
5594
|
-
],
|
|
5595
|
-
"kind": "struct",
|
|
5596
|
-
"path": "EcdsaRAccount::verify_private_authwit_abi"
|
|
5597
5588
|
}
|
|
5598
5589
|
]
|
|
5599
5590
|
}
|
|
@@ -5635,185 +5626,189 @@
|
|
|
5635
5626
|
"path": "std/hash/sha256.nr",
|
|
5636
5627
|
"source": "use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// A message block is up to 64 bytes taken from the input.\nglobal BLOCK_SIZE: u32 = 64;\n\n// The first index in the block where the 8 byte message size will be written.\nglobal MSG_SIZE_PTR: u32 = 56;\n\n// Size of the message block when packed as 4-byte integer array.\nglobal INT_BLOCK_SIZE: u32 = 16;\n\n// A `u32` integer consists of 4 bytes.\nglobal INT_SIZE: u32 = 4;\n\n// Index of the integer in the `INT_BLOCK` where the length is written.\nglobal INT_SIZE_PTR: u32 = MSG_SIZE_PTR / INT_SIZE;\n\n// Magic numbers for bit shifting.\n// Works with actual bit shifting as well as the compiler turns them into * and /\n// but circuit execution appears to be 10% faster this way.\nglobal TWO_POW_8: u32 = 256;\nglobal TWO_POW_16: u32 = TWO_POW_8 * 256;\nglobal TWO_POW_24: u32 = TWO_POW_16 * 256;\nglobal TWO_POW_32: u64 = TWO_POW_24 as u64 * 256;\n\n// Index of a byte in a 64 byte block; ie. 0..=63\ntype BLOCK_BYTE_PTR = u32;\n\n// The foreign function to compress blocks works on 16 pieces of 4-byte integers, instead of 64 bytes.\ntype INT_BLOCK = [u32; INT_BLOCK_SIZE];\n\n// A message block is a slice of the original message of a fixed size,\n// potentially padded with zeros, with neighbouring 4 bytes packed into integers.\ntype MSG_BLOCK = INT_BLOCK;\n\n// The hash is 32 bytes.\ntype HASH = [u8; 32];\n\n// The state accumulates the blocks.\n// Its overall size is the same as the `HASH`.\ntype STATE = [u32; 8];\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: INT_BLOCK, _state: STATE) -> STATE {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = [\n 1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635,\n 1541459225,\n ];\n // Pointer into msg_block on a 64 byte scale\n let mut msg_byte_ptr = 0;\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_block, h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n verify_msg_block_padding(msg_block, msg_byte_ptr);\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n msg_block = update_block_item(\n msg_block,\n msg_byte_ptr,\n |msg_item| set_item_byte_then_zeros(msg_item, msg_byte_ptr, 1 << 7),\n );\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n if !is_unconstrained() {\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n }\n\n hash_final_block(msg_block, h)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start`.\n// Returns the block and the length that has been copied rather than padded with zeros.\nunconstrained fn build_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> (MSG_BLOCK, BLOCK_BYTE_PTR) {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if msg_start + BLOCK_SIZE > message_size {\n if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else {\n message_size - msg_start\n }\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let mut int_input = block_input / INT_SIZE;\n if block_input % INT_SIZE != 0 {\n int_input = int_input + 1;\n };\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = lshift8(msg_item, 1) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data. Returns the index of the first unset item.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) -> BLOCK_BYTE_PTR {\n let mut msg_byte_ptr = 0;\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = lshift8(msg_item, 1);\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\n// Verify the block we are compressing was appropriately padded with zeros by `build_msg_block`.\n// This is only relevant for the last, potentially partially filled block.\nfn verify_msg_block_padding(msg_block: MSG_BLOCK, msg_byte_ptr: BLOCK_BYTE_PTR) {\n // Check all the way to the end of the block.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_BLOCK_SIZE);\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, zero);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], zero);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = lshift8(msg_item, 1);\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Apply a function on the block item which the pointer indicates.\nfn update_block_item<Env>(\n mut msg_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n f: fn[Env](u32) -> u32,\n) -> MSG_BLOCK {\n let i = msg_byte_ptr / INT_SIZE;\n msg_block[i] = f(msg_block[i]);\n msg_block\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\nfn set_item_zeros(item: u32, zeros: u8) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros as u8);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts as u8);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts as u8)\n}\n\n// Construct a field out of 4 bytes.\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = lshift8(item, 1) + b1 as u32;\n item = lshift8(item, 1) + b2 as u32;\n item = lshift8(item, 1) + b3 as u32;\n item\n}\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\nfn lshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n if item == 0 {\n 0\n } else {\n // Brillig wouldn't shift 0<<4 without overflow.\n item << (8 * shifts)\n }\n } else {\n // We can do a for loop up to INT_SIZE or an if-else.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item * TWO_POW_8\n } else if shifts == 2 {\n item * TWO_POW_16\n } else if shifts == 3 {\n item * TWO_POW_24\n } else {\n // Doesn't make sense, but it's most likely called on 0 anyway.\n 0\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\nfn rshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n item >> (8 * shifts)\n } else {\n // Division wouldn't work on `Field`.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item / TWO_POW_8\n } else if shifts == 2 {\n item / TWO_POW_16\n } else if shifts == 3 {\n item / TWO_POW_24\n } else {\n 0\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros as u8);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..=1 {\n let shift = i * 4;\n msg_block[INT_SIZE_PTR + i] = make_item(\n len_bytes[shift],\n len_bytes[shift + 1],\n len_bytes[shift + 2],\n len_bytes[shift + 3],\n );\n }\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let mut reconstructed_len: u64 = 0;\n for i in INT_SIZE_PTR..INT_BLOCK_SIZE {\n reconstructed_len = reconstructed_len * TWO_POW_32;\n reconstructed_len = reconstructed_len + msg_block[i] as u64;\n }\n let len = 8 * message_size as u64;\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod tests {\n use super::{\n attach_len_to_msg_block, build_msg_block, byte_into_item, get_item_byte, make_item,\n set_item_byte_then_zeros, set_item_zeros,\n };\n use super::INT_BLOCK;\n use super::sha256_var;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d,\n 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0,\n 0x8f, 0xfe, 0x73, 0x2b,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n let result = [\n 91, 122, 146, 93, 52, 109, 133, 148, 171, 61, 156, 70, 189, 238, 153, 7, 222, 184, 94,\n 24, 65, 114, 192, 244, 207, 199, 87, 232, 192, 224, 171, 207,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_multiple_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99,\n ];\n let result = [\n 116, 90, 151, 31, 78, 22, 138, 180, 211, 189, 69, 76, 227, 200, 155, 29, 59, 123, 154,\n 60, 47, 153, 203, 129, 157, 251, 48, 2, 79, 11, 65, 47,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_under_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59,\n ];\n let result = [\n 143, 140, 76, 173, 222, 123, 102, 68, 70, 149, 207, 43, 39, 61, 34, 79, 216, 252, 213,\n 165, 74, 16, 110, 74, 29, 64, 138, 167, 30, 1, 9, 119,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_not_block_multiple() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97,\n 103, 101, 45, 73, 100, 58, 68, 97, 116, 101, 58, 116, 111, 59, 32, 98, 61,\n ];\n let result = [\n 112, 144, 73, 182, 208, 98, 9, 238, 54, 229, 61, 145, 222, 17, 72, 62, 148, 222, 186,\n 55, 192, 82, 220, 35, 66, 47, 193, 200, 22, 38, 26, 186,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_with_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n let message_size = 297;\n assert_eq(sha256_var(input, message_size), result);\n }\n\n #[test]\n fn msg_big_no_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn same_msg_len_variable_padding() {\n let input = [\n 29, 81, 165, 84, 243, 114, 101, 37, 242, 146, 127, 99, 69, 145, 39, 72, 213, 39, 253,\n 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9,\n 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214,\n 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107,\n 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198,\n 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126,\n 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36,\n 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59,\n 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97,\n 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180,\n 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216,\n 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70,\n 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246,\n 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193,\n 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74,\n 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210,\n 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210,\n 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69,\n 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22,\n 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175,\n 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53,\n 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200,\n 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86,\n 119, 30, 63, 129, 143, 32, 96,\n ];\n\n // Prepare inputs of different lengths\n let mut input_511 = [0; 511];\n let mut input_512 = [0; 512]; // Next block\n let mut input_575 = [0; 575];\n let mut input_576 = [0; 576]; // Next block\n for i in 0..input.len() {\n input_511[i] = input[i];\n input_512[i] = input[i];\n input_575[i] = input[i];\n input_576[i] = input[i];\n }\n\n // Compute hashes of all inputs (with same message length)\n let fixed_length_hash = super::sha256(input);\n let var_full_length_hash = sha256_var(input, input.len() as u64);\n let var_length_hash_511 = sha256_var(input_511, input.len() as u64);\n let var_length_hash_512 = sha256_var(input_512, input.len() as u64);\n let var_length_hash_575 = sha256_var(input_575, input.len() as u64);\n let var_length_hash_576 = sha256_var(input_576, input.len() as u64);\n\n // All of the above should have produced the same hash\n assert_eq(var_full_length_hash, fixed_length_hash);\n assert_eq(var_length_hash_511, fixed_length_hash);\n assert_eq(var_length_hash_512, fixed_length_hash);\n assert_eq(var_length_hash_575, fixed_length_hash);\n assert_eq(var_length_hash_576, fixed_length_hash);\n }\n\n #[test]\n fn test_get_item_byte() {\n let fld = make_item(10, 20, 30, 40);\n assert_eq(fld, 0x0a141e28);\n assert_eq(get_item_byte(fld, 0), 10);\n assert_eq(get_item_byte(fld, 4), 10);\n assert_eq(get_item_byte(fld, 6), 30);\n }\n\n #[test]\n fn test_byte_into_item() {\n let fld = make_item(0, 20, 0, 0);\n assert_eq(byte_into_item(20, 1), fld);\n assert_eq(byte_into_item(20, 5), fld);\n }\n\n #[test]\n fn test_set_item_zeros() {\n let fld0 = make_item(10, 20, 30, 40);\n let fld1 = make_item(10, 0, 0, 0);\n assert_eq(set_item_zeros(fld0, 3), fld1);\n assert_eq(set_item_zeros(fld0, 4), 0);\n assert_eq(set_item_zeros(0, 4), 0);\n }\n\n #[test]\n fn test_set_item_byte_then_zeros() {\n let fld0 = make_item(10, 20, 30, 40);\n let fld1 = make_item(10, 50, 0, 0);\n assert_eq(set_item_byte_then_zeros(fld0, 1, 50), fld1);\n }\n\n #[test]\n fn test_build_msg_block_start_0() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48,\n ];\n assert_eq(input.len(), 22);\n let (msg_block, msg_byte_ptr) = unsafe { build_msg_block(input, input.len(), 0) };\n assert_eq(msg_byte_ptr, input.len());\n assert_eq(msg_block[0], make_item(input[0], input[1], input[2], input[3]));\n assert_eq(msg_block[1], make_item(input[4], input[5], input[6], input[7]));\n assert_eq(msg_block[5], make_item(input[20], input[21], 0, 0));\n assert_eq(msg_block[6], 0);\n }\n\n #[test]\n fn test_build_msg_block_start_1() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n assert_eq(input.len(), 68);\n let (msg_block, msg_byte_ptr) = unsafe { build_msg_block(input, input.len(), 64) };\n assert_eq(msg_byte_ptr, 4);\n assert_eq(msg_block[0], make_item(input[64], input[65], input[66], input[67]));\n assert_eq(msg_block[1], 0);\n }\n\n #[test]\n fn test_attach_len_to_msg_block() {\n let input: INT_BLOCK = [\n 2152555847, 1397309779, 1936618851, 1262052426, 1936876331, 1985297723, 543702374,\n 1919905082, 1131376244, 1701737517, 1417244773, 978151789, 1697470053, 1920166255,\n 1849316213, 1651139939,\n ];\n let msg_block = unsafe { attach_len_to_msg_block(input, 1, 448) };\n assert_eq(msg_block[0], ((1 << 7) as u32) * 256 * 256 * 256);\n assert_eq(msg_block[1], 0);\n assert_eq(msg_block[15], 3584);\n }\n}\n"
|
|
5637
5628
|
},
|
|
5638
|
-
"
|
|
5629
|
+
"51": {
|
|
5639
5630
|
"path": "std/option.nr",
|
|
5640
5631
|
"source": "use crate::cmp::{Eq, Ord, Ordering};\nuse crate::default::Default;\nuse crate::hash::{Hash, Hasher};\n\npub struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T>\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T>\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T>\nwhere\n T: Ord,\n{\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n"
|
|
5641
5632
|
},
|
|
5642
|
-
"
|
|
5633
|
+
"52": {
|
|
5643
5634
|
"path": "std/panic.nr",
|
|
5644
5635
|
"source": "pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"
|
|
5645
5636
|
},
|
|
5646
|
-
"
|
|
5647
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr",
|
|
5648
|
-
"source": "use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_emission::NoteEmission,\n note_header::NoteHeader,\n note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_nullify_internal, compute_note_hash_for_read_request},\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note,\n) -> NoteEmission<Note>\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, let N: u32>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note,\n)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, let N: u32>(context: &mut PrivateContext, note: Note)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n"
|
|
5649
|
-
},
|
|
5650
|
-
"78": {
|
|
5651
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr",
|
|
5652
|
-
"source": "use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote}},\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage,\n compute_unique_note_hash,\n },\n utils::arr_copy_slice,\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32>(\n note_with_header: Note,\n context: &mut PrivateContext,\n) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32>(note: Note) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32>(\n note: Note,\n note_hash_for_read_request: Field,\n) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash =\n compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32>(note: Note) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub unconstrained fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S],\n) -> [Field; 4]\nwhere\n T: NoteInterface<N> + NullifiableNote,\n{\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"
|
|
5653
|
-
},
|
|
5654
|
-
"82": {
|
|
5655
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr",
|
|
5656
|
-
"source": "/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission<Note> {\n pub note: Note,\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"
|
|
5657
|
-
},
|
|
5658
|
-
"85": {
|
|
5659
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr",
|
|
5660
|
-
"source": "use crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder},\n note_interface::{NoteInterface, NullifiableNote},\n note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request,\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\nuse dep::protocol_types::constants::{\n GET_NOTES_ORACLE_RETURN_LENGTH, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n};\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32>(context: PrivateContext, storage_slot: Field, note: Note)\nwhere\n Note: NoteInterface<N>,\n{\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>,\n) {\n for i in 0..selects.len() {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>,\n) {\n for i in 0..sorts.len() {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (Note, Field)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note = unsafe { get_note_internal(storage_slot) };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n ) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS,\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n ) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> =\n BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32>(storage_slot: Field) -> Note\nwhere\n Note: NoteInterface<N>,\n{\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length,\n )[0]\n .expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteInterface<N>,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\npub unconstrained fn view_notes<Note, let N: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>,\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE>\nwhere\n Note: NoteInterface<N>,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len() {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len() {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n"
|
|
5661
|
-
},
|
|
5662
|
-
"93": {
|
|
5637
|
+
"66": {
|
|
5663
5638
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr",
|
|
5664
|
-
"source": "use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n hash::{ArgsHasher, hash_args_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal,\n },\n header::get_header_at,\n key_validation_request::get_key_validation_request,\n returns::pack_returns,\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext,\n function_selector::FunctionSelector,\n log::Log,\n log_hash::LogHash,\n max_block_number::MaxBlockNumber,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n private_log::PrivateLogData,\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n side_effect::Counted,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_CONTRACT_CLASS_LOGS_PER_CALL, MAX_ENQUEUED_CALLS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL,\n PRIVATE_LOG_SIZE_IN_FIELDS, PUBLIC_DISPATCH_SELECTOR,\n },\n header::Header,\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::Empty,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n pub inputs: PrivateContextInputs,\n pub side_effect_counter: u32,\n\n pub min_revertible_side_effect_counter: u32,\n pub is_fee_payer: bool,\n\n pub args_hash: Field,\n pub return_hash: Field,\n\n pub max_block_number: MaxBlockNumber,\n\n pub note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n pub nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n pub note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n pub nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n pub private_call_requests: BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n pub public_call_requests: BoundedVec<Counted<PublicCallRequest>, MAX_ENQUEUED_CALLS_PER_CALL>,\n pub public_teardown_call_request: PublicCallRequest,\n pub l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n pub historical_header: Header,\n\n pub private_logs: BoundedVec<PrivateLogData, MAX_PRIVATE_LOGS_PER_CALL>,\n pub contract_class_logs_hashes: BoundedVec<LogHash, MAX_CONTRACT_CLASS_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n pub last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n pub fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n pub fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n pub fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: self.next_counter(),\n },\n );\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n pub fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage(),\n nullifier_read_requests: self.nullifier_read_requests.storage(),\n key_validation_requests_and_generators: self\n .key_validation_requests_and_generators\n .storage(),\n note_hashes: self.note_hashes.storage(),\n nullifiers: self.nullifiers.storage(),\n private_call_requests: self.private_call_requests.storage(),\n public_call_requests: self.public_call_requests.storage(),\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage(),\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n private_logs: self.private_logs.storage(),\n contract_class_logs_hashes: self.contract_class_logs_hashes.storage(),\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number =\n MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request =\n self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale\n // Typically we'd validate keys by showing that they are the preimage of `pk_m_hash`, but that'd require\n // the oracle returning the master secret keys, which could cause malicious contracts to leak it or learn\n // about secrets from other contracts. We therefore silo secret keys, and rely on the private kernel to\n // validate that we siloed secret key corresponds to correct siloing of the master secret key that hashes\n // to `pk_m_hash`.\n let request = unsafe { get_key_validation_request(pk_m_hash, key_index) };\n assert(request.pk_m.hash() == pk_m_hash);\n\n self.key_validation_requests_and_generators.push(\n KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index],\n },\n );\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn emit_private_log(&mut self, log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS]) {\n let counter = self.next_counter();\n let private_log = PrivateLogData { log: Log::new(log), note_hash_counter: 0, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn emit_raw_note_log(\n &mut self,\n log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS],\n note_hash_counter: u32,\n ) {\n let counter = self.next_counter();\n let private_log = PrivateLogData { log: Log::new(log), note_hash_counter, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n\n // The oracle simulates the private call and returns the value of the side effects counter after execution of\n // the call (which means that end_side_effect_counter - start_side_effect_counter is the number of side effects\n // that took place), along with the hash of the return values. We validate these by requesting a private kernel\n // iteration in which the return values are constrained to hash to `returns_hash` and the side effects counter\n // to increment from start to end.\n let (end_side_effect_counter, returns_hash) = unsafe {\n call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n )\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context: CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n },\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n self.side_effect_counter = end_side_effect_counter + 1;\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n\n let call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n args_hash,\n };\n\n self.public_call_requests.push(Counted::new(call_request, counter));\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n\n self.public_teardown_call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n args_hash,\n };\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n"
|
|
5665
|
-
},
|
|
5666
|
-
"99": {
|
|
5667
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr",
|
|
5668
|
-
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::GENERATOR_INDEX__CONSTRUCTOR, hash::poseidon2_hash_with_separator,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext},\n oracle::get_contract_instance::{\n get_contract_instance, get_contract_instance_deployer_avm,\n get_contract_instance_initialization_hash_avm,\n },\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let deployer = get_contract_instance_deployer_avm(address).unwrap();\n let initialization_hash = get_contract_instance_initialization_hash_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (deployer.is_zero()) | (deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n"
|
|
5669
|
-
},
|
|
5670
|
-
"110": {
|
|
5671
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr",
|
|
5672
|
-
"source": "use dep::protocol_types::{\n address::AztecAddress, constants::CONTRACT_INSTANCE_LENGTH, contract_class_id::ContractClassId,\n contract_instance::ContractInstance,\n};\n\n// NOTE: this is for use in private only\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(\n _address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// NOTE: this is for use in private only\nunconstrained fn get_contract_instance_internal(\n address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\n// NOTE: this is for use in private only\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance =\n unsafe { ContractInstance::deserialize(get_contract_instance_internal(address)) };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\n// These oracles each return a ContractInstance member\n// plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstanceDeployer)]\nunconstrained fn get_contract_instance_deployer_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n#[oracle(avmOpcodeGetContractInstanceClassId)]\nunconstrained fn get_contract_instance_class_id_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n#[oracle(avmOpcodeGetContractInstanceInitializationHash)]\nunconstrained fn get_contract_instance_initialization_hash_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n\npub unconstrained fn get_contract_instance_deployer_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_deployer_oracle_avm(address)\n}\npub unconstrained fn get_contract_instance_class_id_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_class_id_oracle_avm(address)\n}\npub unconstrained fn get_contract_instance_initialization_hash_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_initialization_hash_oracle_avm(address)\n}\n\npub fn get_contract_instance_deployer_avm(address: AztecAddress) -> Option<AztecAddress> {\n let (member, exists) = get_contract_instance_deployer_internal_avm(address);\n if exists {\n Option::some(AztecAddress::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_class_id_avm(address: AztecAddress) -> Option<ContractClassId> {\n let (member, exists) = get_contract_instance_class_id_internal_avm(address);\n if exists {\n Option::some(ContractClassId::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_initialization_hash_avm(address: AztecAddress) -> Option<Field> {\n let (member, exists) = get_contract_instance_initialization_hash_internal_avm(address);\n if exists {\n Option::some(member)\n } else {\n Option::none()\n }\n}\n"
|
|
5673
|
-
},
|
|
5674
|
-
"111": {
|
|
5675
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr",
|
|
5676
|
-
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"
|
|
5639
|
+
"source": "use dep::protocol_types::debug_log::debug_log_format;\n\nuse crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n hash::{ArgsHasher, hash_args_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments,\n block_header::get_block_header_at,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal,\n },\n key_validation_request::get_key_validation_request,\n returns::pack_returns,\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext,\n function_selector::FunctionSelector,\n log::Log,\n log_hash::LogHash,\n max_block_number::MaxBlockNumber,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n private_log::PrivateLogData,\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n side_effect::Counted,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n block_header::BlockHeader,\n constants::{\n MAX_CONTRACT_CLASS_LOGS_PER_CALL, MAX_ENQUEUED_CALLS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL,\n PRIVATE_LOG_SIZE_IN_FIELDS, PUBLIC_DISPATCH_SELECTOR,\n },\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::Empty,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n pub inputs: PrivateContextInputs,\n pub side_effect_counter: u32,\n\n pub min_revertible_side_effect_counter: u32,\n pub is_fee_payer: bool,\n\n pub args_hash: Field,\n pub return_hash: Field,\n\n pub max_block_number: MaxBlockNumber,\n\n pub note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n pub nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n pub note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n pub nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n pub private_call_requests: BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n pub public_call_requests: BoundedVec<Counted<PublicCallRequest>, MAX_ENQUEUED_CALLS_PER_CALL>,\n pub public_teardown_call_request: PublicCallRequest,\n pub l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n pub historical_header: BlockHeader,\n\n pub private_logs: BoundedVec<PrivateLogData, MAX_PRIVATE_LOGS_PER_CALL>,\n pub contract_class_logs_hashes: BoundedVec<LogHash, MAX_CONTRACT_CLASS_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n pub last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n pub fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n\n // WARNING(https://github.com/AztecProtocol/aztec-packages/issues/10558): if you delete this debug_log_format line, some tests fail.\n debug_log_format(\n \"Context.note_hashes, after pushing new note hash: {0}\",\n self.note_hashes.storage().map(|nh: NoteHash| nh.value),\n );\n }\n\n pub fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n pub fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: self.next_counter(),\n },\n );\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n pub fn get_block_header(self) -> BlockHeader {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_block_header_at(self, block_number: u32) -> BlockHeader {\n get_block_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage(),\n nullifier_read_requests: self.nullifier_read_requests.storage(),\n key_validation_requests_and_generators: self\n .key_validation_requests_and_generators\n .storage(),\n note_hashes: self.note_hashes.storage(),\n nullifiers: self.nullifiers.storage(),\n private_call_requests: self.private_call_requests.storage(),\n public_call_requests: self.public_call_requests.storage(),\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage(),\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n private_logs: self.private_logs.storage(),\n contract_class_logs_hashes: self.contract_class_logs_hashes.storage(),\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number =\n MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request =\n self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale\n // Typically we'd validate keys by showing that they are the preimage of `pk_m_hash`, but that'd require\n // the oracle returning the master secret keys, which could cause malicious contracts to leak it or learn\n // about secrets from other contracts. We therefore silo secret keys, and rely on the private kernel to\n // validate that we siloed secret key corresponds to correct siloing of the master secret key that hashes\n // to `pk_m_hash`.\n let request = unsafe { get_key_validation_request(pk_m_hash, key_index) };\n assert(request.pk_m.hash() == pk_m_hash);\n\n self.key_validation_requests_and_generators.push(\n KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index],\n },\n );\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn emit_private_log(&mut self, log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS]) {\n let counter = self.next_counter();\n let private_log = PrivateLogData { log: Log::new(log), note_hash_counter: 0, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn emit_raw_note_log(\n &mut self,\n log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS],\n note_hash_counter: u32,\n ) {\n let counter = self.next_counter();\n let private_log = PrivateLogData { log: Log::new(log), note_hash_counter, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n\n // The oracle simulates the private call and returns the value of the side effects counter after execution of\n // the call (which means that end_side_effect_counter - start_side_effect_counter is the number of side effects\n // that took place), along with the hash of the return values. We validate these by requesting a private kernel\n // iteration in which the return values are constrained to hash to `returns_hash` and the side effects counter\n // to increment from start to end.\n let (end_side_effect_counter, returns_hash) = unsafe {\n call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n )\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context: CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n },\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n self.side_effect_counter = end_side_effect_counter + 1;\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n\n let call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n args_hash,\n };\n\n self.public_call_requests.push(Counted::new(call_request, counter));\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n\n self.public_teardown_call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n args_hash,\n };\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: BlockHeader::empty(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n"
|
|
5677
5640
|
},
|
|
5678
|
-
"
|
|
5679
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5680
|
-
"source": "use
|
|
5641
|
+
"76": {
|
|
5642
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/generators.nr",
|
|
5643
|
+
"source": "use dep::protocol_types::point::Point;\n\n// A set of generators generated with `derive_generators(...)` function from noir::std\npub global Ga1: Point = Point {\n x: 0x30426e64aee30e998c13c8ceecda3a77807dbead52bc2f3bf0eae851b4b710c1,\n y: 0x113156a068f603023240c96b4da5474667db3b8711c521c748212a15bc034ea6,\n is_infinite: false,\n};\npub global Ga2: Point = Point {\n x: 0x2825c79cc6a5cbbeef7d6a8f1b6a12b312aa338440aefeb4396148c89147c049,\n y: 0x129bfd1da54b7062d6b544e7e36b90736350f6fba01228c41c72099509f5701e,\n is_infinite: false,\n};\npub global Ga3: Point = Point {\n x: 0x0edb1e293c3ce91bfc04e3ceaa50d2c541fa9d091c72eb403efb1cfa2cb3357f,\n y: 0x1341d675fa030ece3113ad53ca34fd13b19b6e9762046734f414824c4d6ade35,\n is_infinite: false,\n};\npub global Ga4: Point = Point {\n x: 0x0e0dad2250583f2a9f0acb04ededf1701b85b0393cae753fe7e14b88af81cb52,\n y: 0x0973b02c5caac339ee4ad5dab51329920f7bf1b6a07e1dabe5df67040b300962,\n is_infinite: false,\n};\npub global Ga5: Point = Point {\n x: 0x2f3342e900e8c488a28931aae68970738fdc68afde2910de7b320c00c902087d,\n y: 0x1bf958dc63cb09d59230603a0269ae86d6f92494da244910351f1132df20fc08,\n is_infinite: false,\n};\n// If you change this update `G_SLOT` in `yarn-project/simulator/src/client/test_utils.ts` as well\npub global G_slot: Point = Point {\n x: 0x041223147b680850dc82e8a55a952d4df20256fe0593d949a9541ca00f0abf15,\n y: 0x0a8c72e60d0e60f5d804549d48f3044d06140b98ed717a9b532af630c1530791,\n is_infinite: false,\n};\n\nmod test {\n use crate::generators::{G_slot, Ga1, Ga2, Ga3, Ga4, Ga5};\n use dep::protocol_types::point::Point;\n use std::hash::derive_generators;\n\n #[test]\n unconstrained fn test_generators() {\n let generators: [Point; 6] = derive_generators(\"aztec_nr_generators\".as_bytes(), 0);\n assert_eq(generators[0], Ga1);\n assert_eq(generators[1], Ga2);\n assert_eq(generators[2], Ga3);\n assert_eq(generators[4], Ga4);\n assert_eq(generators[5], Ga5);\n assert_eq(generators[3], G_slot);\n }\n}\n"
|
|
5681
5644
|
},
|
|
5682
|
-
"
|
|
5683
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/
|
|
5684
|
-
"source": "
|
|
5645
|
+
"77": {
|
|
5646
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr",
|
|
5647
|
+
"source": "use dep::protocol_types::{\n address::{AztecAddress, PartialAddress},\n point::Point,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(\n address: AztecAddress,\n) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM {\n inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool },\n },\n ovpk_m: OvpkM {\n inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool },\n },\n tpk_m: TpkM {\n inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool },\n },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"
|
|
5685
5648
|
},
|
|
5686
|
-
"
|
|
5649
|
+
"79": {
|
|
5687
5650
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/random.nr",
|
|
5688
5651
|
"source": "/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n"
|
|
5689
5652
|
},
|
|
5690
|
-
"
|
|
5653
|
+
"85": {
|
|
5654
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr",
|
|
5655
|
+
"source": "use dep::protocol_types::abis::validation_requests::{\n key_validation_request::KEY_VALIDATION_REQUEST_LENGTH, KeyValidationRequest,\n};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field,\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"
|
|
5656
|
+
},
|
|
5657
|
+
"87": {
|
|
5691
5658
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr",
|
|
5692
5659
|
"source": "use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) -> Field {}\n\npub unconstrained fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) -> Field {}\n\npub unconstrained fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n"
|
|
5693
5660
|
},
|
|
5694
|
-
"
|
|
5695
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/
|
|
5696
|
-
"source": "
|
|
5661
|
+
"88": {
|
|
5662
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr",
|
|
5663
|
+
"source": "/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe { pack_returns_oracle_wrapper(returns) };\n}\n\npub unconstrained fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\npub unconstrained fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n"
|
|
5697
5664
|
},
|
|
5698
|
-
"
|
|
5699
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/
|
|
5700
|
-
"source": "use dep::protocol_types::
|
|
5665
|
+
"91": {
|
|
5666
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr",
|
|
5667
|
+
"source": "use crate::{note::{note_header::NoteHeader, note_interface::NoteInterface}, utils::array};\n\nuse dep::protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::{INDEXED_TAGGING_SECRET_LENGTH, IndexedTaggingSecret},\n};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n let _ = notify_created_note_oracle(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n );\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(\n _nullifier: Field,\n _note_hash: Field,\n _counter: u32,\n) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S],\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S],\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields,\n )\n}\n\npub unconstrained fn get_notes<Note, let N: u32, let M: u32, let S: u32, let NS: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N], // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option<Note>; S]\nwhere\n Note: NoteInterface<N>,\n{\n sync_notes_oracle_wrapper();\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields,\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let note_content = array::subarray(fields, read_offset + 2);\n\n let mut note = Note::deserialize_content(note_content);\n note.set_header(NoteHeader { contract_address, nonce, storage_slot, note_hash_counter });\n\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\n/// Same as `get_app_tagging_secret_as_sender`, except it returns the derived tag, ready to be included in a log.\npub unconstrained fn get_app_tag_as_sender(sender: AztecAddress, recipient: AztecAddress) -> Field {\n get_app_tagging_secret_as_sender(sender, recipient).compute_tag(recipient)\n}\n\n/// Returns the tagging secret for a given sender and recipient pair, siloed for the current contract address.\n/// Includes the last known index used to send a note tagged with this secret.\n/// For this to work, PXE must know the ivpsk_m of the sender.\n/// For the recipient's side, only the address is needed.\npub unconstrained fn get_app_tagging_secret_as_sender(\n sender: AztecAddress,\n recipient: AztecAddress,\n) -> IndexedTaggingSecret {\n let result = get_app_tagging_secret_as_sender_oracle(sender, recipient);\n IndexedTaggingSecret::deserialize(result)\n}\n\n#[oracle(getAppTaggingSecretAsSender)]\nunconstrained fn get_app_tagging_secret_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) -> [Field; INDEXED_TAGGING_SECRET_LENGTH] {}\n\n/// Notifies the simulator that a tag has been used in a note, and to therefore increment the associated index so that\n/// future notes get a different tag and can be discovered by the recipient.\n/// This change should only be persisted in a non-volatile database if the tagged log is found in an actual block -\n/// otherwise e.g. a reverting transaction can cause the sender to accidentally skip indices and later produce notes\n/// that are not found by the recipient.\npub fn increment_app_tagging_secret_index_as_sender(sender: AztecAddress, recipient: AztecAddress) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n increment_app_tagging_secret_index_as_sender_wrapper(sender, recipient);\n }\n}\n\nunconstrained fn increment_app_tagging_secret_index_as_sender_wrapper(\n sender: AztecAddress,\n recipient: AztecAddress,\n) {\n increment_app_tagging_secret_index_as_sender_oracle(sender, recipient);\n}\n\n#[oracle(incrementAppTaggingSecretIndexAsSender)]\nunconstrained fn increment_app_tagging_secret_index_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) {}\n\n/// Finds new notes that may have been sent to all registered accounts in PXE in the current contract and makes them available\n/// for later querying via the `get_notes` oracle.\npub fn sync_notes() {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n sync_notes_oracle_wrapper();\n }\n}\n\nunconstrained fn sync_notes_oracle_wrapper() {\n sync_notes_oracle();\n}\n\n#[oracle(syncNotes)]\nunconstrained fn sync_notes_oracle() {}\n"
|
|
5701
5668
|
},
|
|
5702
|
-
"
|
|
5703
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5704
|
-
"source": "use dep::protocol_types::
|
|
5669
|
+
"92": {
|
|
5670
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr",
|
|
5671
|
+
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"
|
|
5705
5672
|
},
|
|
5706
|
-
"
|
|
5707
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5708
|
-
"source": "use
|
|
5673
|
+
"93": {
|
|
5674
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr",
|
|
5675
|
+
"source": "use dep::protocol_types::{\n address::AztecAddress, constants::CONTRACT_INSTANCE_LENGTH, contract_class_id::ContractClassId,\n contract_instance::ContractInstance,\n};\n\n// NOTE: this is for use in private only\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(\n _address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// NOTE: this is for use in private only\nunconstrained fn get_contract_instance_internal(\n address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\n// NOTE: this is for use in private only\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance =\n unsafe { ContractInstance::deserialize(get_contract_instance_internal(address)) };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\n// These oracles each return a ContractInstance member\n// plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstanceDeployer)]\nunconstrained fn get_contract_instance_deployer_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n#[oracle(avmOpcodeGetContractInstanceClassId)]\nunconstrained fn get_contract_instance_class_id_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n#[oracle(avmOpcodeGetContractInstanceInitializationHash)]\nunconstrained fn get_contract_instance_initialization_hash_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n\npub unconstrained fn get_contract_instance_deployer_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_deployer_oracle_avm(address)\n}\npub unconstrained fn get_contract_instance_class_id_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_class_id_oracle_avm(address)\n}\npub unconstrained fn get_contract_instance_initialization_hash_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_initialization_hash_oracle_avm(address)\n}\n\npub fn get_contract_instance_deployer_avm(address: AztecAddress) -> Option<AztecAddress> {\n let (member, exists) = get_contract_instance_deployer_internal_avm(address);\n if exists {\n Option::some(AztecAddress::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_class_id_avm(address: AztecAddress) -> Option<ContractClassId> {\n let (member, exists) = get_contract_instance_class_id_internal_avm(address);\n if exists {\n Option::some(ContractClassId::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_initialization_hash_avm(address: AztecAddress) -> Option<Field> {\n let (member, exists) = get_contract_instance_initialization_hash_internal_avm(address);\n if exists {\n Option::some(member)\n } else {\n Option::none()\n }\n}\n"
|
|
5709
5676
|
},
|
|
5710
|
-
"
|
|
5677
|
+
"106": {
|
|
5711
5678
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr",
|
|
5712
|
-
"source": "use dep::protocol_types::{\n address::AztecAddress,\n point::Point,\n public_keys::{IvpkM, ToPoint},\n scalar::Scalar,\n};\n\nuse crate::keys::
|
|
5679
|
+
"source": "use dep::protocol_types::{\n address::AztecAddress,\n point::Point,\n public_keys::{IvpkM, ToPoint},\n scalar::Scalar,\n};\n\nuse crate::keys::secret_derivation::derive_aes_secret;\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n pub fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n pub fn compute_ciphertext<T>(self, secret: Scalar, pk: T) -> [u8; 48]\n where\n T: ToPoint,\n {\n let full_key = derive_aes_secret(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131,\n 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171,\n 176, 218, 48, 209, 73, 89, 200, 209,\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"
|
|
5680
|
+
},
|
|
5681
|
+
"107": {
|
|
5682
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr",
|
|
5683
|
+
"source": "use crate::{\n context::PrivateContext,\n encrypted_logs::payload::compute_private_log_payload,\n note::{note_emission::NoteEmission, note_interface::NoteInterface},\n};\nuse dep::protocol_types::{\n abis::note_hash::NoteHash, address::AztecAddress, constants::PRIVATE_LOG_SIZE_IN_FIELDS,\n};\n\n/// Computes private note log payload\nfn compute_payload<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n recipient: AztecAddress,\n sender: AztecAddress,\n) -> ([Field; PRIVATE_LOG_SIZE_IN_FIELDS], u32)\nwhere\n Note: NoteInterface<N>,\n{\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists =\n context.note_hashes.storage().any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let plaintext = note.to_be_bytes(storage_slot);\n\n let payload = compute_private_log_payload(contract_address, recipient, sender, plaintext);\n\n (payload, note_hash_counter)\n}\n\nunconstrained fn compute_payload_unconstrained<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n recipient: AztecAddress,\n sender: AztecAddress,\n) -> ([Field; PRIVATE_LOG_SIZE_IN_FIELDS], u32)\nwhere\n Note: NoteInterface<N>,\n{\n compute_payload(context, note, recipient, sender)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note<Note, let N: u32>(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> ()\nwhere\n Note: NoteInterface<N>,\n{\n |e: NoteEmission<Note>| {\n let (encrypted_log, note_hash_counter) =\n compute_payload(*context, e.note, recipient, sender);\n context.emit_raw_note_log(encrypted_log, note_hash_counter);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32>(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> ()\nwhere\n Note: NoteInterface<N>,\n{\n |e: NoteEmission<Note>| {\n // Unconstrained logs have both their content and encryption unconstrained - it could occur that the\n // recipient is unable to decrypt the payload.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n // It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n let (encrypted_log, note_hash_counter) =\n unsafe { compute_payload_unconstrained(*context, e.note, recipient, sender) };\n context.emit_raw_note_log(encrypted_log, note_hash_counter);\n }\n}\n"
|
|
5713
5684
|
},
|
|
5714
|
-
"
|
|
5685
|
+
"108": {
|
|
5715
5686
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr",
|
|
5716
|
-
"source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::{GENERATOR_INDEX__SYMMETRIC_KEY, PRIVATE_LOG_SIZE_IN_FIELDS},\n hash::{poseidon2_hash, poseidon2_hash_with_separator},\n point::Point,\n public_keys::{AddressPoint, OvpkM},\n scalar::Scalar,\n utils::arrays::array_concat,\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n field::bn254::decompose, hash::from_field_unsafe as fr_to_fq_unsafe,\n};\n\nuse crate::{\n encrypted_logs::header::EncryptedLogHeader,\n keys::point_to_symmetric_key::point_to_symmetric_key,\n oracle::{\n notes::{get_app_tag_as_sender, increment_app_tagging_secret_index_as_sender},\n random::random,\n },\n utils::{bytes::bytes_to_fields, point::point_to_bytes},\n};\n\n// 1 field is reserved for tag.\nglobal ENCRYPTED_PAYLOAD_SIZE_IN_BYTES: u32 = (PRIVATE_LOG_SIZE_IN_FIELDS - 1) * 31;\n\ncomptime global HEADER_SIZE: u32 = 48;\n\ncomptime global OUTGOING_BODY_SIZE: u32 = 112;\n\n// Bytes padded to the overhead, so that the size of the incoming body ciphertext will be a multiple of 16.\ncomptime global OVERHEAD_PADDING: u32 = 15;\n\npub comptime global OVERHEAD_SIZE: u32 = 32 /* eph_pk */\n + HEADER_SIZE /* incoming_header */\n + HEADER_SIZE /* outgoing_header */\n + OUTGOING_BODY_SIZE /* outgoing_body */\n + OVERHEAD_PADDING /* padding */;\n\nglobal PLAINTEXT_LENGTH_SIZE: u32 = 2;\n\n// This is enough for 8 fields of data.\n// 1 field for storage slot, 1 field for note/event type id, allowing 6 fields for custom values.\nglobal MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES: u32 =\n ENCRYPTED_PAYLOAD_SIZE_IN_BYTES - OVERHEAD_SIZE - PLAINTEXT_LENGTH_SIZE - 1 /* aes padding */;\n\n// Note: Might have to update PRIVATE_LOG_SIZE_IN_FIELDS in `constants.nr` if the above changes.\n// This value ideally should be set by the protocol, allowing users (or `aztec-nr`) to fit data within the defined size limits.\n// Currently, we adjust this value as the structure changes, then update `constants.nr` to match.\n// Once the structure is finalized with defined overhead and max note field sizes, this value will be fixed and should remain unaffected by further payload composition changes.\n\npub fn compute_private_log_payload<let P: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n recipient: AztecAddress,\n sender: AztecAddress,\n plaintext: [u8; P],\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS] {\n assert(\n P < MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES,\n f\"plaintext for log must not exceed {MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES}\",\n );\n\n let extended_plaintext: [u8; MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES + PLAINTEXT_LENGTH_SIZE] =\n extend_private_log_plaintext(plaintext);\n let encrypted: [u8; ENCRYPTED_PAYLOAD_SIZE_IN_BYTES] = compute_encrypted_log(\n contract_address,\n ovsk_app,\n ovpk,\n recipient,\n extended_plaintext,\n );\n\n // We assume that the sender wants for the recipient to find the tagged note, and therefore that they will cooperate\n // and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the note\n // automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n\n array_concat([tag], bytes_to_fields(encrypted))\n}\n\npub fn compute_partial_public_log_payload<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n recipient: AztecAddress,\n sender: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let extended_plaintext: [u8; P + PLAINTEXT_LENGTH_SIZE] =\n extend_private_log_plaintext(plaintext);\n let encrypted: [u8; M - 32] = compute_encrypted_log(\n contract_address,\n ovsk_app,\n ovpk,\n recipient,\n extended_plaintext,\n );\n\n // We assume that the sender wants for the recipient to find the tagged note, and therefore that they will cooperate\n // and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the note\n // automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n // Silo the tag with contract address.\n // This is done by the kernel circuit to the private logs, but since the partial log will be finalized and emitted\n // in public as unencrypted log, its tag is not siloed at the moment.\n // To avoid querying logs using two types of tags, we silo the tag manually here.\n // TODO(#10273) This should be done by the AVM when it's processing the raw logs instead of their hashes.\n let siloed_tag_bytes: [u8; 32] =\n poseidon2_hash([contract_address.to_field(), tag]).to_be_bytes();\n\n // Temporary hack so that the partial public log remains the same format.\n // It should return field array and make the tag the first field as compute_private_log_payload does.\n let mut log_bytes = [0; M];\n for i in 0..32 {\n log_bytes[i] = siloed_tag_bytes[i];\n }\n for i in 0..encrypted.len() {\n log_bytes[i + 32] = encrypted[i];\n }\n\n log_bytes\n}\n\nfn compute_encrypted_log<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] =\n header.compute_ciphertext(eph_sk, recipient.to_address_point());\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext =\n compute_incoming_body_ciphertext(plaintext, eph_sk, recipient.to_address_point());\n let outgoing_body_ciphertext: [u8; 112] =\n compute_outgoing_body_ciphertext(recipient, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n let mut encrypted_bytes = [0; M];\n let mut offset = 0;\n\n // eph_pk\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[offset + i] = eph_pk_bytes[i];\n }\n offset += 32;\n\n // incoming_header\n // outgoing_header\n for i in 0..HEADER_SIZE {\n encrypted_bytes[offset + i] = incoming_header_ciphertext[i];\n encrypted_bytes[offset + HEADER_SIZE + i] = outgoing_header_ciphertext[i];\n }\n offset += HEADER_SIZE * 2;\n\n // outgoing_body\n for i in 0..OUTGOING_BODY_SIZE {\n encrypted_bytes[offset + i] = outgoing_body_ciphertext[i];\n }\n offset += OUTGOING_BODY_SIZE;\n\n // Padding.\n offset += OVERHEAD_PADDING;\n\n // incoming_body\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - offset;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[offset + i] = incoming_body_ciphertext[i];\n }\n\n encrypted_bytes\n}\n\n// Prepend the plaintext length as the first byte, then copy the plaintext itself starting from the second byte.\n// Fill the remaining bytes with random values to reach a fixed length of N.\nfn extend_private_log_plaintext<let P: u32, let N: u32>(plaintext: [u8; P]) -> [u8; N] {\n let mut padded = unsafe { get_random_bytes() };\n padded[0] = (P >> 8) as u8;\n padded[1] = P as u8;\n for i in 0..P {\n padded[i + PLAINTEXT_LENGTH_SIZE] = plaintext[i];\n }\n padded\n}\n\nunconstrained fn get_random_bytes<let N: u32>() -> [u8; N] {\n let mut bytes = [0; N];\n let mut idx = 32;\n let mut randomness = [0; 32];\n for i in 0..N {\n if idx == 32 {\n randomness = random().to_be_bytes();\n idx = 1; // Skip the first byte as it's always 0.\n }\n bytes[i] = randomness[idx];\n idx += 1;\n }\n bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext<let P: u32>(\n plaintext: [u8; P],\n eph_sk: Scalar,\n address_point: AddressPoint,\n) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, address_point.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\n/// Encrypts ephemeral secret key and recipient's address point --> with this information the recipient of outgoing will\n/// be able to derive the key with which the incoming log can be decrypted.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point,\n) -> [u8; OUTGOING_BODY_SIZE] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n let mut buffer = [0 as u8; 96];\n\n let serialized_eph_sk_high: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_address_point =\n point_to_bytes(recipient.to_address_point().to_point());\n\n for i in 0..16 {\n buffer[i] = serialized_eph_sk_high[i + 16];\n buffer[i + 16] = serialized_eph_sk_low[i + 16];\n }\n for i in 0..32 {\n buffer[i + 32] = address_bytes[i];\n buffer[i + 64] = serialized_recipient_address_point[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field,\n )\n .to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n}\n\nmod test {\n use crate::encrypted_logs::payload::{\n compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext,\n compute_private_log_payload, MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES,\n };\n use dep::protocol_types::{\n address::AztecAddress, point::Point, public_keys::OvpkM, scalar::Scalar,\n };\n use protocol_types::public_keys::AddressPoint;\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `encrypted_log_payload.test.ts`\n let contract_address = AztecAddress::from_field(\n 0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04,\n );\n let ovsk_app = 0x191ac5e29bbc8f80f29ed06b75eaf30c036ed7952d844833860c527077c8c3b4;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x07f696b8b233de2c1935e43c793399586f532da5ff7c0356636a75acb862e964,\n y: 0x156e8a3e42bfca3663936ba98c7fd26386a14657c23b5f5146f1a94b6c465154,\n is_infinite: false,\n },\n };\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41,\n 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239,\n 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118,\n 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183,\n 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78,\n 101, 153, 0, 0, 16, 39,\n ];\n\n let randomness = 0x0101010101010101010101010101010101010101010101010101010101010101;\n let _ = OracleMock::mock(\"getRandomField\").returns(randomness).times(\n (MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES as u64 + 1 + 30) / 31,\n );\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk).times(1);\n\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let sender = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let _ = OracleMock::mock(\"getAppTaggingSecretAsSender\").returns([69420, 1337]);\n\n let _ = OracleMock::mock(\"incrementAppTaggingSecretIndexAsSender\").returns(());\n\n let payload = compute_private_log_payload(\n contract_address,\n ovsk_app,\n ovpk_m,\n recipient,\n sender,\n plaintext,\n );\n\n // The following value was generated by `encrypted_log_payload.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let private_log_payload_from_typescript = [\n 0x0e9cffc3ddd746affb02410d8f0a823e89939785bcc8e88ee4f3cae05e737c36,\n 0x008d460c0e434d846ec1ea286e4090eb56376ff27bddc1aacae1d856549f701f,\n 0x00a70577790aeabcc2d81ec8d0c99e7f5d2bf2f1452025dc777a178404f851d9,\n 0x003de818923f85187871d99bdf95d695eff0a9e09ba15153fc9b4d224b6e1e71,\n 0x00dfbdcaab06c09d5b3c749bfebe1c0407eccd04f51bbb59142680c8a091b97f,\n 0x00c6cbcf615def593ab09e5b3f7f58f6fc235c90e7c77ed8dadb3b05ee4545a7,\n 0x00bc612c9139475fee6070be47efcc43a5cbbc873632f1428fac952df9c181db,\n 0x005f9e850b21fe11fedef37b88caee95111bce776e488df219732d0a77d19201,\n 0x007047186f41445ecd5c603487f7fb3c8f31010a22af69ce0000000000000000,\n 0x0000000000000000a600a61f7d59eeaf52eb51bc0592ff981d9ba3ea8e6ea8ba,\n 0x009dc0cec8c70b81e84556a77ce6c3ca47a527f99ffe7b2524bb885a23020b72,\n 0x0095748ad19c1083618ad96298b76ee07eb1a56d19cc798710e9f5de96501bd5,\n 0x009b3781c9c02a6c95c5912f8936b1500d362afbf0922c85b1ada18db8b95162,\n 0x00a6e9d067655cdf669eb387f8e0492a95fdcdb39429d5340b4bebc250ba9bf6,\n 0x002c2f49f549f37beed75a668aa51967e0e57547e5a655157bcf381e22f30e25,\n 0x00881548ec9606a151b5fbfb2d14ee4b34bf4c1dbd71c7be15ad4c63474bb6f8,\n 0x009970aeb3d9489c8edbdff80a1a3a5c28370e534abc870a85ea4318326ea192,\n 0x0022fb10df358c765edada497db4284ae30507a2e03e983d23cfa0bd831577e8,\n ];\n\n assert_eq(payload, private_log_payload_from_typescript);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let address_point = AddressPoint {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n let plaintext = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `address_point` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, address_point);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160,\n 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157,\n 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93,\n 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130,\n 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95,\n 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234,\n 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162,\n 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185,\n 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236,\n 23, 206, 229, 108,\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb,\n };\n\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b,\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let ciphertext =\n compute_outgoing_body_ciphertext(recipient, sender_ovsk_app, eph_sk, eph_pk);\n\n // The following value was generated by `encrypted_log_payload.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 97, 221, 53, 168, 242, 56, 217, 184, 114, 127, 137, 98, 31, 63, 86, 179, 139, 198, 162,\n 162, 216, 158, 255, 205, 90, 212, 141, 55, 9, 245, 6, 146, 202, 137, 129, 36, 190, 31,\n 17, 89, 151, 203, 43, 196, 203, 233, 178, 79, 202, 70, 250, 182, 18, 191, 79, 42, 205,\n 204, 145, 14, 13, 35, 255, 139, 142, 66, 193, 240, 175, 233, 180, 37, 153, 235, 41, 88,\n 232, 52, 235, 213, 50, 26, 153, 227, 25, 242, 161, 92, 45, 152, 100, 106, 29, 192, 131,\n 101, 121, 126, 31, 118, 191, 90, 238, 43, 24, 82, 49, 18, 199, 107, 83, 7,\n ];\n\n assert_eq(outgoing_body_ciphertext_from_typescript, ciphertext);\n }\n}\n"
|
|
5687
|
+
"source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::{GENERATOR_INDEX__SYMMETRIC_KEY, PRIVATE_LOG_SIZE_IN_FIELDS},\n hash::poseidon2_hash,\n point::Point,\n public_keys::AddressPoint,\n scalar::Scalar,\n utils::arrays::array_concat,\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n field::bn254::decompose, hash::from_field_unsafe as fr_to_fq_unsafe,\n};\n\nuse crate::{\n encrypted_logs::header::EncryptedLogHeader,\n keys::secret_derivation::derive_aes_secret,\n oracle::{\n notes::{get_app_tag_as_sender, increment_app_tagging_secret_index_as_sender},\n random::random,\n },\n utils::{bytes::bytes_to_fields, point::point_to_bytes},\n};\n\n// 1 field is reserved for tag.\nglobal ENCRYPTED_PAYLOAD_SIZE_IN_BYTES: u32 = (PRIVATE_LOG_SIZE_IN_FIELDS - 1) * 31;\n\ncomptime global HEADER_SIZE: u32 = 48;\n\n// Bytes padded to the overhead, so that the size of the incoming body ciphertext will be a multiple of 16.\ncomptime global OVERHEAD_PADDING: u32 = 15;\n\npub comptime global OVERHEAD_SIZE: u32 = 32 /* eph_pk */\n + HEADER_SIZE /* incoming_header */\n + OVERHEAD_PADDING /* padding */;\n\nglobal PLAINTEXT_LENGTH_SIZE: u32 = 2;\n\n// This is enough for 8 fields of data.\n// 1 field for storage slot, 1 field for note/event type id, allowing 6 fields for custom values.\nglobal MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES: u32 =\n ENCRYPTED_PAYLOAD_SIZE_IN_BYTES - OVERHEAD_SIZE - PLAINTEXT_LENGTH_SIZE - 1 /* aes padding */;\n\n// Note: Might have to update PRIVATE_LOG_SIZE_IN_FIELDS in `constants.nr` if the above changes.\n// This value ideally should be set by the protocol, allowing users (or `aztec-nr`) to fit data within the defined size limits.\n// Currently, we adjust this value as the structure changes, then update `constants.nr` to match.\n// Once the structure is finalized with defined overhead and max note field sizes, this value will be fixed and should remain unaffected by further payload composition changes.\n\npub fn compute_private_log_payload<let P: u32>(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n sender: AztecAddress,\n plaintext: [u8; P],\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS] {\n assert(\n P < MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES,\n f\"plaintext for log must not exceed {MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES}\",\n );\n\n let extended_plaintext: [u8; MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES + PLAINTEXT_LENGTH_SIZE] =\n extend_private_log_plaintext(plaintext);\n let encrypted: [u8; ENCRYPTED_PAYLOAD_SIZE_IN_BYTES] =\n compute_encrypted_log(contract_address, recipient, extended_plaintext);\n\n // We assume that the sender wants for the recipient to find the tagged note, and therefore that they will cooperate\n // and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the note\n // automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n\n array_concat([tag], bytes_to_fields(encrypted))\n}\n\npub fn compute_partial_public_log_payload<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n sender: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let extended_plaintext: [u8; P + PLAINTEXT_LENGTH_SIZE] =\n extend_private_log_plaintext(plaintext);\n let encrypted: [u8; M - 32] =\n compute_encrypted_log(contract_address, recipient, extended_plaintext);\n\n // We assume that the sender wants for the recipient to find the tagged note, and therefore that they will cooperate\n // and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the note\n // automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n // Silo the tag with contract address.\n // This is done by the kernel circuit to the private logs, but since the partial log will be finalized and emitted\n // in public as unencrypted log, its tag is not siloed at the moment.\n // To avoid querying logs using two types of tags, we silo the tag manually here.\n // TODO(#10273) This should be done by the AVM when it's processing the raw logs instead of their hashes.\n let siloed_tag_bytes: [u8; 32] =\n poseidon2_hash([contract_address.to_field(), tag]).to_be_bytes();\n\n // Temporary hack so that the partial public log remains the same format.\n // It should return field array and make the tag the first field as compute_private_log_payload does.\n let mut log_bytes = [0; M];\n for i in 0..32 {\n log_bytes[i] = siloed_tag_bytes[i];\n }\n for i in 0..encrypted.len() {\n log_bytes[i + 32] = encrypted[i];\n }\n\n log_bytes\n}\n\nfn compute_encrypted_log<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] =\n header.compute_ciphertext(eph_sk, recipient.to_address_point());\n let incoming_body_ciphertext =\n compute_incoming_body_ciphertext(plaintext, eph_sk, recipient.to_address_point());\n\n let mut encrypted_bytes = [0; M];\n let mut offset = 0;\n\n // eph_pk\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[offset + i] = eph_pk_bytes[i];\n }\n offset += 32;\n\n // incoming_header\n for i in 0..HEADER_SIZE {\n encrypted_bytes[offset + i] = incoming_header_ciphertext[i];\n }\n offset += HEADER_SIZE;\n\n // Padding.\n offset += OVERHEAD_PADDING;\n\n // incoming_body\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - offset;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[offset + i] = incoming_body_ciphertext[i];\n }\n\n encrypted_bytes\n}\n\n// Prepend the plaintext length as the first byte, then copy the plaintext itself starting from the second byte.\n// Fill the remaining bytes with random values to reach a fixed length of N.\nfn extend_private_log_plaintext<let P: u32, let N: u32>(plaintext: [u8; P]) -> [u8; N] {\n let mut padded = unsafe { get_random_bytes() };\n padded[0] = (P >> 8) as u8;\n padded[1] = P as u8;\n for i in 0..P {\n padded[i + PLAINTEXT_LENGTH_SIZE] = plaintext[i];\n }\n padded\n}\n\nunconstrained fn get_random_bytes<let N: u32>() -> [u8; N] {\n let mut bytes = [0; N];\n let mut idx = 32;\n let mut randomness = [0; 32];\n for i in 0..N {\n if idx == 32 {\n randomness = random().to_be_bytes();\n idx = 1; // Skip the first byte as it's always 0.\n }\n bytes[i] = randomness[idx];\n idx += 1;\n }\n bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext<let P: u32>(\n plaintext: [u8; P],\n eph_sk: Scalar,\n address_point: AddressPoint,\n) -> [u8] {\n let full_key = derive_aes_secret(eph_sk, address_point.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\nmod test {\n use crate::encrypted_logs::payload::{\n compute_incoming_body_ciphertext, compute_private_log_payload,\n MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES,\n };\n use dep::protocol_types::{address::AztecAddress, point::Point, scalar::Scalar};\n use protocol_types::public_keys::AddressPoint;\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `encrypted_log_payload.test.ts`\n let contract_address = AztecAddress::from_field(\n 0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04,\n );\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41,\n 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239,\n 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118,\n 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183,\n 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78,\n 101, 153, 0, 0, 16, 39,\n ];\n\n let randomness = 0x0101010101010101010101010101010101010101010101010101010101010101;\n let _ = OracleMock::mock(\"getRandomField\").returns(randomness).times(\n (MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES as u64 + 1 + 30) / 31,\n );\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk).times(1);\n\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let sender = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let _ = OracleMock::mock(\"getAppTaggingSecretAsSender\").returns([69420, 1337]);\n\n let _ = OracleMock::mock(\"incrementAppTaggingSecretIndexAsSender\").returns(());\n\n let payload = compute_private_log_payload(contract_address, recipient, sender, plaintext);\n\n // The following value was generated by `encrypted_log_payload.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let private_log_payload_from_typescript = [\n 0x0e9cffc3ddd746affb02410d8f0a823e89939785bcc8e88ee4f3cae05e737c36,\n 0x008d460c0e434d846ec1ea286e4090eb56376ff27bddc1aacae1d856549f701f,\n 0x00a70577790aeabcc2d81ec8d0c99e7f5d2bf2f1452025dc777a178404f851d9,\n 0x003de818923f85187871d99bdf95d695eff0a900000000000000000000000000,\n 0x000000a600a61f7d59eeaf52eb51bc0592ff981d9ba3ea8e6ea8ba9dc0cec8c7,\n 0x000b81e84556a77ce6c3ca47a527f99ffe7b2524bb885a23020b7295748ad19c,\n 0x001083618ad96298b76ee07eb1a56d19cc798710e9f5de96501bd59b3781c9c0,\n 0x002a6c95c5912f8936b1500d362afbf0922c85b1ada18db8b95162a6e9d06765,\n 0x005cdf669eb387f8e0492a95fdcdb39429d5340b4bebc250ba9bf62c2f49f549,\n 0x00f37beed75a668aa51967e0e57547e5a655157bcf381e22f30e25881548ec96,\n 0x0006a151b5fbfb2d14ee4b34bf4c1dbd71c7be15ad4c63474bb6f89970aeb3d9,\n 0x00489c8edbdff80a1a3a5c28370e534abc870a85ea4318326ea19222fb10df35,\n 0x008c765edada497db4284ae30507a2e03e983d23cfa0bd831577e857bbef9cf7,\n 0x0090c97cb5699cc8783a1b4276d929be2882e5b9b72829a4f8404f7e3c853d11,\n 0x00d6d5a000b80134891e95f81007ad35d3945eaeecbe137fff85d01d7eaf8f19,\n 0x00a15eb965c6a4bc97aa87fd3463c31c9d4e0d722a8ba870bcc50c9c7a8b48ad,\n 0x0063c861bdbe490d44c57382decbae663927909652f87ac18dcfd5b30649cce5,\n 0x00820f14caa725efe1fa3485ceac88499eadf0565c5b20998c05931bbf478e68,\n ];\n\n assert_eq(payload, private_log_payload_from_typescript);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let address_point = AddressPoint {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n let plaintext = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `address_point` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, address_point);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160,\n 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157,\n 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93,\n 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130,\n 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95,\n 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234,\n 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162,\n 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185,\n 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236,\n 23, 206, 229, 108,\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n}\n"
|
|
5717
5688
|
},
|
|
5718
|
-
"
|
|
5719
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5720
|
-
"source": "
|
|
5689
|
+
"111": {
|
|
5690
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr",
|
|
5691
|
+
"source": "/// Returns `DST_LEN` elements from a source array, starting at `offset`. `DST_LEN` must be large enough to hold all of\n/// the elements past `offset`.\n///\n/// Example:\n/// ```\n/// let foo: [Field; 2] = subarray([1, 2, 3, 4, 5], 2);\n/// assert_eq(foo, [3, 4]);\n/// ```\npub fn subarray<let SRC_LEN: u32, let DST_LEN: u32>(\n src: [Field; SRC_LEN],\n offset: u32,\n) -> [Field; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"offset too large\");\n\n let mut dst: [Field; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\nmod test {\n use super::subarray;\n\n #[test]\n unconstrained fn subarray_into_empty() {\n // In all of these cases we're setting DST_LEN to be 0, so we always get back an emtpy array.\n assert_eq(subarray([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 2), []);\n }\n\n #[test]\n unconstrained fn subarray_complete() {\n assert_eq(subarray([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), [1, 2, 3, 4, 5]);\n }\n\n #[test]\n unconstrained fn subarray_different_end_sizes() {\n // We implicitly select how many values to read in the size of the return array\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4, 5]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2]);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_offset_too_large() {\n // With an offset of 1 we can only request up to 4 elements\n let _: [_; 5] = subarray([1, 2, 3, 4, 5], 1);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_bad_return_value() {\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [3, 3, 4, 5]);\n }\n}\n"
|
|
5721
5692
|
},
|
|
5722
|
-
"
|
|
5693
|
+
"114": {
|
|
5694
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr",
|
|
5695
|
+
"source": "use dep::protocol_types::point::Point;\n\n// I am storing the modulus minus 1 divided by 2 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use crate::utils::point::point_to_bytes;\n use dep::protocol_types::point::Point;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n}\n"
|
|
5696
|
+
},
|
|
5697
|
+
"119": {
|
|
5698
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr",
|
|
5699
|
+
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::GENERATOR_INDEX__CONSTRUCTOR, hash::poseidon2_hash_with_separator,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext},\n oracle::get_contract_instance::{\n get_contract_instance, get_contract_instance_deployer_avm,\n get_contract_instance_initialization_hash_avm,\n },\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let deployer = get_contract_instance_deployer_avm(address).unwrap();\n let initialization_hash = get_contract_instance_initialization_hash_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (deployer.is_zero()) | (deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n"
|
|
5700
|
+
},
|
|
5701
|
+
"129": {
|
|
5723
5702
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr",
|
|
5724
5703
|
"source": "use crate::{\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n oracle::{\n key_validation_request::get_key_validation_request,\n keys::get_public_keys_and_partial_address,\n },\n};\nuse dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\n\nmod test;\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n // Public keys are constrained by showing their inclusion in the address's preimage.\n let (public_keys, partial_address) = unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(public_keys, partial_address),\n \"Invalid public keys hint for address\",\n );\n\n public_keys\n}\n"
|
|
5725
5704
|
},
|
|
5726
|
-
"
|
|
5727
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/keys/
|
|
5728
|
-
"source": "use crate::utils::point::point_to_bytes;\nuse dep::protocol_types::{
|
|
5705
|
+
"131": {
|
|
5706
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/keys/secret_derivation.nr",
|
|
5707
|
+
"source": "use crate::utils::point::point_to_bytes;\nuse dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, point::Point, scalar::Scalar};\nuse std::{embedded_curve_ops::multi_scalar_mul, hash::sha256};\n\npub fn derive_aes_secret(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret = point_to_bytes(multi_scalar_mul([point], [secret]));\n\n let mut shared_secret_bytes_with_separator: [u8; 33] = std::mem::zeroed();\n for i in 0..shared_secret.len() {\n shared_secret_bytes_with_separator[i] = shared_secret[i];\n }\n\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_derive_aes_secret_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n };\n\n let key = derive_aes_secret(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158,\n 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159,\n ];\n assert_eq(key, key_from_typescript);\n}\n"
|
|
5729
5708
|
},
|
|
5730
5709
|
"152": {
|
|
5731
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr",
|
|
5732
|
-
"source": "use dep::protocol_types::point::Point;\n\n// I am storing the modulus minus 1 divided by 2 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use crate::utils::point::point_to_bytes;\n use dep::protocol_types::point::Point;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n}\n"
|
|
5733
|
-
},
|
|
5734
|
-
"171": {
|
|
5735
5710
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr",
|
|
5736
5711
|
"source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Serialize},\n};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note,\n note_emission::NoteEmission,\n note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote},\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable<Note, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl<T, Context, let N: u32> Storage<T, N> for PrivateImmutable<T, Context>\nwhere\n T: Serialize<N> + Deserialize<N>,\n{}\n\nimpl<Note, Context> PrivateImmutable<Note, Context> {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map<AztecAddress, PrivateImmutable>` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl<Note> PrivateImmutable<Note, &mut PrivateContext> {\n // docs:start:initialize\n pub fn initialize<let N: u32>(self, note: &mut Note) -> NoteEmission<Note>\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note<let N: u32>(self) -> Note\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n pub unconstrained fn view_note<let N: u32>(self) -> Note\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"
|
|
5737
5712
|
},
|
|
5738
|
-
"
|
|
5739
|
-
"path": "/usr/src/noir-projects/
|
|
5740
|
-
"source": "
|
|
5713
|
+
"163": {
|
|
5714
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr",
|
|
5715
|
+
"source": "use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_emission::NoteEmission,\n note_header::NoteHeader,\n note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_nullify_internal, compute_note_hash_for_read_request},\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note,\n) -> NoteEmission<Note>\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, let N: u32>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note,\n)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, let N: u32>(context: &mut PrivateContext, note: Note)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n"
|
|
5741
5716
|
},
|
|
5742
|
-
"
|
|
5743
|
-
"path": "/usr/src/noir-projects/
|
|
5744
|
-
"source": "use crate::{\n
|
|
5717
|
+
"167": {
|
|
5718
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr",
|
|
5719
|
+
"source": "use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote}},\n utils::array,\n};\n\nuse dep::protocol_types::hash::{\n compute_siloed_note_hash, compute_siloed_nullifier as compute_siloed_nullifier_from_preimage,\n compute_unique_note_hash,\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32>(\n note_with_header: Note,\n context: &mut PrivateContext,\n) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32>(note: Note) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash = note.compute_note_hash();\n let header = note.get_header();\n let nonce = header.nonce;\n let counter = header.note_hash_counter;\n\n // If same tx note, read request always uses the normal note hash\n if counter != 0 {\n note_hash\n } else {\n // If the note comes from a different tx, we need to compute the note hash that reached the tree\n compute_unique_note_hash(\n nonce,\n compute_siloed_note_hash(header.contract_address, note_hash),\n )\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32>(\n note: Note,\n note_hash_for_read_request: Field,\n) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let header = note.get_header();\n\n if (header.note_hash_counter != 0) & (header.nonce != 0) {\n // Non-revertible note, nullified by a revertible nullifier, we need to nullify the note hash that will reach the tree\n let siloed_note_hash =\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request);\n\n compute_unique_note_hash(header.nonce, siloed_note_hash)\n } else {\n note_hash_for_read_request\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32>(note: Note) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub unconstrained fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S],\n) -> [Field; 4]\nwhere\n T: NoteInterface<N> + NullifiableNote,\n{\n let mut note = deserialize_content(array::subarray(serialized_note, 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, note_hash);\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, siloed_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"
|
|
5745
5720
|
},
|
|
5746
|
-
"
|
|
5747
|
-
"path": "/usr/src/noir-projects/
|
|
5748
|
-
"source": "use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress},\n constants::CONTRACT_INSTANCE_LENGTH,\n contract_class_id::ContractClassId,\n public_keys::PublicKeys,\n traits::{Deserialize, Hash, Serialize},\n};\n\npub struct ContractInstance {\n pub salt: Field,\n pub deployer: AztecAddress,\n pub contract_class_id: ContractClassId,\n pub initialization_hash: Field,\n pub public_keys: PublicKeys,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys.eq(other.public_keys)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n let public_keys_serialized = self.public_keys.serialize();\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n public_keys_serialized[0],\n public_keys_serialized[1],\n public_keys_serialized[2],\n public_keys_serialized[3],\n public_keys_serialized[4],\n public_keys_serialized[5],\n public_keys_serialized[6],\n public_keys_serialized[7],\n public_keys_serialized[8],\n public_keys_serialized[9],\n public_keys_serialized[10],\n public_keys_serialized[11],\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys: PublicKeys::deserialize([\n serialized[4],\n serialized[5],\n serialized[6],\n serialized[7],\n serialized[8],\n serialized[9],\n serialized[10],\n serialized[11],\n serialized[12],\n serialized[13],\n serialized[14],\n serialized[15],\n ]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n pub fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer,\n ),\n )\n }\n}\n"
|
|
5721
|
+
"170": {
|
|
5722
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr",
|
|
5723
|
+
"source": "use crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder},\n note_interface::{NoteInterface, NullifiableNote},\n note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request,\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\nuse dep::protocol_types::constants::{\n GET_NOTES_ORACLE_RETURN_LENGTH, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n};\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32>(context: PrivateContext, storage_slot: Field, note: Note)\nwhere\n Note: NoteInterface<N>,\n{\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>,\n) {\n for i in 0..selects.len() {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>,\n) {\n for i in 0..sorts.len() {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (Note, Field)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note = unsafe { get_note_internal(storage_slot) };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n ) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS,\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n ) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::array::collapse(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> =\n BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32>(storage_slot: Field) -> Note\nwhere\n Note: NoteInterface<N>,\n{\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length,\n )[0]\n .expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteInterface<N>,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\npub unconstrained fn view_notes<Note, let N: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>,\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE>\nwhere\n Note: NoteInterface<N>,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len() {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len() {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n"
|
|
5749
5724
|
},
|
|
5750
|
-
"
|
|
5751
|
-
"path": "/usr/src/noir-projects/
|
|
5752
|
-
"source": "
|
|
5725
|
+
"172": {
|
|
5726
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr",
|
|
5727
|
+
"source": "/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission<Note> {\n pub note: Note,\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"
|
|
5728
|
+
},
|
|
5729
|
+
"175": {
|
|
5730
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr",
|
|
5731
|
+
"source": "use crate::utils::to_bytes::{arr_to_be_bytes_arr, str_to_be_bytes_arr};\nuse dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__FUNCTION_ARGS, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__SECRET_HASH,\n },\n hash::{poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice, sha256_to_field},\n point::Point,\n traits::Hash,\n};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<let N: u32>(\n contract_address: AztecAddress,\n log: [u8; N],\n) -> Field {\n let mut hash_bytes = [0; N + 36];\n // Address is converted to 32 bytes in ts\n let address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (N as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..N {\n hash_bytes[36 + i] = log[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_l1_to_l2_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field,\n leaf_index: Field,\n) -> Field {\n let mut hash_bytes = [0 as u8; 224];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n let leaf_index_bytes: [u8; 32] = leaf_index.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n hash_bytes[i + 192] = leaf_index_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret\npub fn compute_l1_to_l2_message_nullifier(message_hash: Field, secret: Field) -> Field {\n poseidon2_hash_with_separator([message_hash, secret], GENERATOR_INDEX__MESSAGE_NULLIFIER)\n}\n\npub struct ArgsHasher {\n pub fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd,\n ];\n let serialized_log = arr_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = AztecAddress::from_field(\n 0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303,\n );\n let serialized_log: [u8; 32] = log.to_field().to_be_bytes();\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"dummy\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"Hello this is a string\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"
|
|
5753
5732
|
},
|
|
5754
|
-
"
|
|
5733
|
+
"176": {
|
|
5734
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr",
|
|
5735
|
+
"source": "use crate::{\n abis::function_selector::FunctionSelector,\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n MAX_FIELD_VALUE,\n },\n contract_class_id::ContractClassId,\n hash::{poseidon2_hash_with_separator, private_functions_root_from_siblings},\n merkle_tree::membership::MembershipWitness,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse ec::{pow, sqrt};\nuse std::embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key};\n\n// Aztec address\npub struct AztecAddress {\n pub inner: Field,\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn to_address_point(self) -> AddressPoint {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // TODO (#8970): Handle cases where we cannot recover a point from an address\n let mut y = sqrt(y_squared);\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secrect can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_private_function(\n function_selector: FunctionSelector,\n function_vk_hash: Field,\n function_leaf_membership_witness: MembershipWitness<FUNCTION_TREE_HEIGHT>,\n contract_class_artifact_hash: Field,\n contract_class_public_bytecode_commitment: Field,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let private_functions_root = private_functions_root_from_siblings(\n function_selector,\n function_vk_hash,\n function_leaf_membership_witness.leaf_index,\n function_leaf_membership_witness.sibling_path,\n );\n\n let contract_class_id = ContractClassId::compute(\n contract_class_artifact_hash,\n private_functions_root,\n contract_class_public_bytecode_commitment,\n );\n\n // Compute contract address using the preimage which includes the class_id.\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\n}\n\n#[test]\nfn compute_preaddress_from_partial_and_pub_keys() {\n let pre_address = poseidon2_hash_with_separator([1, 2], GENERATOR_INDEX__CONTRACT_ADDRESS_V1);\n let expected_computed_preaddress_from_partial_and_pubkey =\n 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(pre_address == expected_computed_preaddress_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"
|
|
5736
|
+
},
|
|
5737
|
+
"177": {
|
|
5755
5738
|
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr",
|
|
5756
5739
|
"source": "use crate::{\n address::aztec_address::AztecAddress, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct SaltedInitializationHash {\n pub inner: Field,\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(poseidon2_hash_with_separator(\n [salt, initialization_hash, deployer.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"
|
|
5757
5740
|
},
|
|
5758
|
-
"
|
|
5741
|
+
"181": {
|
|
5759
5742
|
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr",
|
|
5760
5743
|
"source": "use crate::{\n address::{aztec_address::AztecAddress, salted_initialization_hash::SaltedInitializationHash},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Serialize, ToField},\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct PartialAddress {\n pub inner: Field,\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress,\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer),\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n ) -> Self {\n PartialAddress::from_field(poseidon2_hash_with_separator(\n [contract_class_id.to_field(), salted_initialization_hash.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"
|
|
5761
5744
|
},
|
|
5762
|
-
"
|
|
5763
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5764
|
-
"source": "use crate::
|
|
5745
|
+
"182": {
|
|
5746
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr",
|
|
5747
|
+
"source": "use crate::traits::{Deserialize, Serialize};\nuse super::{address::aztec_address::AztecAddress, hash::poseidon2_hash};\nuse std::meta::derive;\n\npub global INDEXED_TAGGING_SECRET_LENGTH: u32 = 2;\n\n#[derive(Serialize, Deserialize)]\npub struct IndexedTaggingSecret {\n secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash([self.secret, recipient.to_field(), self.index as Field])\n }\n}\n"
|
|
5765
5748
|
},
|
|
5766
|
-
"
|
|
5767
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5768
|
-
"source": "use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n log_hash::{LogHash, ScopedLogHash},\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n private_log::{PrivateLog, PrivateLogData},\n side_effect::scoped::Scoped,\n },\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc,\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [tx_hash, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), unique_note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped<PrivateLogData>) -> PrivateLog {\n if private_log.contract_address.is_zero() {\n private_log.inner.log\n } else {\n let mut fields = private_log.inner.log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog { fields }\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs =\n [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage())\n}\n\npub fn silo_l2_to_l1_message(\n msg: ScopedL2ToL1Message,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\npub fn compute_tx_logs_hash<let N: u32>(logs: [LogHash; N]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; N * 32];\n for offset in 0..N {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3),\n },\n version,\n chainId,\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"
|
|
5749
|
+
"183": {
|
|
5750
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr",
|
|
5751
|
+
"source": "use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress},\n constants::CONTRACT_INSTANCE_LENGTH,\n contract_class_id::ContractClassId,\n public_keys::PublicKeys,\n traits::{Deserialize, Hash, Serialize},\n};\n\npub struct ContractInstance {\n pub salt: Field,\n pub deployer: AztecAddress,\n pub contract_class_id: ContractClassId,\n pub initialization_hash: Field,\n pub public_keys: PublicKeys,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys.eq(other.public_keys)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n let public_keys_serialized = self.public_keys.serialize();\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n public_keys_serialized[0],\n public_keys_serialized[1],\n public_keys_serialized[2],\n public_keys_serialized[3],\n public_keys_serialized[4],\n public_keys_serialized[5],\n public_keys_serialized[6],\n public_keys_serialized[7],\n public_keys_serialized[8],\n public_keys_serialized[9],\n public_keys_serialized[10],\n public_keys_serialized[11],\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys: PublicKeys::deserialize([\n serialized[4],\n serialized[5],\n serialized[6],\n serialized[7],\n serialized[8],\n serialized[9],\n serialized[10],\n serialized[11],\n serialized[12],\n serialized[13],\n serialized[14],\n serialized[15],\n ]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n pub fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer,\n ),\n )\n }\n}\n"
|
|
5769
5752
|
},
|
|
5770
|
-
"
|
|
5753
|
+
"209": {
|
|
5771
5754
|
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr",
|
|
5772
5755
|
"source": "use crate::{point::Point, traits::{Deserialize, Empty, Serialize}};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pub pk_m: Point,\n pub sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [self.pk_m.x, self.pk_m.y, self.pk_m.is_infinite as Field, self.sk_app]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool },\n sk_app: fields[3],\n }\n }\n}\n"
|
|
5773
5756
|
},
|
|
5774
|
-
"
|
|
5775
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr",
|
|
5776
|
-
"source": "use crate::traits::{Deserialize, Serialize};\nuse super::{address::aztec_address::AztecAddress, hash::poseidon2_hash};\nuse std::meta::derive;\n\npub global INDEXED_TAGGING_SECRET_LENGTH: u32 = 2;\n\n#[derive(Serialize, Deserialize)]\npub struct IndexedTaggingSecret {\n secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash([self.secret, recipient.to_field(), self.index as Field])\n }\n}\n"
|
|
5777
|
-
},
|
|
5778
|
-
"308": {
|
|
5757
|
+
"241": {
|
|
5779
5758
|
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr",
|
|
5780
5759
|
"source": "pub struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self) -> [Field; K] {\n let mut result = [0; K];\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array());\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"
|
|
5781
5760
|
},
|
|
5761
|
+
"243": {
|
|
5762
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr",
|
|
5763
|
+
"source": "pub mod assert_array_appended;\npub mod assert_array_prepended;\npub mod assert_combined_array;\npub mod assert_combined_transformed_array;\npub mod assert_exposed_sorted_transformed_value_array;\npub mod assert_sorted_array;\npub mod assert_sorted_transformed_value_array;\npub mod assert_split_sorted_transformed_value_arrays;\npub mod assert_split_transformed_value_arrays;\npub mod get_sorted_result;\npub mod get_sorted_tuple;\npub mod sort_by;\npub mod sort_by_counter;\n\n// Re-exports.\npub use assert_array_appended::{\n assert_array_appended, assert_array_appended_and_scoped, assert_array_appended_reversed,\n assert_array_appended_scoped,\n};\npub use assert_array_prepended::assert_array_prepended;\npub use assert_combined_array::{assert_combined_array, combine_arrays};\npub use assert_combined_transformed_array::{\n assert_combined_transformed_array, combine_and_transform_arrays,\n};\npub use assert_exposed_sorted_transformed_value_array::{\n assert_exposed_sorted_transformed_value_array,\n get_order_hints::{get_order_hints_asc, get_order_hints_desc, OrderHint},\n};\npub use assert_sorted_array::assert_sorted_array;\npub use assert_sorted_transformed_value_array::{\n assert_sorted_transformed_value_array, assert_sorted_transformed_value_array_capped_size,\n};\npub use assert_split_sorted_transformed_value_arrays::{\n assert_split_sorted_transformed_value_arrays_asc,\n assert_split_sorted_transformed_value_arrays_desc,\n get_split_order_hints::{get_split_order_hints_asc, get_split_order_hints_desc, SplitOrderHints},\n};\npub use assert_split_transformed_value_arrays::assert_split_transformed_value_arrays;\npub use get_sorted_result::{get_sorted_result, SortedResult};\npub use sort_by_counter::{sort_by_counter_asc, sort_by_counter_desc};\n\nuse crate::traits::{Empty, is_empty};\n\npub fn subarray<let SRC_LEN: u32, let DST_LEN: u32>(\n src: [Field; SRC_LEN],\n offset: u32,\n) -> [Field; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"offset too large\");\n\n let mut dst: [Field; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\n// Helper function to convert a validated array to BoundedVec.\n// Important: Only use it for validated arrays: validate_array(array) should be true.\npub unconstrained fn array_to_bounded_vec<T, let N: u32>(array: [T; N]) -> BoundedVec<T, N>\nwhere\n T: Empty + Eq,\n{\n let len = array_length(array);\n BoundedVec::from_parts_unchecked(array, len)\n}\n\npub unconstrained fn find_index_hint<T, let N: u32, Env>(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> u32 {\n let mut index = N;\n for i in 0..N {\n if (index == N) & find(array[i]) {\n index = i;\n }\n }\n index\n}\n\n// Routine which validates that all zero values of an array form a contiguous region at the end, i.e.,\n// of the form: [*,*,*...,0,0,0,0] where any * is non-zero. Note that a full array of non-zero values is\n// valid.\npub fn validate_array<T, let N: u32>(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let mut seen_empty = false;\n let mut length = 0;\n for i in 0..N {\n if is_empty(array[i]) {\n seen_empty = true;\n } else {\n assert(seen_empty == false, \"invalid array\");\n length += 1;\n }\n }\n length\n}\n\n// Helper function to count the number of non-empty elements in a validated array.\n// Important: Only use it for validated arrays: validate_array(array) should be true.\npub fn array_length<T, let N: u32>(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let length = unsafe { find_index_hint(array, |elem: T| is_empty(elem)) };\n if length != 0 {\n assert(!is_empty(array[length - 1]));\n }\n if length != N {\n assert(is_empty(array[length]));\n }\n length\n}\n\npub fn array_concat<T, let N: u32, let M: u32>(array1: [T; N], array2: [T; M]) -> [T; N + M] {\n let mut result = [array1[0]; N + M];\n for i in 1..N {\n result[i] = array1[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n}\n\npub fn array_merge<T, let N: u32>(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty + Eq,\n{\n let mut result: [T; N] = [T::empty(); N];\n let mut i = 0;\n for elem in array1 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n for elem in array2 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n result\n}\n\npub fn check_permutation<T, let N: u32>(\n original_array: [T; N],\n permuted_array: [T; N],\n original_indexes: [u32; N],\n)\nwhere\n T: Eq + Empty,\n{\n let mut seen_value = [false; N];\n for i in 0..N {\n let index = original_indexes[i];\n let original_value = original_array[index];\n assert(permuted_array[i].eq(original_value), \"Invalid index\");\n assert(!seen_value[index], \"Duplicated index\");\n seen_value[index] = true;\n }\n}\n\n#[test]\nfn smoke_validate_array() {\n let valid_array: [Field; 0] = [];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [0];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [3];\n assert(validate_array(valid_array) == 1);\n\n let valid_array = [1, 2, 3];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(validate_array(valid_array) == 3);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case0() {\n let invalid_array = [0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case1() {\n let invalid_array = [1, 0, 0, 1, 0];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case2() {\n let invalid_array = [0, 0, 0, 0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test]\nfn test_empty_array_length() {\n assert_eq(array_length([0]), 0);\n assert_eq(array_length([0, 0, 0]), 0);\n}\n\n#[test]\nfn test_array_length() {\n assert_eq(array_length([123]), 1);\n assert_eq(array_length([123, 0, 0]), 1);\n assert_eq(array_length([123, 456]), 2);\n assert_eq(array_length([123, 456, 0]), 2);\n}\n\n#[test]\nfn test_array_length_invalid_arrays() {\n // Result can be misleading (but correct) for invalid arrays.\n assert_eq(array_length([0, 0, 123]), 0);\n assert_eq(array_length([0, 123, 0]), 0);\n assert_eq(array_length([0, 123, 456]), 0);\n assert_eq(array_length([123, 0, 456]), 1);\n}\n\n#[test]\nfn find_index_greater_than_min() {\n let values = [10, 20, 30, 40];\n let min = 22;\n let index = unsafe { find_index_hint(values, |v: Field| min.lt(v)) };\n assert_eq(index, 2);\n}\n\n#[test]\nfn find_index_not_found() {\n let values = [10, 20, 30, 40];\n let min = 100;\n let index = unsafe { find_index_hint(values, |v: Field| min.lt(v)) };\n assert_eq(index, 4);\n}\n\n#[test]\nfn test_array_concat() {\n let array0 = [1, 2, 3];\n let array1 = [4, 5];\n let concated = array_concat(array0, array1);\n assert_eq(concated, [1, 2, 3, 4, 5]);\n}\n\n#[test]\nfn check_permutation_basic_test() {\n let original_array = [1, 2, 3];\n let permuted_array = [3, 1, 2];\n let indexes = [2, 0, 1];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Duplicated index\")]\nfn check_permutation_duplicated_index() {\n let original_array = [0, 1, 0];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 0];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Invalid index\")]\nfn check_permutation_invalid_index() {\n let original_array = [0, 1, 2];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 2];\n check_permutation(original_array, permuted_array, indexes);\n}\n"
|
|
5764
|
+
},
|
|
5765
|
+
"271": {
|
|
5766
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr",
|
|
5767
|
+
"source": "pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{hash::poseidon2_hash, traits::{Deserialize, Empty, Hash, Serialize}};\n\npub global POINT_LENGTH: u32 = 3;\n\nimpl Serialize<POINT_LENGTH> for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize<POINT_LENGTH> for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"
|
|
5768
|
+
},
|
|
5769
|
+
"309": {
|
|
5770
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr",
|
|
5771
|
+
"source": "/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper<let M: u32, let N: u32>(\n msg: str<M>,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"
|
|
5772
|
+
},
|
|
5782
5773
|
"310": {
|
|
5783
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5784
|
-
"source": "
|
|
5774
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr",
|
|
5775
|
+
"source": "use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n point::POINT_LENGTH,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse std::default::Default;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n pub npk_m: NpkM,\n pub ivpk_m: IvpkM,\n pub ovpk_m: OvpkM,\n pub tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n pub inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field,\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: serialized[0],\n y: serialized[1],\n is_infinite: serialized[2] as bool,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: serialized[3],\n y: serialized[4],\n is_infinite: serialized[5] as bool,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: serialized[6],\n y: serialized[7],\n is_infinite: serialized[8] as bool,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: serialized[9],\n y: serialized[10],\n is_infinite: serialized[11] as bool,\n },\n },\n }\n }\n}\n\npub struct AddressPoint {\n pub inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash = 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"
|
|
5776
|
+
},
|
|
5777
|
+
"311": {
|
|
5778
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr",
|
|
5779
|
+
"source": "use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n log_hash::{LogHash, ScopedLogHash},\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n private_log::{PrivateLog, PrivateLogData},\n side_effect::scoped::Scoped,\n },\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc,\n};\nuse super::utils::{arrays::array_concat, field::field_from_bytes};\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [tx_hash, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique note hashes from siloed note hashes\npub fn compute_unique_siloed_note_hash(\n siloed_note_hash: Field,\n tx_hash: Field,\n note_index_in_tx: u32,\n) -> Field {\n if siloed_note_hash == 0 {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n compute_unique_note_hash(nonce, siloed_note_hash)\n }\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_note_hash(note_hash.contract_address, note_hash.value())\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped<PrivateLogData>) -> PrivateLog {\n if private_log.contract_address.is_zero() {\n private_log.inner.log\n } else {\n let mut fields = private_log.inner.log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog { fields }\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs =\n [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage())\n}\n\npub fn silo_l2_to_l1_message(\n msg: ScopedL2ToL1Message,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\npub fn compute_tx_logs_hash<let N: u32>(logs: [LogHash; N]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; N * 32];\n for offset in 0..N {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n let inputs_with_separator = array_concat([separator.to_field()], inputs);\n poseidon2_hash(inputs_with_separator)\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n let mut fields = [0; (N + 30) / 31];\n let mut field_index = 0;\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n fields[field_index] = field_from_bytes(current_field, false);\n current_field = [0; 31];\n field_index += 1;\n }\n }\n if field_index != fields.len() {\n fields[field_index] = field_from_bytes(current_field, false);\n }\n poseidon2_hash(fields)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3),\n },\n version,\n chainId,\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"
|
|
5785
5780
|
},
|
|
5786
5781
|
"317": {
|
|
5787
|
-
"path": "/root/nargo/github.com/noir-lang/
|
|
5782
|
+
"path": "/root/nargo/github.com/noir-lang/ec/v0.1.2/src/lib.nr",
|
|
5788
5783
|
"source": "// Elliptic curve implementation\n// Overview\n// ========\n// The following three elliptic curve representations are admissible:\npub mod tecurve; // Twisted Edwards curves\npub mod swcurve; // Elliptic curves in Short Weierstrass form\npub mod montcurve; // Montgomery curves\npub mod consts; // Commonly used curve presets\n//\n// Note that Twisted Edwards and Montgomery curves are (birationally) equivalent, so that\n// they may be freely converted between one another, whereas Short Weierstrass curves are\n// more general. Diagramatically:\n//\n// tecurve == montcurve `subset` swcurve\n//\n// Each module is further divided into two submodules, 'affine' and 'curvegroup', depending\n// on the preferred coordinate representation. Affine coordinates are none other than the usual\n// two-dimensional Cartesian coordinates used in the definitions of these curves, whereas\n// 'CurveGroup' coordinates (terminology borrowed from Arkworks, whose conventions we try\n// to follow) are special coordinate systems with respect to which the group operations may be\n// implemented more efficiently, usually by means of an appropriate choice of projective coordinates.\n//\n// In each of these submodules, there is a Point struct and a Curve struct, the former\n// representing a point in the coordinate system and the latter a curve configuration.\n//\n// Points\n// ======\n// Points may be instantiated using the associated function `new`, which takes coordinates\n// as its arguments. For instance,\n//\n// `let p = swcurve::Point::new(1,1);`\n//\n// The additive identity may be constructed by a call to the associated function `zero` of no\n// arguments:\n//\n// `let zero = swcurve::Point::zero();`\n//\n// Points may be tested for equality by calling the method `eq`:\n//\n// `let pred = p.eq(zero);`\n//\n// There is also the method `is_zero` to explicitly check whether a point is the additive identity:\n//\n// `constrain pred == p.is_zero();`\n//\n// Points may be negated by calling the `negate` method and converted to CurveGroup (or affine)\n// coordinates by calling the `into_group` (resp. `into_affine`) method on them. Finally,\n// Points may be freely mapped between their respective Twisted Edwards and Montgomery\n// representations by calling the `into_montcurve` or `into_tecurve` methods. For mappings\n// between Twisted Edwards/Montgomery curves and Short Weierstrass curves, see the Curve section\n// below, as the underlying mappings are those of curves rather than ambient spaces.\n// As a rule, Points in affine (or CurveGroup) coordinates are mapped to Points in affine\n// (resp. CurveGroup) coordinates.\n//\n// Curves\n// ======\n// A curve configuration (Curve) is completely determined by the Field coefficients of its defining\n// equation (a and b in the case of swcurve, a and d in the case of tecurve, and j and k in\n// the case of montcurve) together with a generator (`gen`) in the corresponding coordinate system.\n// For example, the Baby Jubjub curve configuration as defined in ERC-2494 may be instantiated as a Twisted\n// Edwards curve in affine coordinates as follows:\n//\n// `let bjj_affine = tecurve::Curve::new(168700, 168696, tecurve::Point::new(995203441582195749578291179787384436505546430278305826713579947235728471134,5472060717959818805561601436314318772137091100104008585924551046643952123905));`\n//\n// The `contains` method may be used to check whether a Point lies on a given curve:\n//\n// `constrain bjj_affine.contains(tecurve::Point::zero());`\n//\n// The elliptic curve group's addition operation is exposed as the `add` method, e.g.\n//\n// `let p = bjj_affine.add(bjj_affine.gen, bjj_affine.gen);`\n//\n// subtraction as the `subtract` method, e.g.\n//\n// `constrain tecurve::Point::zero().eq(bjj_affine.subtract(bjj_affine.gen, bjj_affine.gen));`\n//\n// scalar multiplication as the `mul` method, where the scalar is assumed to be a Field* element, e.g.\n//\n// `constrain tecurve::Point::zero().eq(bjj_affine.mul(2, tecurve::Point::zero());`\n//\n// There is a scalar multiplication method (`bit_mul`) provided where the scalar input is expected to be\n// an array of bits (little-endian convention), as well as a multi-scalar multiplication method** (`msm`)\n// which takes an array of Field elements and an array of elliptic curve points as arguments, both assumed\n// to be of the same length.\n//\n// Curve configurations may be converted between different coordinate representations by calling the `into_group`\n// and `into_affine` methods on them, e.g.\n//\n// `let bjj_curvegroup = bjj_affine.into_group();`\n//\n// Curve configurations may also be converted between different curve representations by calling the `into_swcurve`,\n// `into_montcurve` and `into_tecurve` methods subject to the relation between the curve representations mentioned\n// above. Note that it is possible to map Points from a Twisted Edwards/Montgomery curve to the corresponding\n// Short Weierstrass representation and back, and the methods to do so are exposed as `map_into_swcurve` and\n// `map_from_swcurve`, which each take one argument, the point to be mapped.\n//\n// Curve maps\n// ==========\n// There are a few different ways of mapping Field elements to elliptic curves. Here we provide the simplified\n// Shallue-van de Woestijne-Ulas and Elligator 2 methods, the former being applicable to all curve types\n// provided above subject to the constraint that the coefficients of the corresponding Short Weierstrass curve satisfies\n// a*b != 0 and the latter being applicable to Montgomery and Twisted Edwards curves subject to the constraint that\n// the coefficients of the corresponding Montgomery curve satisfy j*k != 0 and (j^2 - 4)/k^2 is non-square.\n//\n// The simplified Shallue-van de Woestijne-Ulas method is exposed as the method `swu_map` on the Curve configuration and\n// depends on two parameters, a Field element z != -1 for which g(x) - z is irreducible over Field and g(b/(z*a)) is\n// square, where g(x) = x^3 + a*x + b is the right-hand side of the defining equation of the corresponding Short\n// Weierstrass curve, and a Field element u to be mapped onto the curve. For example, in the case of bjj_affine above,\n// it may be determined using the scripts provided at <https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve> that z = 5.\n//\n// The Elligator 2 method is exposed as the method `elligator2_map` on the Curve configurations of Montgomery and\n// Twisted Edwards curves. Like the simplified SWU method above, it depends on a certain non-square element of Field,\n// but this element need not satisfy any further conditions, so it is included as the (Field-dependent) constant\n//`ZETA` below. Thus, the `elligator2_map` method depends only on one parameter, the Field element to be mapped onto\n// the curve.\n//\n// For details on all of the above in the context of hashing to elliptic curves, see <https://datatracker.ietf.org/doc/id/draft-irtf-cfrg-hash-to-curve-06.html>.\n//\n//\n// *TODO: Replace Field with Bigint.\n// **TODO: Support arrays of structs to make this work.\n// Field-dependent constant ZETA = a non-square element of Field\n// Required for Elligator 2 map\n// TODO: Replace with built-in constant.\nglobal ZETA: Field = 5;\n// Field-dependent constants for Tonelli-Shanks algorithm (see sqrt function below)\n// TODO: Possibly make this built-in.\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n// Higher-order version of scalar multiplication\n// TODO: Make this work so that the submodules' bit_mul may be defined in terms of it.\n//fn bit_mul<T,N>(add: fn(T,T) -> T, e: T, bits: [u1; N], p: T) -> T {\n// let mut out = e;\n// let n = bits.len();\n//\n// for i in 0..n {\n// out = add(\n// add(out, out),\n// if(bits[n - i - 1] == 0) {e} else {p});\n// }\n//\n// out\n//}\n// TODO: Make this built-in.\npub fn safe_inverse(x: Field) -> Field {\n if x == 0 {\n 0\n } else {\n 1 / x\n }\n}\n// Boolean indicating whether Field element is a square, i.e. whether there exists a y in Field s.t. x = y*y.\npub fn is_square(x: Field) -> bool {\n let v = pow(x, 0 - 1 / 2);\n\n v * (v - 1) == 0\n}\n// Power function of two Field arguments of arbitrary size.\n// Adapted from std::field::pow_32.\npub fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\npub fn sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\nmod tests {\n use crate::montcurve::affine::Point as MGaffine;\n use crate::montcurve::curvegroup::Point as MG;\n use crate::swcurve::affine::Point as SWGaffine;\n use crate::swcurve::curvegroup::Point as SWG;\n use crate::tecurve::affine::Curve as AffineCurve;\n use crate::tecurve::affine::Point as Gaffine;\n use crate::tecurve::curvegroup::Point as G;\n\n #[test]\n fn smoke_test() {\n // Tests may be checked against https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve/tree/main/poc\n // Define Baby Jubjub (ERC-2494) parameters in affine representation\n let bjj_affine = AffineCurve::new(\n 168700,\n 168696,\n Gaffine::new(\n 995203441582195749578291179787384436505546430278305826713579947235728471134,\n 5472060717959818805561601436314318772137091100104008585924551046643952123905,\n ),\n );\n // Test addition\n let p1_affine = Gaffine::new(\n 17777552123799933955779906779655732241715742912184938656739573121738514868268,\n 2626589144620713026669568689430873010625803728049924121243784502389097019475,\n );\n let p2_affine = Gaffine::new(\n 16540640123574156134436876038791482806971768689494387082833631921987005038935,\n 20819045374670962167435360035096875258406992893633759881276124905556507972311,\n );\n\n let p3_affine = bjj_affine.add(p1_affine, p2_affine);\n assert(p3_affine.eq(Gaffine::new(\n 7916061937171219682591368294088513039687205273691143098332585753343424131937,\n 14035240266687799601661095864649209771790948434046947201833777492504781204499,\n )));\n // Test scalar multiplication\n let p4_affine = bjj_affine.mul(2, p1_affine);\n assert(p4_affine.eq(Gaffine::new(\n 6890855772600357754907169075114257697580319025794532037257385534741338397365,\n 4338620300185947561074059802482547481416142213883829469920100239455078257889,\n )));\n assert(p4_affine.eq(bjj_affine.bit_mul([0, 1], p1_affine)));\n // Test subtraction\n let p5_affine = bjj_affine.subtract(p3_affine, p3_affine);\n assert(p5_affine.eq(Gaffine::zero()));\n // Check that these points are on the curve\n assert(\n bjj_affine.contains(bjj_affine.gen)\n & bjj_affine.contains(p1_affine)\n & bjj_affine.contains(p2_affine)\n & bjj_affine.contains(p3_affine)\n & bjj_affine.contains(p4_affine)\n & bjj_affine.contains(p5_affine),\n );\n // Test CurveGroup equivalents\n let bjj = bjj_affine.into_group(); // Baby Jubjub\n let p1 = p1_affine.into_group();\n let p2 = p2_affine.into_group();\n let p3 = p3_affine.into_group();\n let p4 = p4_affine.into_group();\n let p5 = p5_affine.into_group();\n // Test addition\n assert(p3.eq(bjj.add(p1, p2)));\n // Test scalar multiplication\n assert(p4.eq(bjj.mul(2, p1)));\n assert(p4.eq(bjj.bit_mul([0, 1], p1)));\n // Test subtraction\n assert(G::zero().eq(bjj.subtract(p3, p3)));\n assert(p5.eq(G::zero()));\n // Check that these points are on the curve\n assert(\n bjj.contains(bjj.gen)\n & bjj.contains(p1)\n & bjj.contains(p2)\n & bjj.contains(p3)\n & bjj.contains(p4)\n & bjj.contains(p5),\n );\n // Test SWCurve equivalents of the above\n // First the affine representation\n let bjj_swcurve_affine = bjj_affine.into_swcurve();\n\n let p1_swcurve_affine = bjj_affine.map_into_swcurve(p1_affine);\n let p2_swcurve_affine = bjj_affine.map_into_swcurve(p2_affine);\n let p3_swcurve_affine = bjj_affine.map_into_swcurve(p3_affine);\n let p4_swcurve_affine = bjj_affine.map_into_swcurve(p4_affine);\n let p5_swcurve_affine = bjj_affine.map_into_swcurve(p5_affine);\n // Addition\n assert(p3_swcurve_affine.eq(bjj_swcurve_affine.add(p1_swcurve_affine, p2_swcurve_affine)));\n // Doubling\n assert(p4_swcurve_affine.eq(bjj_swcurve_affine.mul(2, p1_swcurve_affine)));\n assert(p4_swcurve_affine.eq(bjj_swcurve_affine.bit_mul([0, 1], p1_swcurve_affine)));\n // Subtraction\n assert(SWGaffine::zero().eq(bjj_swcurve_affine.subtract(\n p3_swcurve_affine,\n p3_swcurve_affine,\n )));\n assert(p5_swcurve_affine.eq(SWGaffine::zero()));\n // Check that these points are on the curve\n assert(\n bjj_swcurve_affine.contains(bjj_swcurve_affine.gen)\n & bjj_swcurve_affine.contains(p1_swcurve_affine)\n & bjj_swcurve_affine.contains(p2_swcurve_affine)\n & bjj_swcurve_affine.contains(p3_swcurve_affine)\n & bjj_swcurve_affine.contains(p4_swcurve_affine)\n & bjj_swcurve_affine.contains(p5_swcurve_affine),\n );\n // Then the CurveGroup representation\n let bjj_swcurve = bjj.into_swcurve();\n\n let p1_swcurve = bjj.map_into_swcurve(p1);\n let p2_swcurve = bjj.map_into_swcurve(p2);\n let p3_swcurve = bjj.map_into_swcurve(p3);\n let p4_swcurve = bjj.map_into_swcurve(p4);\n let p5_swcurve = bjj.map_into_swcurve(p5);\n // Addition\n assert(p3_swcurve.eq(bjj_swcurve.add(p1_swcurve, p2_swcurve)));\n // Doubling\n assert(p4_swcurve.eq(bjj_swcurve.mul(2, p1_swcurve)));\n assert(p4_swcurve.eq(bjj_swcurve.bit_mul([0, 1], p1_swcurve)));\n // Subtraction\n assert(SWG::zero().eq(bjj_swcurve.subtract(p3_swcurve, p3_swcurve)));\n assert(p5_swcurve.eq(SWG::zero()));\n // Check that these points are on the curve\n assert(\n bjj_swcurve.contains(bjj_swcurve.gen)\n & bjj_swcurve.contains(p1_swcurve)\n & bjj_swcurve.contains(p2_swcurve)\n & bjj_swcurve.contains(p3_swcurve)\n & bjj_swcurve.contains(p4_swcurve)\n & bjj_swcurve.contains(p5_swcurve),\n );\n // Test MontCurve conversions\n // First the affine representation\n let bjj_montcurve_affine = bjj_affine.into_montcurve();\n\n let p1_montcurve_affine = p1_affine.into_montcurve();\n let p2_montcurve_affine = p2_affine.into_montcurve();\n let p3_montcurve_affine = p3_affine.into_montcurve();\n let p4_montcurve_affine = p4_affine.into_montcurve();\n let p5_montcurve_affine = p5_affine.into_montcurve();\n // Addition\n assert(p3_montcurve_affine.eq(bjj_montcurve_affine.add(\n p1_montcurve_affine,\n p2_montcurve_affine,\n )));\n // Doubling\n assert(p4_montcurve_affine.eq(bjj_montcurve_affine.mul(2, p1_montcurve_affine)));\n assert(p4_montcurve_affine.eq(bjj_montcurve_affine.bit_mul([0, 1], p1_montcurve_affine)));\n // Subtraction\n assert(MGaffine::zero().eq(bjj_montcurve_affine.subtract(\n p3_montcurve_affine,\n p3_montcurve_affine,\n )));\n assert(p5_montcurve_affine.eq(MGaffine::zero()));\n // Check that these points are on the curve\n assert(\n bjj_montcurve_affine.contains(bjj_montcurve_affine.gen)\n & bjj_montcurve_affine.contains(p1_montcurve_affine)\n & bjj_montcurve_affine.contains(p2_montcurve_affine)\n & bjj_montcurve_affine.contains(p3_montcurve_affine)\n & bjj_montcurve_affine.contains(p4_montcurve_affine)\n & bjj_montcurve_affine.contains(p5_montcurve_affine),\n );\n // Then the CurveGroup representation\n let bjj_montcurve = bjj.into_montcurve();\n\n let p1_montcurve = p1_montcurve_affine.into_group();\n let p2_montcurve = p2_montcurve_affine.into_group();\n let p3_montcurve = p3_montcurve_affine.into_group();\n let p4_montcurve = p4_montcurve_affine.into_group();\n let p5_montcurve = p5_montcurve_affine.into_group();\n // Addition\n assert(p3_montcurve.eq(bjj_montcurve.add(p1_montcurve, p2_montcurve)));\n // Doubling\n assert(p4_montcurve.eq(bjj_montcurve.mul(2, p1_montcurve)));\n assert(p4_montcurve.eq(bjj_montcurve.bit_mul([0, 1], p1_montcurve)));\n // Subtraction\n assert(MG::zero().eq(bjj_montcurve.subtract(p3_montcurve, p3_montcurve)));\n assert(p5_montcurve.eq(MG::zero()));\n // Check that these points are on the curve\n assert(\n bjj_montcurve.contains(bjj_montcurve.gen)\n & bjj_montcurve.contains(p1_montcurve)\n & bjj_montcurve.contains(p2_montcurve)\n & bjj_montcurve.contains(p3_montcurve)\n & bjj_montcurve.contains(p4_montcurve)\n & bjj_montcurve.contains(p5_montcurve),\n );\n // Elligator 2 map-to-curve\n let ell2_pt_map = bjj_affine.elligator2_map(27);\n\n assert(ell2_pt_map.eq(MGaffine::new(\n 7972459279704486422145701269802978968072470631857513331988813812334797879121,\n 8142420778878030219043334189293412482212146646099536952861607542822144507872,\n )\n .into_tecurve()));\n // SWU map-to-curve\n let swu_pt_map = bjj_affine.swu_map(5, 27);\n\n assert(swu_pt_map.eq(bjj_affine.map_from_swcurve(SWGaffine::new(\n 2162719247815120009132293839392097468339661471129795280520343931405114293888,\n 5341392251743377373758788728206293080122949448990104760111875914082289313973,\n ))));\n }\n\n}\n"
|
|
5789
5784
|
},
|
|
5790
|
-
"334": {
|
|
5791
|
-
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/account.nr",
|
|
5792
|
-
"source": "use dep::aztec::{\n context::PrivateContext,\n hash::poseidon2_hash_with_separator,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n};\n\nuse crate::auth::{compute_authwit_message_hash, IS_VALID_SELECTOR};\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\n\npub struct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD,\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier =\n poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash,\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"
|
|
5793
|
-
},
|
|
5794
5785
|
"336": {
|
|
5795
|
-
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr",
|
|
5796
|
-
"source": "use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD,\n hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage()\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage()\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"
|
|
5797
|
-
},
|
|
5798
|
-
"337": {
|
|
5799
5786
|
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr",
|
|
5800
5787
|
"source": "use crate::entrypoint::function_call::FunctionCall;\nuse dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD,\n hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage()\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage()\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"
|
|
5801
5788
|
},
|
|
5789
|
+
"337": {
|
|
5790
|
+
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr",
|
|
5791
|
+
"source": "use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD,\n hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage()\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage()\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"
|
|
5792
|
+
},
|
|
5802
5793
|
"340": {
|
|
5794
|
+
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/account.nr",
|
|
5795
|
+
"source": "use dep::aztec::{\n context::PrivateContext,\n hash::poseidon2_hash_with_separator,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n};\n\nuse crate::auth::{compute_authwit_message_hash, IS_VALID_SELECTOR};\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\n\npub struct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD,\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier =\n poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash,\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"
|
|
5796
|
+
},
|
|
5797
|
+
"342": {
|
|
5803
5798
|
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr",
|
|
5804
5799
|
"source": "#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n *\n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\npub unconstrained fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"
|
|
5805
5800
|
},
|
|
5806
|
-
"
|
|
5801
|
+
"343": {
|
|
5807
5802
|
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr",
|
|
5808
5803
|
"source": "use dep::aztec::{context::{gas::GasOpts, PrivateContext, PublicContext}, hash::hash_args_array};\nuse dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n constants::{\n CANONICAL_AUTH_REGISTRY_ADDRESS, GENERATOR_INDEX__AUTHWIT_INNER,\n GENERATOR_INDEX__AUTHWIT_NULLIFIER, GENERATOR_INDEX__AUTHWIT_OUTER,\n },\n hash::poseidon2_hash_with_separator,\n};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR: Field = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` has authorized the current call with a valid authentication witness\n *\n * Compute the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then make a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that has allegedly authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([\n context.msg_sender().to_field(),\n context.selector().to_field(),\n context.args_hash,\n ]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that has allegedly authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(\n context: &mut PrivateContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field,\n) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context\n .static_call_private_function(\n on_behalf_of,\n comptime { FunctionSelector::from_signature(\"verify_private_authwit(Field)\") },\n [inner_hash],\n )\n .unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allows the same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` has authorized the current call in the authentication registry\n *\n * Compute the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then make a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that has allegedly authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub unconstrained fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n) {\n let inner_hash = compute_inner_authwit_hash([\n (*context).msg_sender().to_field(),\n (*context).selector().to_field(),\n (*context).get_args_hash(),\n ]);\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` has authorized a specific `inner_hash` in the authentication registry\n *\n * Compute the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then make a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that has allegedly authorized the `inner_hash`\n */\npub unconstrained fn assert_inner_hash_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field,\n) {\n let results: [Field] = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"consume((Field),Field)\") },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default(),\n );\n assert(results.len() == 1, \"Invalid response from registry\");\n assert(results[0] == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N],\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash =\n compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computes the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that has authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [consumer.to_field(), chain_id, version, inner_hash],\n GENERATOR_INDEX__AUTHWIT_OUTER,\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub unconstrained fn set_authorized(\n context: &mut PublicContext,\n message_hash: Field,\n authorize: bool,\n) {\n let res = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"set_authorized(Field,bool)\") },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default(),\n );\n assert(res.len() == 0);\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub unconstrained fn set_reject_all(context: &mut PublicContext, reject: bool) {\n let res = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"set_reject_all(bool)\") },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default(),\n );\n assert(res.len() == 0);\n}\n"
|
|
5809
5804
|
},
|
|
5810
|
-
"
|
|
5805
|
+
"398": {
|
|
5811
5806
|
"path": "/usr/src/noir-projects/noir-contracts/contracts/ecdsa_public_key_note/src/lib.nr",
|
|
5812
5807
|
"source": "use dep::aztec::prelude::{NoteHeader, NoteInterface, NullifiableNote, PrivateContext};\n\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::{get_nsk_app, get_public_keys},\n protocol_types::{address::AztecAddress, constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note_custom_interface, generators::Ga1 as Gx_1, generators::Ga2 as Gx_2,\n generators::Ga3 as Gy_1, generators::Ga4 as Gy_2, generators::Ga5 as G_owner, generators::G_slot\n};\n\nuse std::hash::from_field_unsafe;\n\nglobal ECDSA_PUBLIC_KEY_NOTE_LEN: u32 = 5;\n\n// Stores an ECDSA public key composed of two 32-byte elements\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note_custom_interface]\npub struct EcdsaPublicKeyNote {\n x: [u8; 32],\n y: [u8; 32],\n owner: AztecAddress,\n}\n\nimpl NoteInterface<ECDSA_PUBLIC_KEY_NOTE_LEN> for EcdsaPublicKeyNote {\n // Cannot use the automatic serialization since x and y don't fit. Serialize the note as 5 fields where:\n // [0] = x[0..31] (upper bound excluded)\n // [1] = x[31]\n // [2] = y[0..31]\n // [3] = y[31]\n // [4] = owner\n fn serialize_content(self) -> [Field; ECDSA_PUBLIC_KEY_NOTE_LEN] {\n let mut x: Field = 0;\n let mut y: Field = 0;\n let mut mul: Field = 1;\n\n for i in 1..32 {\n let byte_x: Field = self.x[31 - i] as Field;\n x = x + (byte_x * mul);\n let byte_y: Field = self.y[31 - i] as Field;\n y = y + (byte_y * mul);\n mul *= 256;\n }\n\n let last_x = self.x[31] as Field;\n let last_y = self.y[31] as Field;\n\n [x, last_x, y, last_y, self.owner.to_field()]\n }\n\n // Cannot use the automatic deserialization for the aforementioned reasons\n fn deserialize_content(serialized_note: [Field; ECDSA_PUBLIC_KEY_NOTE_LEN]) -> EcdsaPublicKeyNote {\n let mut x: [u8; 32] = [0; 32];\n let mut y: [u8; 32] = [0; 32];\n\n let part_x:[u8; 32] = serialized_note[0].to_be_bytes();\n for i in 0..31 {\n x[i] = part_x[i + 1];\n }\n x[31] = serialized_note[1].to_be_bytes::<32>()[31];\n\n let part_y:[u8; 32] = serialized_note[2].to_be_bytes();\n for i in 0..31 {\n y[i] = part_y[i + 1];\n }\n y[31] = serialized_note[3].to_be_bytes::<32>()[31];\n\n EcdsaPublicKeyNote { x, y, owner: AztecAddress::from_field(serialized_note[4]), header: NoteHeader::empty() }\n }\n\n fn to_be_bytes(self, storage_slot: Field) -> [u8; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64] = [0; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64];\n\n let storage_slot_bytes: [u8; 32] = storage_slot.to_be_bytes();\n let note_type_id_bytes: [u8; 32] = EcdsaPublicKeyNote::get_note_type_id().to_be_bytes();\n\n for i in 0..32 {\n buffer[i] = storage_slot_bytes[i];\n buffer[32 + i] = note_type_id_bytes[i];\n }\n\n for i in 0..serialized_note.len() {\n let bytes: [u8; 32] = serialized_note[i].to_be_bytes();\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n\n fn get_note_type_id() -> Field {\n comptime\n {\n let bytes = \"EcdsaPublicKeyNote\".as_bytes();\n let hash = aztec::protocol_types::hash::poseidon2_hash_bytes(bytes);\n let hash_bytes = hash.to_be_bytes::<4>();\n aztec::protocol_types::utils::field::field_from_bytes(hash_bytes, true)\n }\n }\n\n fn get_header(self) -> NoteHeader {\n self.header\n }\n\n fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n fn compute_note_hash(self) -> Field {\n let serialized = self.serialize_content();\n std::embedded_curve_ops::multi_scalar_mul(\n [Gx_1, Gx_2, Gy_1, Gy_2, G_owner, G_slot],\n [\n from_field_unsafe(serialized[0]),\n from_field_unsafe(serialized[1]),\n from_field_unsafe(serialized[2]),\n from_field_unsafe(serialized[3]),\n from_field_unsafe(serialized[4]),\n from_field_unsafe(self.get_header().storage_slot)\n ]\n ).x\n }\n}\n\nimpl NullifiableNote for EcdsaPublicKeyNote {\n\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let owner_npk_m_hash = get_public_keys(self.owner).npk_m.hash();\n let secret = context.request_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let owner_npk_m_hash = get_public_keys(self.owner).npk_m.hash();\n let secret = get_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl EcdsaPublicKeyNote {\n pub fn new(x: [u8; 32], y: [u8; 32], owner: AztecAddress) -> Self {\n EcdsaPublicKeyNote { x, y, owner, header: NoteHeader::empty() }\n }\n}\n"
|
|
5813
5808
|
},
|
|
5814
|
-
"
|
|
5809
|
+
"399": {
|
|
5815
5810
|
"path": "/usr/src/noir-projects/noir-contracts/contracts/ecdsa_r_account_contract/src/main.nr",
|
|
5816
|
-
"source": "// Account contract that uses ECDSA signatures for authentication on random version of the p256 curve (to use with touchID).\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract EcdsaRAccount {\n use dep::aztec::{\n encrypted_logs::encrypted_note_emission::encode_and_encrypt_note,\n
|
|
5811
|
+
"source": "// Account contract that uses ECDSA signatures for authentication on random version of the p256 curve (to use with touchID).\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract EcdsaRAccount {\n use dep::aztec::{\n encrypted_logs::encrypted_note_emission::encode_and_encrypt_note,\n macros::{functions::{initializer, noinitcheck, private, view}, storage::storage},\n };\n use dep::aztec::prelude::{PrivateContext, PrivateImmutable};\n\n use dep::authwit::{\n account::AccountActions,\n auth_witness::get_auth_witness,\n entrypoint::{app::AppPayload, fee::FeePayload},\n };\n\n use dep::ecdsa_public_key_note::EcdsaPublicKeyNote;\n\n #[storage]\n struct Storage<Context> {\n public_key: PrivateImmutable<EcdsaPublicKeyNote, Context>,\n }\n\n // Creates a new account out of an ECDSA public key to use for signature verification\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: [u8; 32], signing_pub_key_y: [u8; 32]) {\n let this = context.this_address();\n let mut pub_key_note = EcdsaPublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this);\n storage.public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(\n &mut context,\n this,\n this,\n ));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts\n #[private]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.public_key.get_note();\n\n // Load auth witness\n let witness: [Field; 64] = unsafe { get_auth_witness(outer_hash) };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify payload signature using Ethereum's signing scheme\n // Note that noir expects the hash of the message/challenge as input to the ECDSA verification.\n let outer_hash_bytes: [u8; 32] = outer_hash.to_be_bytes();\n let hashed_message: [u8; 32] = std::hash::sha256(outer_hash_bytes);\n std::ecdsa_secp256r1::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n hashed_message,\n )\n }\n}\n"
|
|
5817
5812
|
}
|
|
5818
5813
|
}
|
|
5819
5814
|
}
|