ETH Price: $2,089.44 (-1.41%)

Transaction Decoder

Block:
19568451 at Apr-02-2024 01:37:11 PM +UTC
Transaction Fee:
0.07118797568193396 ETH $148.74
Gas Used:
1,345,140 Gas / 52.922354314 Gwei

Emitted Events:

434 TransparentUpgradeableProxy.0x2c32d4ae151744d0bf0b9464a3e897a1d17ed2f1af71f7c9a75f12ce0d28238f( 0x2c32d4ae151744d0bf0b9464a3e897a1d17ed2f1af71f7c9a75f12ce0d28238f, 0x0000000000000000000000000000000000000000000000000000000000022464, 0x407a558a8cb5af84341d4d13c66862d864b39ad0534f03b72be21692c2a0b593 )

Account State Difference:

  Address   Before After State Difference Code
(beaverbuild)
7.377594015299766193 Eth7.377607466699766193 Eth0.0000134514
0xa13BAF47...6DAc1E556
(Scroll: L1 Scroll Chain Proxy)
0xcF289822...E0b4Cfc8f
(Scroll: Old Batch Committer)
58.785195305584472442 Eth
Nonce: 140388
58.714007329902538482 Eth
Nonce: 140389
0.07118797568193396

Execution Trace

TransparentUpgradeableProxy.1325aca0( )
  • ScrollChain.commitBatch( _version=0, _parentBatchHeader=0x00000000000002246300000000000000000000000000041A8835579FE59713FBDEBAD1F056E1CCE208098E0157782B324DE80F061250CA785E993FEBFC4180C6039A16D2ADB47108464B631D512F2B5C8124AE03615717F74C, _chunks=[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AAAAAAAAAAAAAAAAGCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRJ+GVCIAAAAAAAAAAAAAAADu7u7u7u7u7u7u7u7u7u7u7u7u7gAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFMAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQ4w2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEn4ZUIgAAAAAAAAAAAAAAAFMAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBFdhiAQAAAAAAAAAAAAAAAB6zFeFDAA4FFK/1lKlbm+L90LXHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAACNK35VAettkvjjSfL+vnhd0HC+dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+MfTBjV5vbC5CZfhincOrjLh67CFMAAAAAAAAAAAAAAAAAAAAAAAAEAAu49VvsnK/b6HMPCWqlXa1tItRAmd8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEn4ZUIgAAAAAAAAAAAAAAAFMAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBOWwfNsAAAAAAAAAAAAAAACK0gQlPa+EhYlQmXOZv+iiK8TL0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAACNK35VAettkvjjSfL+vnhd0HC+dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5TAAAAAAAAAAAAAAAAAAAAAAAABAALuPVb7Jyv2+hzDwlqpV2tbSLUQJnfAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEn4ZUIgAAAAAAAAAAAAAAAO7u7u7u7u7u7u7u7u7u7u7u7u7uAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUwAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNDjDbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaSfhlQiAAAAAAAAAAAAAAAAUwAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABk0WYPmQAAAAAAAAAAAAAAAFMAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAE1/UcFRnf1M5Xi5IPffNT4z14LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZMrEYO6AAAAAAAAAADttA0ATX9RwVGd/UzleLkg9981PjPXgsAAAAAAAAAAAAAAAAFMAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAjSt+VQHrbZL440ny/r54XdBwvnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADhFGnQxYAAAAAAAAAAAAAAABTAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGTrViXZAAAAAAAAAAAAAAAAUwAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAABxYFcLsVPt0OoXdewrKsm2Xxq2GwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFgVwuxU+3Q6hd17CsqybZfGrYbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRRHeFbAAAAAAAAAAAAAAAAUwAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAACBSiOwU/0PECru2gRZIVwkRHmccAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBSiOwU/0PECru2gRZIVwkRHmccAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEkcTK7fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAjSt+VQHrbZL440ny/r54XdBwvnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAABTAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAI0rflUB622S+ONJ8v6+eF3QcL50AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEn4ZUIgAAAAAAAAAAAAAAAFMAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBOWwfNsAAAAAAAAAAAAAAADXC3Ai7uyjhdMLiA//jVTYPnpi6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAACNK35VAettkvjjSfL+vnhd0HC+dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5TAAAAAAAAAAAAAAAAAAAAAAAABAALuAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEn4ZUIgAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBOWwfNsAAAAAAAAAAAAAAACIe0FNNLogrn7VN4OAaC8iBx0IwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAACNK35VAettkvjjSfL+vnhd0HC+dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4G79v/KhSnyOFZRNH0pI+flfZjpAAAZPVb7Jyv2+hzDwlqpV2tbSLUQJnfAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkimoehQAAAAAAAAAAAAAAAPVb7Jyv2+hzDwlqpV2tbSLUQJnfAAAAAAAAAAAAAAAANTwfC8ePu8JFs8k+93sdzFt30qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfnTsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkn4ZUIgAAAAAAAAAAAAAAAPVb7Jyv2+hzDwlqpV2tbSLUQJnfAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZNFmD5kAAAAAAAAAAAAAAAD1W+ycr9vocw8JaqVdrW0i1ECZ3wAAAAAAAAAAAAAAAG50CNXyPzri1a1nPA7zpnRm1JSQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMQTsOgnLT6mqE1nSXsu0iTMOOEb6MsfAyHdIZWlI/Z219msfugOj16qqqIorDHUM4aoyiplwlzpptcEPA2AbvBxd24InAAAAF3+QF0BoQkD5FAgwLim5SqERxize7yBfcOZyLR4iJ0J07BL4du/RsJSpgAuQEEZ/+2agAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/nyoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAVG5QWu+puk+YNplB1CLp28mQFzQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmDBBVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAABTAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7EoDsQ0kg4/3iArcj9Sx0nXVAsX4X3IHG8oLAmjkMTFhCeoBzsARKnzIgEewtYHE3CkGJpezh97gvd/4WClQc9PZfUAAAAjfiLU4QhYOwAgwEAp5Tm/sp2S3VIEnZywYnTA+uVbDujcoCk6VpkTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNNgSgxBOw6BtQmmMjOkTkVElOmYhisCHxsZIzse2zv1ysQwNayGzVaALit2QqouIr494RaIFJoQ+k8+E5xwmcj3QMAchF6KppAAAAhf5AhQDhCDIVYCDAgRNlKqqqqrLcb8sjK5SLqX6RVVxp0EGh0cN5N+CAAC5AaShURL5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD1W+ycr9vocw8JaqVdrW0i1ECZ3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHDeTfggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//1Qz4rPYIRcG5hAqqUcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD3WLrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7DoBFMu/VSXXUIlGprFoG2p6VsKeSjzmHiYA6w8rAdDw2YoHHK51TCOQxNH/64hWZmHxdxpG686Bn8IAbxeXYt2gPXAAACF/kCFBeEIMhVgIMCc7OUqqqqqstxvyyMrlIupfpFVXGnQQaHHrshEU6gALkBpKFREvkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB67IRFOoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//VDPis9ghFwbmECqpRxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGsIRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMQTsOgSXwhvQa4bfG3BfIHDNeT1ERN7r2pRXK3RCtMBJo6y3+gb95djDhfrUK2qjFlNNctleDJb7Qn1ULHOm4h/SrEnRQAAABt+GtthCDIVYCDAgZxlEQiWeGtWM6tjqoOzv/2r91cMmnVgIQSScWLgxBOw6AbuNnhhVdIkc1o36Hu434k+RWgZnz4atoIZUCDc4yrY6AjEJjcaV/cbAeHSQEAS52AHb3ttCsXbXNUTI7ml1sBlgAABZb5BZMZhCDIVYCDA53hlBGVz2X4OzpXaPPEltOgWtZBLGS3hkQ2TFuwALkFJNEjtNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAAAAAAAAAAAAAAAAAEXEVuR+6U8MvqSxp1weJ7S+ZXiLswVwP6hkZu+qx8leXDZqc2ZVggvBUuCsAj3XcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARDZMW7AAAAAAAAAAAAAAAAAAFVsNyCmAyL+adt7rEAVhBWZqTOUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACE1ldGFNYXNrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVpcGZzOi8vUW1iRjR5NTFNanpjdmNvaVh0Qk1ZTlpKS3JqbkFrMm1WY2N0M0hvVWtIS3RxaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCMHg4N2JiYWRlOWU2MTdlYjU2MGZlNGM4OGFmODE0MWYzZjU4OGEwMzFmMDBjZWZjNmQzMWFlNjZkY2M3NTA3NmYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApldm06NTM0MzUyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAlczTXuF8zg6/ilebKHc3eqiYKVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB3wbtKgtZLRae7jnG2vnyjHI4MjUg0EdebU94OAPNgOg9MTuYtaBCkw6paMPjfvrBMgSdnuQHSaSPnqi/l+sc6xsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgxBOw6BVUmHc1ZtbJKxsnACXZUEv5A7HJ/GxQHLzliU0uGi7QaBv6zEQeeCEvHbwLdVGrEEg1zxsljTIlgPrbnhqrBhbwQAABBL5BA+CI22EIMhVgIMHoSCUxmqW4yDT9hgH7WVt+AaW/AwJziiAuQOkyYB1OQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAFe/ZQC8N9XUDhs2KhXWxvcAAGTIAQQFAQIHCQYACAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEuZuUUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS5m5RSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLmdLp/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEuZ0un+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS5rXhPUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLnE7YjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEufAC7hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS6v0/BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABL+Mag2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEv+hTOSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQCNwaRaEPTROpXZfWLCTY2b7KIWLKZ+wCBw7WKfFtid7UcAqQEKlenOIQdMryaJuCGsr082P0ut8RWPFqNJI2MVn1EAo4mgGrVGXqWgGwzw6xI5b8rRskYjcQ/SlykFt/lrFahUJ6pygrbc9zPRCwzzrf+mvNMN+QTHt8P2ZMTjQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEYsqcfZoSzOnP+vF1gEnAR0PF9LUS/mFBf+R2gJFJ6Lt9yvWaBc7rTzAG25/EnFA4Fe1c2IK4d+POSdP2cgDEMy518KXHmNiNCAXqpa+PUa70F3g1pPxKH4G4iTA6ksvnCsWPLJc5JO4Xohs0nuiDMA5wjs0BctSM1O+22nvOnfGDEE7DoBpjm66+HKucoDS73XHD0dztg0AH7y3x7ye9I4/s7KAkoHYKAVRgbAyYX79nTEnSLWwqfrmlbjy6vQsDQvCF2ggUAAAArfirE4QgyFWAgsCBlDwbylplbmntzQ1ONr67P82spgzxgLhECV6nswAAAAAAAAAAAAAAAKqqqqrLcb8sjK5SLqX6RVVxp0EGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANrvGDEE7DoLtq8EYFWabyPpg/TS5ZAnS9YMI6OgLP5TEUSkcgwIAhoG+KwqmcSKAoAuwdf5Bw/+r54DMIsd0+8DicMtSPGtbQAAAAb/htBoQgyFWAglIIlF6AmoWqGCqZIe3RCkFjdFuz42KEh0qbY4RIgAKAgxBOxKANSvgYWsOVVvzmQi/8PzjpBIntEMuzPLsCdsht8eAq0KBz3OeAM3xF+J4p+9eHg/d3VyX6PgE5JI2phDbfQEwuCQ==, AwAAAAAARgoMAAAAAGYMCVcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJaAAAoAAAAAAAAARgoNAAAAAGYMCVoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJaAAAIAAAAAAAAARgoOAAAAAGYMCV0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJaAAAQAAAAAAHP4cYMHbsCEMSyAQIJ7DJRJPxuJpkO9vaD/1FbJbMFlhWgLI4hFY5GCRPQEIICDEE7DoMIj+61TxwMavWbANLKQ+nQPiM8fqry373M/geTIOCatoEHDoZSaOwPz43mm4dTs4+7aMk41JaDyjRbUsDSGWy5iAAAAcvhwgwQ3RIQkD5FAgnsMlKF7IQOhjwyJdjnSLMfpJ2hF0CmKhzffd2td/LaAgxBOxKAK8KETqQRvW6VgiGly8LQQIxGbSOgcx0GDuKdsbJ0l/6BLK+egMvejcxrNqELjZqMPXz6+npNHDHXTefRYVHF3dAAAAHT4chqEJA+RQIMCPnGUtjnxFbaNFEanxpeleXG2qPEI2UGHAca/UmNAAIQSScWLgxBOxKBgh7ArN2WiLX2XbgYaP3BzW9Ic/UHBWTa57NXMQwQCYaAY0qRF78Jw4A5DGKV134AVpFXXqu5choFlPxxWTai1hgAAALH4r4MR8EeEImvzYIMBUoSUh2J8flhkQe757jwotmZi6JdRPzOAuERTWzVcAAAAAAAAAAAAAAAAqa8zDJ3hruG1s4cnJblTiVG0FW0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ2Al5ykQAIMQTsOgaiaoQSapF79Kiri62yG2t5qzzBiQqQzzOvSlv6e0VCSgKQoS4ahVLj+rA72W0bqVGqG+xRpFDfYf22WLc1aPuiMAAAF3+QF0OoQia/NggwRgIJSqERxize7yBfcOZyLR4iJ0J07BL4cKiMdX9eqYuQEEZ/+2agAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjBZWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAADlQtYxKXM5wbeq+NZ29+O3ElHMiwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmDBBbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAABTAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7EoC4W/4e/nTHnd5vvw2KLbpdZq990JlAXQDW8bd/geTPpoAGvfsKnx40z//8qwdAEHBQCjAjDQwExwg7R8S5jWX2ZAAAAb/htV4QhYOwAglIIlAHl4fsk1pS2GZW6gsLUNunu6fymhwONfqTGgACAgxBOw6CsqhxZ2gAXYkpjVauy6+vDkqbUzG5Ga4TAy2g688qxi6BjyN7QDLTSv4Dosbk10q09Xe35M4wDckCofuYd0cVOuwAAAK34qwuEISrh7IL895QG79v/KhSnyOFZRNH0pI+flfZjpIC4RAlep7MAAAAAAAAAAAAAAAAtsK/QBF81GMd+xlkaVC4ya+/T1///////////////////////////////////////////gxBOxKCt2yh39dS6/dGbXhvPbxQaq4BOM7OamUcOfyv6MWtKSaAwkiyfG/1LMNfAMsg2E8+jWaYPno+Op81txrw7DDkoTgAAAtD5As0KhCDIVYCDAqE0lIDjgpHgYznRCqtIPGVpXQBNvVxpgLkCZCzECB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA62RarYkRyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYMOCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAG79v/KhSnyOFZRNH0pI+flfZjpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVSgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAIFKI7BT/Q8QKu7aBFkhXCREeZxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAG79v/KhSnyOFZRNH0pI+flfZjpAAAAAAAAAAAAAAAAA4sfxVp3lsOoQtCoxkviqD/ww8LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMQTsOg//AqNOMu8ptKpGDVZSWcZ1eUNd/xMq9/P0tQo90TvyCgcaD9UMu72AiZyro9GCwcgkGemBvGDQ0BJnhTvsIwcFoAAAQS+QQPgiuuhCDIVYCDB6EglKntkljeFc9d/I+F3mCDZhOwKnFqgLkDpMmAdTkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAADdAkVdTaH/fjry8toM/1uCAADtcAIEAAMHBgEFCQgCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA40x6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjVvoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAONhegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA42F6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjc4RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAON5rsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA43muwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjkFjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOOz4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA48iIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCiTBWZr3yLfQYj169YEL9kvFfjULHgW3D6iN/rkvOo5nksHGzZwAPHl7opKe4lsGidiWMzqeglsBVP11XoYmRT9RzmLS2eLn2WK0mqfCPtyipV6+sATRCJz4naBDlzXfgJ2fcNb9fqrWKV36PU4aLKans9Yl92VlhB7uArVv5UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDn7jk/M4JTfnPvMqVcpl6Ob2IBAMTzIz3oh7OCprRR8MY4a7OB7vlqMBrPqH9GV47u2bnBTeOXb8SHgx2juYLNDchc5YnoNUiVUZFaElJZnCxXUaizxLZ0MFNQn8H7yhhN2SJDTlLoTOJoG+uOi+UxJD9U8HDS7RtUXhRg1QODkgxBOxKDz3SZqd8Z0z0uJRns6F0eoDCuJmsITzSZzOUoYraFjYaBmIHzny9dB9GN/+Cmzh+7Rz/Mqmw/hQpGLoVvUnm9lKAAAA5D5A40DhCDIVYCDA3FwlIDjgpHgYznRCqtIPGVpXQBNvVxpgLkDJOhNSUsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfjbDq4wcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYMOC8AAAAAAAAAAAAAAAAG79v/KhSnyOFZRNH0pI+flfZjpP//////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYMOCoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG/D4SZ9QiAHKWWmcyW+Iqs7uCzeSjkt4EjwLFIM6rNQlLRQtRwtlfXLuFL8lsOYVNxdZscZyv5Hj8OhrCcTnFmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAG79v/KhSnyOFZRNH0pI+flfZjpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByLCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAIFKI7BT/Q8QKu7aBFkhXCREeZxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAG79v/KhSnyOFZRNH0pI+flfZjpAAAAAAAAAAAAAAAAJpEy80FEOt3DrvcBeaFPw+4Y5TUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMQTsOgYHLLjuDN0nmMMe+Ws0pCOSKVKHAaH5Z9+DoQpa1NdySgPyFMcxRbF5y+UwOE5NEdjzHrr4qqhOyrL5bWAXn1XRYAAALQ+QLNC4QkD5FAgwNiMpQtsK/QBF81GMd+xlkaVC4ya+/T14C5AmSsllDYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJHXOr+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuhHDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy/JVRmX3gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYMEEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwbv2/8qFKfI4VlE0fSkj5+V9mOkAAu4UwAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERJQEt8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADL8lVGZfeAAAAAAAAAAAAAAAAC0rfeGmtInvjfXxUmQ6nifHQFZXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7DoNA0Dp2M2JQXvUXlnkTFPvFzU2jDzZNmF6IMrR6vGh8BoFy5N2clDExoNex5v0Eidlz5yKIv/iGK0JtUBfrMrqgIAAAB8PkB7XWEIMhVgIMCR32UEtfa+v3aphJY1645q6FDsktGosuAuQGEhLseQgAAAAAAAAAAAAAAAChYXZf313t6JpyVE6mMoxZCHYdJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAADu7u7u7u7u7u7u7u7u7u7u7u7u7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO7u7u7u7u7u7u7u7u7u7u7u7u7uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMQTsSgY7yKf2/xqWv/qdkGYJ8sxKtlouqXNGMJwt/TqY1XpeigXviaxT5g7cm1DQe65ne81g3ZOm0M8MkoJjBsLDWNQb0AAAGQ+QGNF4QgyFWAgwLWnJQtsK/QBF81GMd+xlkaVC4ya+/T14C5ASR1zq/mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAEsrH16I8wdBRFsvKV0N1YMKJg0dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCr1t8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIH0HBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmDAunAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACv1W+ycr9vocw8JaqVdrW0i1ECZ3wAB9Abv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAgxBOxKBSja576ixuN0+2iAIjZ9wnNeEPeYys+VzuaHtQcaDALKB/j4Z82oTrZvWVw2H0Ksf2MptYtxvQoofXx9f8ASFKHQAAAtf5AtQEhCDIVYCDAndFlIDjgpHgYznRCqtIPGVpXQBNvVxph1G2YM3VgAC5AmQsxAgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGrMdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmDDgqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUbZgzdWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAACBSiOwU/0PECru2gRZIVwkRHmccAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAUwAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAD3D/G5xRrHOYEnZugwTKht5FKXxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7EoAOR99FTu703NNLn7qT28o/e+Bo9oPLqAelFCuXGy0J0oDl+O6oEZ5U6oNLxBaE68AhpbZCtPCLKw+BJP7xv9pW9AAAArfirCoQgyFWAgvpBlPVb7Jyv2+hzDwlqpV2tbSLUQJnfgLhECV6nswAAAAAAAAAAAAAAABi3E4ZBip/KWucWXjHDhaUTABG2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKouEyDEE7DoB+BSZSZrQb+6Hv4bZR/+47s4Sj3eMax7HoF66DynSLIoDhGsznOraHeTMzlUF+o6NVN8TDvVh29U4B3at4ISB7eAAAArvisLIQgyFWAgwUfQJTsU8gw9ERKilZFXGg2tdKqeUKJqoC4RKvbXqgAAAAAAAAAAAAAAAANj44nHdPy/FjlcW0/9wQdvj8GiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvrxjggxBOxKAtEwnwlYz/T9DfAGuipw8aoX8lsS/+BVnsYHViSXGXPKBBYWJbxyTAGl2guOS6KraKOepqpukRNtKgJM71o3KGqA==, AgAAAAAARgoPAAAAAGYMCWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJaAAAoAAAAAAAAARgoQAAAAAGYMCWMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJaAAAoAAAAAAK34qxOEI1uqkIL2GJQG79v/KhSnyOFZRNH0pI+flfZjpIC4RAlep7MAAAAAAAAAAAAAAAAg53rXYOyeki/S2ohHq/uyRxuSzQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1CB5gxBOw6ATDf6nUMkVZn1NwDYnK9jaLTjee/fhwFSa43KITqoP26AMmRmie4q3jVDALLgtHnsoAQxK1rtomxKegIBmeAWbUgAAAHT4ciOEIRxB4ILKtJRTAAAAAAAAAAAAAAAAAAAAAAAABIgQA1h1G9sb0ITQ4w2wgxBOxKAortQes1RPww7l5tG19blEgFK/HBGlPzEcqjo9dlG26KBBjMUp61ShMbWWfXNfdieL/fuw/haPVfMvLkWEW/AB1AAAAtf5AtQFhCDIVYCDArsglIDjgpHgYznRCqtIPGVpXQBNvVxphzxlaPEugAC5AmQsxAgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0J7IwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmDDgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPGVo8S6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAACBSiOwU/0PECru2gRZIVwkRHmccAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAUwAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAV/Gwa+4E/IBW0PnE1JFztybfM0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7DoArXpcCoGMGVFyQyoobiW0b42TOnQKQIfkbxqJ/f/k7voAfWXNRBMjalFhy9RGDoQx/y5c0ouyRl0jaBPX5bL+U7AAAA7vjsKoQgyFWAgwVNnpQR/P51bAWtQ44xKn/ZNDgVN9PP/oC4hGF7oDcAAAAAAAAAAAAAAAAG79v/KhSnyOFZRNH0pI+flfZjpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGBXAAAAAAAAAAAAAAAA2h7U++1258blOh/RXLJB4Ys0rzIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMQTsOgoO6s4KdVNmHeweiKloH3XhegP7w7SVyVNm6bGj3WrHSgP5b4zBOD23zGRmWzpmwDkJ+qml/Hg0O2rGq/l2Pb0I4AAACt+KtChCDIVYCCp7aUBu/b/yoUp8jhWUTR9KSPn5X2Y6SAuEQJXqezAAAAAAAAAAAAAAAAFQLQJb+mJEaYkiidRcA1KZclFygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGXTt+oMQTsOgNnROtNjxDD9vzFd3CJzxwpWfOrJMr13BD30hPf7L+FGgWLTPJVoanHAlzC6sOSUDRQJ9T9fhEggVz/zLzo2hvfIAAALQ+QLNBYQgyFWAgwKE2pSA44KR4GM50QqrSDxlaV0ATb1caYC5AmQsxAgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHGlGcO1PIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmDBdpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAynfrP+/jcl3DO8y1Tt78PZ92T5cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF3XAGs0/KiEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAACzmIDHoLdSF51tfZrllKtMAtbluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAynfrP+/jcl3DO8y1Tt78PZ92T5cAAAAAAAAAAAAAAADjbE0hL8IDO3gkkHS3qdIN+cPrawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7DoGr8bjXqNlHjzj3hxq35DvYgH5/zIyhc9YAJ9GCDPEMSoBnRlG+8PgIF90xz7S/Ndw/c8EFu9A/3CoAyk2O7JowqAAABb/kBbDOEIMhVgIJujpRH++lemBwN+XN7aXG0UfsV/cmJ2YC5AQRbfXSCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABANzJlNmRmY2RhMTc2YzljNmVhNjY1YjViNTYzZjZhYjg3MDFlZmI4MzhiMWM4ZGQwMGQ0OTM3NmUzMmYwNTAwNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABANzJlNmRmY2RhMTc2YzljNmVhNjY1YjViNTYzZjZhYjg3MDFlZmI4MzhiMWM4ZGQwMGQ0OTM3NmUzMmYwNTAwNYMQTsOgzrdFRlbHT6K/K0eeiYcXpf3W6wVBL4BwG/2W7LzLAoWgdu3Bq4iLO1z68FVL84gbRmucaI4vbFNrYf2ZnDenZyYAAAB0+HIVhCDIVYCDAhDylDN/KFfvLlSaBndYYqa8zrIW17V5hwHGv1JjQACEEknFi4MQTsSgRKvDKb3do/jMD4Lfkdbq7s3CMsFvBvA2RjDNBGI4PIOgPoYOwr9T8AwpDTupijWedONKxnOYymq9xmx2hYC+/NQAAABz+HEzhCDIVYCDAgZxlML0lLSK0vBWqARNvuLeInHez5Fxhi15iD0gAIQSScWLgxBOxKDomuEfa4+1QZo1Eb5geqhNfvnAeBeGNg36CP5+e4yQAKB2rXt3CE80mhiOxvgqu/Z0hk1rWvgTuWHZlHJqrjCuhwAAAM74zDSEIMhVgIMFCmiUTAkm/1JSpDX9GeEO0V5aJJuhnXmAuGRsB+pDAAAAAAAAAAAAAAAABu/b/yoUp8jhWUTR9KSPn5X2Y6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWXF7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgxBOxKAe40yv+o/yQynuM2SSYuM7AsKlYi6RjQboocl1k0LwsaA6qr0SgpDW+PzYr0gnfcIsu/AvPg2Gaih37aDBh5ItgAAAARr5AReDAoeOhEGQqwCDA2YmlAG0zg1IzpHra8r12zOHDGXWQbiUiAMpA182Ez2ouKRkd4wfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAykDXzYTPagxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANBKAAAAAAAAAAAAAAAA7u7u7u7u7u7u7u7u7u7u7u7u7u4AAAAAAAAAAAAAAADFKPG7Zr0/0ILKClw2oI16gBUE04MQTsOgcT6eXgfijMlqv/4TlpqnL3wHDCXwixtqTzNB8ismormgFTuSoY72iPyVmMuDqOO2+gMnPiSDOg/IiJPklxlMeQkAAACU+JImhDEsgECDAfgGlAMy/Okol2eel2IKCXqlFfXXz0A0hwHGv1JjQACkamJ4QgAAAAAAAAAAAAAAAPtFjCbR8jUe6NiDCADeRKfXl9wzgxBOw6CZb/aCzd+YJ/1aBumGB+wFhhI7I3rjgWmd0RYfNq1JP6A0wEwuTE9YLxUswwXwkVQRrv76WyNA7UQpSaLdC7bq3AAAATL5AS+DCGpjhCdWzQCDBT20lINjMCCA5xHgyrl4wIG55pMI1JgIgLjECJTt8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA9rB7L5kg/hdi93QTERfqGICQB6h3m9Qkj92HAeb+zhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUQEAAAAAAAAQzwAAdegAAAAAAAAAAAAAAAAm2lgoifWequnaHwY74BQM2T5qTwAAdgYAAAAAAAAAAAAAAAAm2lgoifWequnaHwY74BQM2T5qTwAAAAAAAAAAAAAAAAAAAIMQTsOg1HRR/ErcsaP7ZLiOKAkilXHrJdjwgcECjxMLSIhc1ZWgcsR6XhiWqXUeGDCGzhdFodq+pmfO6BSIj3T5ien3vtMAAAF3+QF0CYQkD5FAgwLim5SqERxize7yBfcOZyLR4iJ0J07BL4cdJGTgHfwAuQEEZ/+2agAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkgrEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAy2luESl5fOkZ5dIz7ll+XTB404wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmDBBnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAABTAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7DoBrmXElEBQBfvKW5dJnDAU2Nq2ld4ROqGwUzr/o3TT9VoE7f4SoIdHrPXfCqIzTWu01ZNkcBVu9Q3v1igukGzqqsAAAAcfhvghLKhCDIVYCCUgiUVt0M+tspCC2esYDPUTdquCWIa06HBiVtA3YgAICDEE7DoG59CjYk0V2KpGQGynz62l+RepxNnOpz13Z+gMuIrO2moAIzASMEoZ7pKEkPf0bdX1X3MkV9Uom8Dz+LHM1b3jIyAAAArfirGIQgyFWAgut6lAbv2/8qFKfI4VlE0fSkj5+V9mOkgLhECV6nswAAAAAAAAAAAAAAABi3E4ZBip/KWucWXjHDhaUTABG2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPQkCDEE7DoKTjP8ljZ60/VJFofnA8qCE2VuLy75FYuSxmhEnJaDPAoBJ+Rh+zarjEWOZVhvpt+R7tRry09SLnvTIzCLNJhvtzAAAArfirFoQgyFWAgut6lAbv2/8qFKfI4VlE0fSkj5+V9mOkgLhECV6nswAAAAAAAAAAAAAAABi3E4ZBip/KWucWXjHDhaUTABG2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATEtCDEE7DoMIVPIOFcg6IenxycVd4nh3kftI+1DodcZ3qGIItkPQgoAvYmqRtpFHqVpbvbW3dqKxklQLdq+WrZGX8DQGmAPGNAAAArfirE4QgyFWAgut6lAbv2/8qFKfI4VlE0fSkj5+V9mOkgLhECV6nswAAAAAAAAAAAAAAABi3E4ZBip/KWucWXjHDhaUTABG2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQBZCDEE7DoGjw1JoXu3ec8lrLk9fp6+XlpdLIjIA+NWubTMZkHEAgoAaDypxSQjAtXUa4ix1sHJX8tGoYf9tKa4tYXBN4YFYLAAADlvkDkw2EIMhVgIMCS3CUDKtpd6nHDgRFi3QEdrSYshQBlkGGNpHWr8AAuQMkdEdz8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG4aEP0/Hs/rQz9SOCjvaPPCZti2hIkwgl6AgLGD06tswI561dxbzORrY+dHO8p3etZGk7XmcVResWy/YWH02LgsAAAAAAAAAAAAAAADuuqAjI5VZuhHLdOMb2D6fhcdWLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAABNzPjR2mBrUBSWi3vRg6PLj7mf0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgvUQmYzYWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAO7u7u7u7u7u7u7u7u7u7u7u7u7uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELZDWQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAALSbO4rXQhz1jolWkCauXjuqpHWVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAB1OCYq6ZPKEXoOSB+QggkTekYmjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXT73mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgxBOxKAvYBOCaKXAG89GeWJvmtpMjqf2m2BRJRI6lqaaqwjFLqA/iNWIyg3WWMxXoSoY6r+gy7Jqk3DRHrDNNrjWOuntJQAAAIz4igqEIMhVgIKnMZRTAAAAAAAAAAAAAAAAAAAAAAAABICkLhp9TQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARw3k34IAAAgxBOw6DkAUZz0BcsQ5aUCZlQH8i+1Dl5xyOd7G7gQL2AJjGN1aBTPunqC/6mHa+vIM0yi7K2ipq1CI3l1OQpwXNcVwQjWA==, AgAAAAAARgoRAAAAAGYMCWYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJaAAAoAAAAAAAAARgoSAAAAAGYMCWkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJaAAAYAAAAAAHP4cYMHbsGEMSyAQIJ7DJRE0PA0Var7x6JPSknOKgO7wHDY5IhFY5GCRPQCqoCDEE7EoFtuqpwSwETv89iPxC7L00kLO5m7pWnivA5M554yXICyoCYS5jUczsLVITCJgWClrQ47oTdFMmtRF45kIIrECwAvAAAC1/kC1ECEIMhVgIMCd0WUgOOCkeBjOdEKq0g8ZWldAE29XGmHCZD+hMJJ1rkCZCzECB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhjsTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYMEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkP6EwknWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAIFKI7BT/Q8QKu7aBFkhXCREeZxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAABTAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAKpv1Ot1yF1wR+jl3Zdt/7kTw9Y8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMQTsSge6WDTOmex5QkASvnv9+mVJwwp2lk0Pc5L4BgQS2LZMCgVHksm4ur6DMKCMzQFrJXk1jGbnxqLyl0o87+wsJd9igAAAOQ+QONB4QgyFWAgwNxiJSA44KR4GM50QqrSDxlaV0ATb1caYC5AyToTUlLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANLBbOKPV5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmDDg0AAAAAAAAAAAAAAAABu/b/yoUp8jhWUTR9KSPn5X2Y6T//////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmDDgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv3b6zvHhFzm/k/wmOIs+hKaacola0X30raslYCC5meTRzdLMQiXRzGSFKPYHx642XL355XomXAA2IaTUfaV6A0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAABu/b/yoUp8jhWUTR9KSPn5X2Y6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvqbRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAACBSiOwU/0PECru2gRZIVwkRHmccAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAABu/b/yoUp8jhWUTR9KSPn5X2Y6QAAAAAAAAAAAAAAAB/OktdphtXUVEIPNL6xOSOwg4cNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7EoGbEnRoE7Ua41iP/QxA/Ii4lsClS01KlIoeHm909ZtCAoFcS1imGF3XqGTrqGc53npuUns5yv7ouFZaNTkvp/29NAAAAbPhqA4QgyFWAglXwlOEK3SrVkaesPKRniKBikN4Be5+0gIRjKppSgxBOw6BziE1nGc7895ollpzaZEbfFPUuCuHb9z661qRG8BwKQqAq4ZNqq8BYMFsTsH4O03YHLjvt1LjunruJIl/4tKy7VgAAAK34qw+EIMhVgILAjZT1W+ycr9vocw8JaqVdrW0i1ECZ34C4RAlep7MAAAAAAAAAAAAAAABzRYP2K7as48m6m9WlMUPKLOjFWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACL1F8gxBOw6De0kKFTpsFTgllqcE7OMZmax9L4Pn3iqQ9Kdqpt3VDSKAhA/vllUlsOsxiX9lP3oR7/jsNRPmQYlX5V6MAiQ5mAgAAAtD5As0QhCDIVYCDAywolIDjgpHgYznRCqtIPGVpXQBNvVxpgLkCZCzECB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8WcyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYMOBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAG79v/KhSnyOFZRNH0pI+flfZjpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADATRsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAACB21GMoU/sWXPfH5/rVktrHD0/hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAG79v/KhSnyOFZRNH0pI+flfZjpAAAAAAAAAAAAAAAAImt2GwJrDNEII0pVWimCaySJMoGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMQTsSg92tqpCyftP8DX7y5t69G1782i7QugG/lr3pPnNW5AfugTxHtGMkzuMjm5x8PA3yq7KzZq7swfzAYwO23Cs6lokQAAAIY+QIVAoQgyFWAgwIw55Sqqqqqy3G/LIyuUi6l+kVVcadBBogBqlNdPQwAALkBpKFREvkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAapTXT0MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//VDPis9ghFwbmECqpRxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczUDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMQTsSgVQzP2uwCjCHwkviSgMPFGjqtvlY+3elfqWBZILEC6OmgN0x7NziUaLSyAf4olbIuocorCVgKWSOdl8T6g28c26QAAALQ+QLNFIQgyFWAgwJmSpSA44KR4GM50QqrSDxlaV0ATb1caYC5AmQsxAgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKtoLHMouqQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmDDg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAKx029bYa3a99p+u9EbNf2M+w3jEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQg4JWyHevmFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAABRi/YBhhZhf3zgKIKjclVr/pOq8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAKx029bYa3a99p+u9EbNf2M+w3jEAAAAAAAAAAAAAAADlK0ycolfJHGLOEUoFqBkasCfaJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7DoIGk0W9wgHiIZT+3FblFoSGXa6sHor6Tquch7rqqT84QoEPEFd/MBsyXzf3dnVK8UEmsmIjky2KQeyKK7dIZ2XMDAAAC0PkCzRGEIMhVgIMDLCiUgOOCkeBjOdEKq0g8ZWldAE29XGmAuQJkLMQIHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL4pysAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgw4HwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMIm1IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAIHbUYyhT+xZc98fn+tWS2scPT+EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAorG3G5DUGPBCZt4yCFzmQEHbvt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgxBOxKB2+ePnyghvsJL596DjWvNRgKH+4ijrd/298NTjQimmt6AaxNW1Xq0gmmaJ5MIIxDF+iAntxZbSHHnHqq38Y7I9EwAAAnL5Am+CatSEIMhVgIME7uKULyr64ROc5U/vwDWT/uirKt9KhaeAuQIEfDnRMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1gAAABAAAADWAAAAAAAAAAAAAAAAAAAAAAAAAACE7qYdZ59C2SFF+gUsiZAMuszpWkz9Pfa09JgBDPTQqbNRcwK7v/i1ufm4jZ8L5Ve6RFMVAABQbZcbLIz76i1QX6zbAKPOwPF5m2WGUWP5SPtXEIa2de1edAfv5ll5ifpHAU/xrsIXxD8HjmInpP1QPh6GMwkgVi8bH5D3k5p+eyU4JtQR7R8sC1A8XW/mJjJKlvuiayYLPSNyc7SkXONd2ij9ktJIJ85owP65pI9jopnP7vztmSR7+BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI0DAABQbQAAqGoAAAAAAAAAAAAAAAB9rEgNIPMi0u8QilmkZcy1dJNxxAAIJ1AAAAAAAAAAAAAAAAB9rEgNIPMi0u8QilmkZcy1dJNxxAAAAAAAAAAAAAAAAMjim7B+SwOlng1ZW92OhMfBkk32AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA22aCoAAAAAAAAAAAAAAAAAAAAAAAAAgxBOxKCznfQAfgZxJzNRdj7vnhVVDWRqyth6UVgFFQt2nMZMQqBDMrJBwMrqK2d7UfaiJEegGuC0XoyqMyWpXeXJL1/LAAAAARn5ARaDAoePhEGQqwCDA2ZylAG0zg1IzpHra8r12zOHDGXWQbiUh084+J6Ibai4pGR3jB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATzj4nohtqDU5MTQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAux4AAAAAAAAAAAAAAADu7u7u7u7u7u7u7u7u7u7u7u7u7gAAAAAAAAAAAAAAACnbLUj+V7+/VbTlc87DkEJRvJ06gxBOxKCapGsSes6AhstiijFgEGqW4w8bBJvZXPRMIN/XHa6QeaBBVDqzCJEfGLk5p0bdYprF2sg+wftr8ynvbs5evMXc7QAAAW/5AWyAhCDIVYCCbo6UR/vpXpgcDflze2lxtFH7Ff3JidmAuQEEW310ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQGM3ZGVlYzM1MzBlZDM3N2EwZGYyOTdjZmRjNGIzNzRhZjJlMTc4MjgwZWJiNmI5YzNjZWNhMGUyZjg1MDczMTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQDhiYTZmYWM2NTRkYTJmZmEwYTc2MGZlNTliN2YwZWJjZGEzMTQ0OGFkZDc4Y2IyOGI4YzU2YmEzOTViYmI2NTaDEE7DoBnpaAxe+ZeMpTeicq68DFjX02BbTQlNWz7twDVSR/nwoDk+h5vM5vuJXqaqOVESNV0bX1T4s2TI3EgX/Rl8ZAfRAAACF/kCFICEIMhVgIMCRyaUqqqqqstxvyyMrlIupfpFVXGnQQaHQ4BmOruAALkBpKFREvkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPVb7Jyv2+hzDwlqpV2tbSLUQJnfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEOAZjq7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//VDPis9ghFwbmECqpRxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOr5qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMQTsOg+QPe1EQ6kQ3PXjImRgfDW2dpvB1YGVd9vAxObRBQTregKGGmy5kAFGI0Q9odL1WEuJ0afH/myOoaDK2fSiFSzw0AAAIQ+QINIYQgyFWAgwU0Z5SA44KR4GM50QqrSDxlaV0ATb1caYC5AaStJx+jAAAAAAAAAAAAAAAAgUojsFP9DxAq7toEWSFcJER5nHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvO7bzXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAADkWHYTiG/xklF9VFPVAzUMdvqCigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM+8pQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOqTIFyAwFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7DoMBX230O4NpLnsMPFGu6sugJEZquil66XlZJMTSl2daIoFggmOC97ZVUvS71gksGyybLf4Gtoj3GjTcm1sIhEhf5AAACEPkCDRSEIMhVgIMCQU6UqqqqqstxvyyMrlIupfpFVXGnQQaAuQGkoVES+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBvKWmVuae3NDU42vrs/zaymDPEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2u8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACb2T6f5HHdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgxBOxKClsEp5uMvJO2tvTZvdrtEOVFaGzlUMG7blMvuSl13lIKBB4eOxm+bVvxhD+rFTfgfwfOI0ePs2tDgTco5IJ67R3AAABhb5BhMJhCDIVYCDA6i+lAyraXepxw4ERYt0BHa0mLIUAZZBhj+qJSJgALkFpKTXMEEAAAAAABPZHGX/UXkUUJ5PjHhrnXHhe7A6922zP6OlGU7CBrWKJA2MZibete7u7u7u7u7u7u7u7u7u7u7u7u7u81DrRTLfcmpuN8aFdTgmKumTyhF6DkgfkIIJE3pGJo5xJ8z4T1AtA/QZXz+chSz37WZGqKdtnr57S/F8nKnYEk2t+yFmDDfN+w6co4oS8Dtsrvmtr4NMB3190Ai6KqltAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAYAAAAAAAAAAAAAALrjVUGzGzHo8kUXfy/M+HfKEI4/ACQBAAAAAAAAyAPoFFCeT4x4a51x4XuwOvdtsz+jpRkAAAAAAAA/qiUiYAAAAAAAAAAAAAAAAAAAAAAAAAAHNQAAAAAAAD+qJSJgAAAAAAAAAAAAAAAAAAAAAAAAAAdYAAAAAAAAP6olImAAAAAAAAAAAAAAAAAAAAAAAAAABm0AAAAAAAA/qiUiYAAAAAAAAAAAAAAAAAAAAAAAAAAHXgAAAAAAAD+qJSJgAAAAAAAAAAAAAAAAAAAAAAAAAAaHAAAAAAAAP6olImAAAAAAAAAAAAAAAAAAAAAAAAAABzcAAAAAAAA/qiUiYAAAAAAAAAAAAAAAAAAAAAAAAAAFegAAAAAAAD+qJSJgAAAAAAAAAAAAAAAAAAAAAAAAAAdhAAAAAAAAP6olImAAAAAAAAAAAAAAAAAAAAAAAAAAB2oAAAAAAAA/qiUiYAAAAAAAAAAAAAAAAAAAAAAAAAAGSAAAAAAAAD+qJSJgAAAAAAAAAAAAAAAAAAAAAAAAAAZuAAAAAAAAP6olImAAAAAAAAAAAAAAAAAAAAAAAAAABnkAAAAAAAA/qiUiYAAAAAAAAAAAAAAAAAAAAAAAAAAHNgAAAAAAAD+qJSJgAAAAAAAAAAAAAAAAAAAAAAAAAAZrAAAAAAAAP6olImAAAAAAAAAAAAAAAAAAAAAAAAAAB10AAAAAAAA/qiUiYAAAAAAAAAAAAAAAAAAAAAAAAAAHOAAAAAAAAD+qJSJgAAAAAAAAAAAAAAAAAAAAAAAAAAZ0AAAAAAAAP6olImAAAAAAAAAAAAAAAAAAAAAAAAAABXgAAAAAAAA/qiUiYAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAAD+qJSJgAAAAAAAAAAAAAAAAAAAAAAAAAAZxAAAAAAAAP6olImAAAAAAAAAAAAAAAAAAAAAAAAAAB2YAAAAAAAA/qiUiYAAAAAAAAAAAAAAAAAAAAAAAAAAHWwAAAAAAAD+qJSJgAAAAAAAAAAAAAAAAAAAAAAAAAAdZAAAAAAAAP6olImAAAAAAAAAAAAAAAAAAAAAAAAAABz8AAAAAAAA/qiUiYAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAAAAD+qJSJgAAAAAAAAAAAAAAAAAAAAAAAAAAWKAAAAAAAAP6olImAAAAAAAAAAAAAAAAAAAAAAAAAAB2AAAAAAAAA/qiUiYAAAAAAAAAAAAAAAAAAAAAAAAAAGeAAAAAAAAD+qJSJgAAAAAAAAAAAAAAAAAAAAAAAAAAZKAAAAAAAAP6olImAAAAAAAAAAAAAAAAAAAAAAAAAABncAAAAAAAA/qiUiYAAAAAAAAAAAAAAAAAAAAAAAAAAFgQAAAAAAAD+qJSJgAAAAAAAAAAAAAAAAAAAAAAAAAAWIAAAAAAAAP6olImAAAAAAAAAAAAAAAAAAAAAAAAAABnUAAAAAAAA/qiUiYAAAAAAAAAAAAAAAAAAAAAAAAAAGcAAAAAAAAD+qJSJgAAAAAAAAAAAAAAAAAAAAAAAAAAWGAAAAAAAAP6olImAAAAAAAAAAAAAAAAAAAAAAAAAABzqDEE7EoDnldjYB4Q1yF6CoNb8iiakcIjacG+EqSFllHDx8vD87oHp3fsKtxp2AY75tjJMX31RfyizMBv6sKoAzqcGxNDzb, AgAAAAAARgoTAAAAAGYMCWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJaAAAgAAAAAAAAARgoUAAAAAGYMCW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJaAAAgAAAAAAGz4ahSEJ1bNAIMCpsyU5Mwkksi0vva25ZJa9nYGNEPIdcWAhBJJxYuDEE7En3TdovaXQQJ4JNwcyNyVGBMIrrPOOMI9Kom8wUA+71SgCyEvlP3xulqJd94J4VMtA1jWD84v24KsJAeq5W7KoloAAAF3+QF0DoQkD5FAgwLim5SqERxize7yBfcOZyLR4iJ0J07BL4dI9xV9ywwAuQEEZ/+2agAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7UBWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAABA5G+O1nIHwY5OQAGzmKmahuqGDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmDBBcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAABTAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7EoBZkKtOVF79MDzXD1obcQMqS3bZj6YynuPIK5N5U24auoGQMmITTQ7fGfxOg5+MCQE+gxrigUgRJRcOpnJLnQtVvAAABcPkBbRKEIMhVgIMC7baUGLcThkGKn8pa5xZeMcOFpRMAEbaAuQEEGMuv5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKJRIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALZKJ8fpQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAO9dXTufoE1TYMKHkkCZfvproTvWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYMDhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAUwAAAAAAAAAAAAAAAAAAAAAAAASDEE7DoOTvZu5pQ5NkSpdMv08f1cDfPQjtmhzBZImKzFKpG/M3oBWr4L6g4VNA5Yd+MdPvTVeUXtMlTlRWLNKDpcPz9E0jAAAC0PkCzRGEIMhVgIMDLCiUgOOCkeBjOdEKq0g8ZWldAE29XGmAuQJkLMQIHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALxvmsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgw4IwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBjXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAIHbUYyhT+xZc98fn+tWS2scPT+EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAA8wGXneW+JWYaRq2+vbYWHt+qCnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgxBOxKBwazJVVsPlO2PELCXW37Bpq2qmq/3LOT0Dh5o03d2DfKAnH2VGw8Pr4xtIzWmP1vPwY1nt+dYWj13f6T3W0YuWAgAAAHT4ckSEIMhVgIMBwtKUOAF/2SYDC2AV3tOtjN9qCM7ZJymHAca/UmNAAIQSScWLgxBOxKBPvGMRkZUxrT1NjjFOjZw0yl0AQImvZWJKDxbd3JaTxqBI9t8u2Rxu68du6ax5EAq1AOjjrjyyE9WiYmPgjMtUygAAAHT4cg+EIMhVgIMBkDOU3m0ucO8DfkzIPdOpZnVs5Szo7PuHAWvMQekAAIQAAAAAgxBOw6Ah9R/mJHWpiax0QegqwAbKJMvNsLKhBwgevawtNnSd8aAxjbTqGIdMMxWHRCxkxUw32GEp2AXBW9QuAMV7pETt9AAAA5D5A40khCDIVYCDA3GQlIDjgpHgYznRCqtIPGVpXQBNvVxpgLkDJOhNSUsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIi4oXdNJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYMOEQAAAAAAAAAAAAAAAAG79v/KhSnyOFZRNH0pI+flfZjpP//////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYMOD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHA647Vnhajrf1aFY7PxE77kVL7MrgMQBXYAW2nkj5CDGeondQ92jtL43iitZOuELNQhdKZBHPfBnC1qavfh3GDIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAG79v/KhSnyOFZRNH0pI+flfZjpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAIFKI7BT/Q8QKu7aBFkhXCREeZxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAG79v/KhSnyOFZRNH0pI+flfZjpAAAAAAAAAAAAAAAAH2FdmBYMEYWVRiBhTZVMxy1l6KZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMQTsSgyV0bKm3ML+al5x9ay0g3EpU1Y7ocDODyxOxG2uOh0NqgRFpF6SrgvrM3HqbHnnbXlWfzk853q8o+zxHXLsOiVogAAACt+KsGhCDIVYCCwI2U9VvsnK/b6HMPCWqlXa1tItRAmd+AuEQJXqezAAAAAAAAAAAAAAAAqqqqqstxvyyMrlIupfpFVXGnQQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsegSoMQTsSg6lR+pvUJ4UsxYNKqrdoTmGQSLc0rXyqeAodohz5PWHWgLpGr07mtE/Nx/yb939vjRv4TuLOwTWJMDZQ034hpURkAAABz+HGDB27ChDEsgECCewyUST8biaZDvb2g/9RWyWzBZYVoCyOIDeC2s6dkBCGAgxBOw6Bc2SzG/mVtQI2R719AkSpM8oeLEq5tcxp3I/NjmNfpz6AbfDSxf4WxA2X3qxAOrS9xioNZLdTDiECS550cxoXMlgAAAK34qxKEJA+RQILK1JQG79v/KhSnyOFZRNH0pI+flfZjpIC4RAlep7MAAAAAAAAAAAAAAACqERxize7yBfcOZyLR4iJ0J07BL///////////////////////////////////////////gxBOw6DKnTT5yN6jLdRGzDtKAvUD4/W/9xLAV27/rgROmtjgGKB2NPd+qnRcv0V0+posF9LyepOt/YvBU/egRu+R/wEOggAAAfn5AfaBp4Qia/NggwEeUJQBtM4NSM6R62vK9dszhwxl1kG4lIgFjRXhdigAALkBhPRS7U0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWNFeF2KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYxi3h4ZE7cAAAAAAAAAAAAAAADu7u7u7u7u7u7u7u7u7u7u7u7u7gAAAAAAAAAAAAAAAHufPwmweS8s0ZhuKfT3tUydrXQ7MzI0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTu7u7u7u7u7u7u7u7u7u7u7u7u7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUe58/CbB5LyzRmG4p9Pe1TJ2tdDsAAAAAAAAAAAAAAACDEE7DoM7K2jA1McfQaE8wXJ1FRatObZoUTebxK789U3xWMV4CoD2BUm6LvV1plSKsYQbq7bPqeJt5srULuty/A8HUTtq5AAAArvisDIQhNvbrgwEO6JQG79v/KhSnyOFZRNH0pI+flfZjpIC4RAlep7MAAAAAAAAAAAAAAACqERxize7yBfcOZyLR4iJ0J07BL///////////////////////////////////////////gxBOxKBc7U8EcIZXpQeuWdVhnuAfVIWuklvp/kdc5E1z/gsq5KAj1O1Rj2Qtm9TfMkUC5+WmQKYD+HuEl21Cpr9+Jy4D2QAAAhr5AheCBhyEIRxB4IMH7WiUqqqqqstxvyyMrlIupfpFVXGnQQaIRWORgkT0AAC5AaShURL5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG79v/KhSnyOFZRNH0pI+flfZjpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVjkYJE9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//1Qz4rPYIRcG5hAqqUcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPGT8wBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7EoI+fUS30SLIvQ2VtVNKyu2lU+V0n7EulYzuFnE2NSb6ZoBkh7q/04g4mO8wluzMzuyZnQWdo5TYknbgIszRp3oZeAAAC0PkCzQ+EIMhVgIMDLBCUgOOCkeBjOdEKq0g8ZWldAE29XGmAuQJkLMQIHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALxGxgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgw4JgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMA5roAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAIHbUYyhT+xZc98fn+tWS2scPT+EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAQw/FosyEyC4vABJVNrGEsg1MJxkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgxBOxKBDNaAceEfVOF+27NjVcuLd3hV26mssNRpP+tTAxt3dIqAg7i6MzkQNLJy/PFb7uczKolUAwCO+6Q5K9i0P8zymNAAAAhf5AhQDhCDIVYCDAkcalKqqqqrLcb8sjK5SLqX6RVVxp0EGhyqh77lOAAC5AaShURL5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD1W+ycr9vocw8JaqVdrW0i1ECZ3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqoe+5TgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//1Qz4rPYIRcG5hAqqUcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUZ+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7EoHpLZOLqlKyjaDEZPis95WxjIYnKQMy7AN16gjEk/DRjoA3W96KeHyydS4Rzz1YeNObMgamUyL9YeMkGrQBXhBduAAACF/kCFICEIMhVgIMCRxqUqqqqqstxvyyMrlIupfpFVXGnQQaHP/LnlfUAALkBpKFREvkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPVb7Jyv2+hzDwlqpV2tbSLUQJnfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/y55X1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//VDPis9ghFwbmECqpRxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN6bswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMQTsSghk0jx3eBtAKP3I5G1GL7vW7UqSvkMvh81uQ6EE3legmgLHv4OT1ff58jbiv0k8PFWzsfcdcIqxSbubLtYI513YY=, AgAAAAAARgoVAAAAAGYMCXIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJaAAAkAAAAAAAAARgoWAAAAAGYMCXUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmJaAAAkAAAAAFZD5FY0qhEGQqwCDEknClCK/Kp/Kq53JZSYJcxj0We90J3BCgLkVJOAg3F0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjDGPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAmV137nMTX9Ko6qyo6EvkU4nC9R4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAA7u7u7u7u7u7u7u7u7u7u7u7u7u4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJzz//UPZCgAAAAAAAAAAAAAAAHLgY3IJTKF/KX3TG1QgzGtwY9seAAAAAAAAAAAAAAAAY1KlbKrcTx4lzWx1lw+naKMwTmQAAAAAAAAAAAAAAABjUqVsqtxPHiXNbHWXD6doozBOZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE4SQQRoyAAAAAAAAAAAAAAAAjSt+VQHrbZL440ny/r54XdBwvnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAABu/b/yoUp8jhWUTR9KSPn5X2Y6QAAAAAAAAAAAAAAADu7u7u7u7u7u7u7u7u7u7u7u7u7gAAAAAAAAAAAAAAAI0rflUB622S+ONJ8v6+eF3QcL50AAAAAAAAAAAAAAAAcuBjcglMoX8pfdMbVCDMa3Bj2x4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjDGPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnPP/9Q9kLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACeidvBO4GgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAEYp0RbuZmsuZUcXtSQZAGqw9VKdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEn4ZUIgAAAAAAAAAAAAAAAAbv2/8qFKfI4VlE0fSkj5+V9mOkAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBFdhiAQAAAAAAAAAAAAAAACWz6KjaexnqTwySjXmk/vuoRwFlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAACNK35VAettkvjjSfL+vnhd0HC+dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+MfTBjV5vbC5CZfhincOrjLh67CAbv2/8qFKfI4VlE0fSkj5+V9mOkAAH0UwAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkn4ZUIgAAAAAAAAAAAAAAAFMAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAUwAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJC4afU0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRJ+GVCIAAAAAAAAAAAAAAAAG79v/KhSnyOFZRNH0pI+flfZjpAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQTlsHzbAAAAAAAAAAAAAAAAiHtBTTS6IK5+1TeDgGgvIgcdCMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAjSt+VQHrbZL440ny/r54XdBwvnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuBu/b/yoUp8jhWUTR9KSPn5X2Y6QAAGT1W+ycr9vocw8JaqVdrW0i1ECZ3wAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRJ+GVCIAAAAAAAAAAAAAAAD1W+ycr9vocw8JaqVdrW0i1ECZ3wAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQRXYYgEAAAAAAAAAAAAAAAAg//vvKBxNH30acTmSCDJWwG5V74AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAjSt+VQHrbZL440ny/r54XdBwvnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/jH0wY1eb2wuQmX4Yp3Dq4y4euwj1W+ycr9vocw8JaqVdrW0i1ECZ3wAB9FMAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZJ+GVCIAAAAAAAAAAAAAAABTAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAFMAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQuGn1NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGSKah6FAAAAAAAAAAAAAAAA7u7u7u7u7u7u7u7u7u7u7u7u7u4AAAAAAAAAAAAAAAA1PB8Lx4+7wkWzyT73ex3MW3fSoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnonbwTuBoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaSfhlQiAAAAAAAAAAAAAAAA7u7u7u7u7u7u7u7u7u7u7u7u7u4AAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABk0WYPmQAAAAAAAAAAAAAAAO7u7u7u7u7u7u7u7u7u7u7u7u7uAAAAAAAAAAAAAAAAcuBjcglMoX8pfdMbVCDMa3Bj2x4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMQTsOgtMpcpiTlXx8YIIl9VcVfARh5xPVSiukV0OA2yIbrKCGgIg/kz6Rg1Do/Uf/vMeWiBdDUM9VJ0MDKWLO0YGSS894AAAD++PyCbT+EIpOfoIMNfSSUbBv0M6fIVJphvHgYrf2P40CDNi6AuJIAAAAAAAAd2wAvA8QAAFI/Acp36z/v43JdwzvMtU7e/EIFU+HIABDJUwAAAAAAAAAAAAAAAAAAAAAAAASdpyy9LyYqiYs+R+Vuuzhdj7FgMQAABsp36z/v43JdwzvMtU7e/D2fdk+XHWdSIjBNHAk3Cjki9Gtj1gJOp2gAEAoG79v/KhSnyOFZRNH0pI+flfZjpIMQTsOgW+B0pFH8z3jFx2vydOOG9jU/vdwpQJ0vkWvT0BUXWmygTXL0GEVQsphtFAYGt2I4gM6CiQAz0cOjZ5DOyMm1UqIAAAFv+QFsJ4QgyFWAgm6OlEf76V6YHA35c3tpcbRR+xX9yYnZgLkBBFt9dIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA2ODg5MWU5ODJkMGY2MzMxY2NmMDgzZWYxZTMyNmZjMjIyMjAxYzZkNjk2YjZmNjJlZWM1MTg5NWFlYzIyZjlkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA2ODg5MWU5ODJkMGY2MzMxY2NmMDgzZWYxZTMyNmZjMjIyMjAxYzZkNjk2YjZmNjJlZWM1MTg5NWFlYzIyZjlkgxBOxKD7xXU3Upf9PQs+RgMQlTdfGxqiMvYnsPdW2P9s4fKHoqBNuNS8hJ+ZNrJM2zvE/HmMU6KMGQ0OLKsOvesrgtUW8gAAAW/5AWyAhCDIVYCCbo6UR/vpXpgcDflze2lxtFH7Ff3JidmAuQEEW310ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQDQyOGI1OGViY2RkYzI5MDFkNjVlYmVkYWJkNjAzZjM0M2IwMmYxNjJiMWFjOWNjOGMyYjNmNGJjMTkxMWVhMWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQDVjZTQzNmJkY2VhYjE3NGVhMWUzZGNkZjE5YmEwNmRmNzUzOTUyOGViMzIzNDYyZjU5YzhhN2QwYzI2MWU4YmaDEE7DoDrC8xKyycDmL86r4qxl+3imb8/MQlqho8OGyaUwIjWPoCzzAEJPG2HCkYeO5cSfVUO1yONTn+AV/+hQ2SWzLjvgAAAC0PkCzRKEIMhVgIMCcS2UgOOCkeBjOdEKq0g8ZWldAE29XGmAuQJkLMQIHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHUotFLFkkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgwQbQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAMp36z/v43JdwzvMtU7e/D2fdk+XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF9kC90mx3SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAs5iAx6C3UhedbX2a5ZSrTALW5bgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAMp36z/v43JdwzvMtU7e/D2fdk+XAAAAAAAAAAAAAAAADWgPXPcCrv/n6Nb52MGjKKjRwW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgxBOxKAsOiCueZAfBwnNjAzfH2tdh13+ebD9uplLvXmBD4lh96Afhsn51fyLhGxu2mS7Ued+dOUupTHGMWQUCyYw/kzqlQAAAGz4aiqEIMhVgIJV8JThCt0q1ZGnrDykZ4igYpDeAXuftICEYyqaUoMQTsOgQgwi1fS5qC3IS3Eldwpv0cVwPrP4mqfyzwEiTFEqL/CgfIwi64tvfV1Pm60X9V7QpIFsnLJdStu/2F9ylZY43FwAAALQ+QLNEYQgyFWAgwMsHJSA44KR4GM50QqrSDxlaV0ATb1caYC5AmQsxAgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvDuGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmDDgrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAABu/b/yoUp8jhWUTR9KSPn5X2Y6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwC4ygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAgdtRjKFP7Flz3x+f61ZLaxw9P4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAABu/b/yoUp8jhWUTR9KSPn5X2Y6QAAAAAAAAAAAAAAACRWplq+9TUtvlYz1jaKsw5Ule2WwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDEE7EoIKVSIhVw/aXDVaJDEB0BzE0A2bKkjPWwlugsTc9VN58oD2xpu4MOgkO6+x2m6k8RjN8AwZSoaYFdlhmsQbP/2rNAAACgfkCfgiEIMhVgIMCaVGAhrXmIPSAALkCI2CAYEBSc4mlEqJOnWPpjkH2gb938np++J63YACAYQEACoFUgXP//////////////////////////wIZFpCDc///////////////////////////FgIXkFVQYACAYACQVJBhAQAKkARz//////////////////////////8Wc///////////////////////////FjRgQFFhAJ+QYQGFVltgAGBAUYCDA4GFh1rxklBQUD2AYACBFGEA3FdgQFGRUGAfGWA/PQEWggFgQFI9glI9YABgIIQBPmEA4VZbYGCRUFtQUJBQgGEBJVdgQFF/CMN5oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBUmAEAWEBHJBhAZpWW2BAUYCRA5D9W1BhAdZWW2AAYQE4YAeDYQHFVluRUH9GYWlsdXJlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAgwFSYCCCAZBQkZBQVltgAGEBeGAAg2EBulZbkVBgAIIBkFCRkFBWW2AAYQGQgmEBa1ZbkVCBkFCRkFBWW2AAYCCCAZBQgYEDYACDAVJhAbOBYQErVluQUJGQUFZbYACBkFCSkVBQVltgAIKCUmAgggGQUJKRUFBWW2A/gGEB5GAAOWAA8/5ggGBAUmAAgP3+omRpcGZzWCISIJX+0sVXtiufVfizgisL3G0V/ZOruV83UD0/eI2my7MAZHNvbGNDAAgAADODEE7DoJIYvvMxQddCYFJQp+hHegHCEuNkHnnW8Ml3z2VzGY5voGatfdHr+u9qjm242A0MabUeuFFJgreYS3ly0jH+wS9gAAAAcPhuOoQgyFWAglIIlOTtsnfkHciasHah8En0o++nALzoiAIaPHKDeOM2gIMQTsOgDK5Xm48SWgvogExxQHpnG5uGfeuhPMMJ1xLDYkMlXuGgTAsgoIU29M46dqxGWIq9gaoqIoYJ5Hyn6E3aHYsCT0UAAACP+I2DBXCHhCDIVYCCpPKUUwAAAAAAAAAAAAAAAAAA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], _skippedL1MessageBitmap=0x )
    File 1 of 2: TransparentUpgradeableProxy
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.9.0) (proxy/transparent/TransparentUpgradeableProxy.sol)
    pragma solidity ^0.8.0;
    import "../ERC1967/ERC1967Proxy.sol";
    /**
     * @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}
     * does not implement this interface directly, and some of its functions are implemented by an internal dispatch
     * mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not
     * include them in the ABI so this interface must be used to interact with it.
     */
    interface ITransparentUpgradeableProxy is IERC1967 {
        function admin() external view returns (address);
        function implementation() external view returns (address);
        function changeAdmin(address) external;
        function upgradeTo(address) external;
        function upgradeToAndCall(address, bytes memory) external payable;
    }
    /**
     * @dev This contract implements a proxy that is upgradeable by an admin.
     *
     * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector
     * clashing], which can potentially be used in an attack, this contract uses the
     * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two
     * things that go hand in hand:
     *
     * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if
     * that call matches one of the admin functions exposed by the proxy itself.
     * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the
     * implementation. If the admin tries to call a function on the implementation it will fail with an error that says
     * "admin cannot fallback to proxy target".
     *
     * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing
     * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due
     * to sudden errors when trying to call a function from the proxy implementation.
     *
     * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,
     * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.
     *
     * NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not
     * inherit from that interface, and instead the admin functions are implicitly implemented using a custom dispatch
     * mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to
     * fully implement transparency without decoding reverts caused by selector clashes between the proxy and the
     * implementation.
     *
     * WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler
     * will not check that there are no selector conflicts, due to the note above. A selector clash between any new function
     * and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could
     * render the admin operations inaccessible, which could prevent upgradeability. Transparency may also be compromised.
     */
    contract TransparentUpgradeableProxy is ERC1967Proxy {
        /**
         * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and
         * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.
         */
        constructor(address _logic, address admin_, bytes memory _data) payable ERC1967Proxy(_logic, _data) {
            _changeAdmin(admin_);
        }
        /**
         * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.
         *
         * CAUTION: This modifier is deprecated, as it could cause issues if the modified function has arguments, and the
         * implementation provides a function with the same selector.
         */
        modifier ifAdmin() {
            if (msg.sender == _getAdmin()) {
                _;
            } else {
                _fallback();
            }
        }
        /**
         * @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior
         */
        function _fallback() internal virtual override {
            if (msg.sender == _getAdmin()) {
                bytes memory ret;
                bytes4 selector = msg.sig;
                if (selector == ITransparentUpgradeableProxy.upgradeTo.selector) {
                    ret = _dispatchUpgradeTo();
                } else if (selector == ITransparentUpgradeableProxy.upgradeToAndCall.selector) {
                    ret = _dispatchUpgradeToAndCall();
                } else if (selector == ITransparentUpgradeableProxy.changeAdmin.selector) {
                    ret = _dispatchChangeAdmin();
                } else if (selector == ITransparentUpgradeableProxy.admin.selector) {
                    ret = _dispatchAdmin();
                } else if (selector == ITransparentUpgradeableProxy.implementation.selector) {
                    ret = _dispatchImplementation();
                } else {
                    revert("TransparentUpgradeableProxy: admin cannot fallback to proxy target");
                }
                assembly {
                    return(add(ret, 0x20), mload(ret))
                }
            } else {
                super._fallback();
            }
        }
        /**
         * @dev Returns the current admin.
         *
         * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
         * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
         * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`
         */
        function _dispatchAdmin() private returns (bytes memory) {
            _requireZeroValue();
            address admin = _getAdmin();
            return abi.encode(admin);
        }
        /**
         * @dev Returns the current implementation.
         *
         * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
         * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
         * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`
         */
        function _dispatchImplementation() private returns (bytes memory) {
            _requireZeroValue();
            address implementation = _implementation();
            return abi.encode(implementation);
        }
        /**
         * @dev Changes the admin of the proxy.
         *
         * Emits an {AdminChanged} event.
         */
        function _dispatchChangeAdmin() private returns (bytes memory) {
            _requireZeroValue();
            address newAdmin = abi.decode(msg.data[4:], (address));
            _changeAdmin(newAdmin);
            return "";
        }
        /**
         * @dev Upgrade the implementation of the proxy.
         */
        function _dispatchUpgradeTo() private returns (bytes memory) {
            _requireZeroValue();
            address newImplementation = abi.decode(msg.data[4:], (address));
            _upgradeToAndCall(newImplementation, bytes(""), false);
            return "";
        }
        /**
         * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified
         * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the
         * proxied contract.
         */
        function _dispatchUpgradeToAndCall() private returns (bytes memory) {
            (address newImplementation, bytes memory data) = abi.decode(msg.data[4:], (address, bytes));
            _upgradeToAndCall(newImplementation, data, true);
            return "";
        }
        /**
         * @dev Returns the current admin.
         *
         * CAUTION: This function is deprecated. Use {ERC1967Upgrade-_getAdmin} instead.
         */
        function _admin() internal view virtual returns (address) {
            return _getAdmin();
        }
        /**
         * @dev To keep this contract fully transparent, all `ifAdmin` functions must be payable. This helper is here to
         * emulate some proxy functions being non-payable while still allowing value to pass through.
         */
        function _requireZeroValue() private {
            require(msg.value == 0);
        }
    }
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)
    pragma solidity ^0.8.0;
    import "../Proxy.sol";
    import "./ERC1967Upgrade.sol";
    /**
     * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
     * implementation address that can be changed. This address is stored in storage in the location specified by
     * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the
     * implementation behind the proxy.
     */
    contract ERC1967Proxy is Proxy, ERC1967Upgrade {
        /**
         * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.
         *
         * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded
         * function call, and allows initializing the storage of the proxy like a Solidity constructor.
         */
        constructor(address _logic, bytes memory _data) payable {
            _upgradeToAndCall(_logic, _data, false);
        }
        /**
         * @dev Returns the current implementation address.
         */
        function _implementation() internal view virtual override returns (address impl) {
            return ERC1967Upgrade._getImplementation();
        }
    }
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)
    pragma solidity ^0.8.0;
    /**
     * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
     * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
     * be specified by overriding the virtual {_implementation} function.
     *
     * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
     * different contract through the {_delegate} function.
     *
     * The success and return data of the delegated call will be returned back to the caller of the proxy.
     */
    abstract contract Proxy {
        /**
         * @dev Delegates the current call to `implementation`.
         *
         * This function does not return to its internal call site, it will return directly to the external caller.
         */
        function _delegate(address implementation) internal virtual {
            assembly {
                // Copy msg.data. We take full control of memory in this inline assembly
                // block because it will not return to Solidity code. We overwrite the
                // Solidity scratch pad at memory position 0.
                calldatacopy(0, 0, calldatasize())
                // Call the implementation.
                // out and outsize are 0 because we don't know the size yet.
                let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)
                // Copy the returned data.
                returndatacopy(0, 0, returndatasize())
                switch result
                // delegatecall returns 0 on error.
                case 0 {
                    revert(0, returndatasize())
                }
                default {
                    return(0, returndatasize())
                }
            }
        }
        /**
         * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function
         * and {_fallback} should delegate.
         */
        function _implementation() internal view virtual returns (address);
        /**
         * @dev Delegates the current call to the address returned by `_implementation()`.
         *
         * This function does not return to its internal call site, it will return directly to the external caller.
         */
        function _fallback() internal virtual {
            _beforeFallback();
            _delegate(_implementation());
        }
        /**
         * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
         * function in the contract matches the call data.
         */
        fallback() external payable virtual {
            _fallback();
        }
        /**
         * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
         * is empty.
         */
        receive() external payable virtual {
            _fallback();
        }
        /**
         * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`
         * call, or as part of the Solidity `fallback` or `receive` functions.
         *
         * If overridden should call `super._beforeFallback()`.
         */
        function _beforeFallback() internal virtual {}
    }
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)
    pragma solidity ^0.8.2;
    import "../beacon/IBeacon.sol";
    import "../../interfaces/IERC1967.sol";
    import "../../interfaces/draft-IERC1822.sol";
    import "../../utils/Address.sol";
    import "../../utils/StorageSlot.sol";
    /**
     * @dev This abstract contract provides getters and event emitting update functions for
     * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.
     *
     * _Available since v4.1._
     */
    abstract contract ERC1967Upgrade is IERC1967 {
        // This is the keccak-256 hash of "eip1967.proxy.rollback" subtracted by 1
        bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;
        /**
         * @dev Storage slot with the address of the current implementation.
         * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
         * validated in the constructor.
         */
        bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
        /**
         * @dev Returns the current implementation address.
         */
        function _getImplementation() internal view returns (address) {
            return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
        }
        /**
         * @dev Stores a new address in the EIP1967 implementation slot.
         */
        function _setImplementation(address newImplementation) private {
            require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
            StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
        }
        /**
         * @dev Perform implementation upgrade
         *
         * Emits an {Upgraded} event.
         */
        function _upgradeTo(address newImplementation) internal {
            _setImplementation(newImplementation);
            emit Upgraded(newImplementation);
        }
        /**
         * @dev Perform implementation upgrade with additional setup call.
         *
         * Emits an {Upgraded} event.
         */
        function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {
            _upgradeTo(newImplementation);
            if (data.length > 0 || forceCall) {
                Address.functionDelegateCall(newImplementation, data);
            }
        }
        /**
         * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.
         *
         * Emits an {Upgraded} event.
         */
        function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {
            // Upgrades from old implementations will perform a rollback test. This test requires the new
            // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing
            // this special case will break upgrade paths from old UUPS implementation to new ones.
            if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {
                _setImplementation(newImplementation);
            } else {
                try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {
                    require(slot == _IMPLEMENTATION_SLOT, "ERC1967Upgrade: unsupported proxiableUUID");
                } catch {
                    revert("ERC1967Upgrade: new implementation is not UUPS");
                }
                _upgradeToAndCall(newImplementation, data, forceCall);
            }
        }
        /**
         * @dev Storage slot with the admin of the contract.
         * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is
         * validated in the constructor.
         */
        bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;
        /**
         * @dev Returns the current admin.
         */
        function _getAdmin() internal view returns (address) {
            return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;
        }
        /**
         * @dev Stores a new address in the EIP1967 admin slot.
         */
        function _setAdmin(address newAdmin) private {
            require(newAdmin != address(0), "ERC1967: new admin is the zero address");
            StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;
        }
        /**
         * @dev Changes the admin of the proxy.
         *
         * Emits an {AdminChanged} event.
         */
        function _changeAdmin(address newAdmin) internal {
            emit AdminChanged(_getAdmin(), newAdmin);
            _setAdmin(newAdmin);
        }
        /**
         * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.
         * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.
         */
        bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;
        /**
         * @dev Returns the current beacon.
         */
        function _getBeacon() internal view returns (address) {
            return StorageSlot.getAddressSlot(_BEACON_SLOT).value;
        }
        /**
         * @dev Stores a new beacon in the EIP1967 beacon slot.
         */
        function _setBeacon(address newBeacon) private {
            require(Address.isContract(newBeacon), "ERC1967: new beacon is not a contract");
            require(
                Address.isContract(IBeacon(newBeacon).implementation()),
                "ERC1967: beacon implementation is not a contract"
            );
            StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;
        }
        /**
         * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does
         * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).
         *
         * Emits a {BeaconUpgraded} event.
         */
        function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {
            _setBeacon(newBeacon);
            emit BeaconUpgraded(newBeacon);
            if (data.length > 0 || forceCall) {
                Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);
            }
        }
    }
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)
    pragma solidity ^0.8.0;
    /**
     * @dev This is the interface that {BeaconProxy} expects of its beacon.
     */
    interface IBeacon {
        /**
         * @dev Must return an address that can be used as a delegate call target.
         *
         * {BeaconProxy} will check that this address is a contract.
         */
        function implementation() external view returns (address);
    }
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)
    pragma solidity ^0.8.0;
    /**
     * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.
     *
     * _Available since v4.8.3._
     */
    interface IERC1967 {
        /**
         * @dev Emitted when the implementation is upgraded.
         */
        event Upgraded(address indexed implementation);
        /**
         * @dev Emitted when the admin account has changed.
         */
        event AdminChanged(address previousAdmin, address newAdmin);
        /**
         * @dev Emitted when the beacon is changed.
         */
        event BeaconUpgraded(address indexed beacon);
    }
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)
    pragma solidity ^0.8.0;
    /**
     * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified
     * proxy whose upgrades are fully controlled by the current implementation.
     */
    interface IERC1822Proxiable {
        /**
         * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation
         * address.
         *
         * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks
         * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this
         * function revert if invoked through a proxy.
         */
        function proxiableUUID() external view returns (bytes32);
    }
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)
    pragma solidity ^0.8.1;
    /**
     * @dev Collection of functions related to the address type
     */
    library Address {
        /**
         * @dev Returns true if `account` is a contract.
         *
         * [IMPORTANT]
         * ====
         * It is unsafe to assume that an address for which this function returns
         * false is an externally-owned account (EOA) and not a contract.
         *
         * Among others, `isContract` will return false for the following
         * types of addresses:
         *
         *  - an externally-owned account
         *  - a contract in construction
         *  - an address where a contract will be created
         *  - an address where a contract lived, but was destroyed
         *
         * Furthermore, `isContract` will also return true if the target contract within
         * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,
         * which only has an effect at the end of a transaction.
         * ====
         *
         * [IMPORTANT]
         * ====
         * You shouldn't rely on `isContract` to protect against flash loan attacks!
         *
         * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
         * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
         * constructor.
         * ====
         */
        function isContract(address account) internal view returns (bool) {
            // This method relies on extcodesize/address.code.length, which returns 0
            // for contracts in construction, since the code is only stored at the end
            // of the constructor execution.
            return account.code.length > 0;
        }
        /**
         * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
         * `recipient`, forwarding all available gas and reverting on errors.
         *
         * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
         * of certain opcodes, possibly making contracts go over the 2300 gas limit
         * imposed by `transfer`, making them unable to receive funds via
         * `transfer`. {sendValue} removes this limitation.
         *
         * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].
         *
         * IMPORTANT: because control is transferred to `recipient`, care must be
         * taken to not create reentrancy vulnerabilities. Consider using
         * {ReentrancyGuard} or the
         * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
         */
        function sendValue(address payable recipient, uint256 amount) internal {
            require(address(this).balance >= amount, "Address: insufficient balance");
            (bool success, ) = recipient.call{value: amount}("");
            require(success, "Address: unable to send value, recipient may have reverted");
        }
        /**
         * @dev Performs a Solidity function call using a low level `call`. A
         * plain `call` is an unsafe replacement for a function call: use this
         * function instead.
         *
         * If `target` reverts with a revert reason, it is bubbled up by this
         * function (like regular Solidity function calls).
         *
         * Returns the raw returned data. To convert to the expected return value,
         * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
         *
         * Requirements:
         *
         * - `target` must be a contract.
         * - calling `target` with `data` must not revert.
         *
         * _Available since v3.1._
         */
        function functionCall(address target, bytes memory data) internal returns (bytes memory) {
            return functionCallWithValue(target, data, 0, "Address: low-level call failed");
        }
        /**
         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
         * `errorMessage` as a fallback revert reason when `target` reverts.
         *
         * _Available since v3.1._
         */
        function functionCall(
            address target,
            bytes memory data,
            string memory errorMessage
        ) internal returns (bytes memory) {
            return functionCallWithValue(target, data, 0, errorMessage);
        }
        /**
         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
         * but also transferring `value` wei to `target`.
         *
         * Requirements:
         *
         * - the calling contract must have an ETH balance of at least `value`.
         * - the called Solidity function must be `payable`.
         *
         * _Available since v3.1._
         */
        function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
            return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
        }
        /**
         * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
         * with `errorMessage` as a fallback revert reason when `target` reverts.
         *
         * _Available since v3.1._
         */
        function functionCallWithValue(
            address target,
            bytes memory data,
            uint256 value,
            string memory errorMessage
        ) internal returns (bytes memory) {
            require(address(this).balance >= value, "Address: insufficient balance for call");
            (bool success, bytes memory returndata) = target.call{value: value}(data);
            return verifyCallResultFromTarget(target, success, returndata, errorMessage);
        }
        /**
         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
         * but performing a static call.
         *
         * _Available since v3.3._
         */
        function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
            return functionStaticCall(target, data, "Address: low-level static call failed");
        }
        /**
         * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
         * but performing a static call.
         *
         * _Available since v3.3._
         */
        function functionStaticCall(
            address target,
            bytes memory data,
            string memory errorMessage
        ) internal view returns (bytes memory) {
            (bool success, bytes memory returndata) = target.staticcall(data);
            return verifyCallResultFromTarget(target, success, returndata, errorMessage);
        }
        /**
         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
         * but performing a delegate call.
         *
         * _Available since v3.4._
         */
        function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
            return functionDelegateCall(target, data, "Address: low-level delegate call failed");
        }
        /**
         * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
         * but performing a delegate call.
         *
         * _Available since v3.4._
         */
        function functionDelegateCall(
            address target,
            bytes memory data,
            string memory errorMessage
        ) internal returns (bytes memory) {
            (bool success, bytes memory returndata) = target.delegatecall(data);
            return verifyCallResultFromTarget(target, success, returndata, errorMessage);
        }
        /**
         * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
         * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
         *
         * _Available since v4.8._
         */
        function verifyCallResultFromTarget(
            address target,
            bool success,
            bytes memory returndata,
            string memory errorMessage
        ) internal view returns (bytes memory) {
            if (success) {
                if (returndata.length == 0) {
                    // only check isContract if the call was successful and the return data is empty
                    // otherwise we already know that it was a contract
                    require(isContract(target), "Address: call to non-contract");
                }
                return returndata;
            } else {
                _revert(returndata, errorMessage);
            }
        }
        /**
         * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
         * revert reason or using the provided one.
         *
         * _Available since v4.3._
         */
        function verifyCallResult(
            bool success,
            bytes memory returndata,
            string memory errorMessage
        ) internal pure returns (bytes memory) {
            if (success) {
                return returndata;
            } else {
                _revert(returndata, errorMessage);
            }
        }
        function _revert(bytes memory returndata, string memory errorMessage) private pure {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly
                /// @solidity memory-safe-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)
    // This file was procedurally generated from scripts/generate/templates/StorageSlot.js.
    pragma solidity ^0.8.0;
    /**
     * @dev Library for reading and writing primitive types to specific storage slots.
     *
     * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
     * This library helps with reading and writing to such slots without the need for inline assembly.
     *
     * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
     *
     * Example usage to set ERC1967 implementation slot:
     * ```solidity
     * contract ERC1967 {
     *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
     *
     *     function _getImplementation() internal view returns (address) {
     *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
     *     }
     *
     *     function _setImplementation(address newImplementation) internal {
     *         require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
     *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
     *     }
     * }
     * ```
     *
     * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._
     * _Available since v4.9 for `string`, `bytes`._
     */
    library StorageSlot {
        struct AddressSlot {
            address value;
        }
        struct BooleanSlot {
            bool value;
        }
        struct Bytes32Slot {
            bytes32 value;
        }
        struct Uint256Slot {
            uint256 value;
        }
        struct StringSlot {
            string value;
        }
        struct BytesSlot {
            bytes value;
        }
        /**
         * @dev Returns an `AddressSlot` with member `value` located at `slot`.
         */
        function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
            /// @solidity memory-safe-assembly
            assembly {
                r.slot := slot
            }
        }
        /**
         * @dev Returns an `BooleanSlot` with member `value` located at `slot`.
         */
        function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
            /// @solidity memory-safe-assembly
            assembly {
                r.slot := slot
            }
        }
        /**
         * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
         */
        function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
            /// @solidity memory-safe-assembly
            assembly {
                r.slot := slot
            }
        }
        /**
         * @dev Returns an `Uint256Slot` with member `value` located at `slot`.
         */
        function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
            /// @solidity memory-safe-assembly
            assembly {
                r.slot := slot
            }
        }
        /**
         * @dev Returns an `StringSlot` with member `value` located at `slot`.
         */
        function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {
            /// @solidity memory-safe-assembly
            assembly {
                r.slot := slot
            }
        }
        /**
         * @dev Returns an `StringSlot` representation of the string storage pointer `store`.
         */
        function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {
            /// @solidity memory-safe-assembly
            assembly {
                r.slot := store.slot
            }
        }
        /**
         * @dev Returns an `BytesSlot` with member `value` located at `slot`.
         */
        function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {
            /// @solidity memory-safe-assembly
            assembly {
                r.slot := slot
            }
        }
        /**
         * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.
         */
        function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {
            /// @solidity memory-safe-assembly
            assembly {
                r.slot := store.slot
            }
        }
    }
    

    File 2 of 2: ScrollChain
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)
    pragma solidity ^0.8.0;
    import "../utils/ContextUpgradeable.sol";
    import "../proxy/utils/Initializable.sol";
    /**
     * @dev Contract module which provides a basic access control mechanism, where
     * there is an account (an owner) that can be granted exclusive access to
     * specific functions.
     *
     * By default, the owner account will be the one that deploys the contract. This
     * can later be changed with {transferOwnership}.
     *
     * This module is used through inheritance. It will make available the modifier
     * `onlyOwner`, which can be applied to your functions to restrict their use to
     * the owner.
     */
    abstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {
        address private _owner;
        event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
        /**
         * @dev Initializes the contract setting the deployer as the initial owner.
         */
        function __Ownable_init() internal onlyInitializing {
            __Ownable_init_unchained();
        }
        function __Ownable_init_unchained() internal onlyInitializing {
            _transferOwnership(_msgSender());
        }
        /**
         * @dev Throws if called by any account other than the owner.
         */
        modifier onlyOwner() {
            _checkOwner();
            _;
        }
        /**
         * @dev Returns the address of the current owner.
         */
        function owner() public view virtual returns (address) {
            return _owner;
        }
        /**
         * @dev Throws if the sender is not the owner.
         */
        function _checkOwner() internal view virtual {
            require(owner() == _msgSender(), "Ownable: caller is not the owner");
        }
        /**
         * @dev Leaves the contract without owner. It will not be possible to call
         * `onlyOwner` functions. Can only be called by the current owner.
         *
         * NOTE: Renouncing ownership will leave the contract without an owner,
         * thereby disabling any functionality that is only available to the owner.
         */
        function renounceOwnership() public virtual onlyOwner {
            _transferOwnership(address(0));
        }
        /**
         * @dev Transfers ownership of the contract to a new account (`newOwner`).
         * Can only be called by the current owner.
         */
        function transferOwnership(address newOwner) public virtual onlyOwner {
            require(newOwner != address(0), "Ownable: new owner is the zero address");
            _transferOwnership(newOwner);
        }
        /**
         * @dev Transfers ownership of the contract to a new account (`newOwner`).
         * Internal function without access restriction.
         */
        function _transferOwnership(address newOwner) internal virtual {
            address oldOwner = _owner;
            _owner = newOwner;
            emit OwnershipTransferred(oldOwner, newOwner);
        }
        /**
         * @dev This empty reserved space is put in place to allow future versions to add new
         * variables without shifting down storage in the inheritance chain.
         * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
         */
        uint256[49] private __gap;
    }
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)
    pragma solidity ^0.8.2;
    import "../../utils/AddressUpgradeable.sol";
    /**
     * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed
     * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an
     * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer
     * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.
     *
     * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be
     * reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in
     * case an upgrade adds a module that needs to be initialized.
     *
     * For example:
     *
     * [.hljs-theme-light.nopadding]
     * ```solidity
     * contract MyToken is ERC20Upgradeable {
     *     function initialize() initializer public {
     *         __ERC20_init("MyToken", "MTK");
     *     }
     * }
     *
     * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {
     *     function initializeV2() reinitializer(2) public {
     *         __ERC20Permit_init("MyToken");
     *     }
     * }
     * ```
     *
     * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as
     * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.
     *
     * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure
     * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.
     *
     * [CAUTION]
     * ====
     * Avoid leaving a contract uninitialized.
     *
     * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation
     * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke
     * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:
     *
     * [.hljs-theme-light.nopadding]
     * ```
     * /// @custom:oz-upgrades-unsafe-allow constructor
     * constructor() {
     *     _disableInitializers();
     * }
     * ```
     * ====
     */
    abstract contract Initializable {
        /**
         * @dev Indicates that the contract has been initialized.
         * @custom:oz-retyped-from bool
         */
        uint8 private _initialized;
        /**
         * @dev Indicates that the contract is in the process of being initialized.
         */
        bool private _initializing;
        /**
         * @dev Triggered when the contract has been initialized or reinitialized.
         */
        event Initialized(uint8 version);
        /**
         * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,
         * `onlyInitializing` functions can be used to initialize parent contracts.
         *
         * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a
         * constructor.
         *
         * Emits an {Initialized} event.
         */
        modifier initializer() {
            bool isTopLevelCall = !_initializing;
            require(
                (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),
                "Initializable: contract is already initialized"
            );
            _initialized = 1;
            if (isTopLevelCall) {
                _initializing = true;
            }
            _;
            if (isTopLevelCall) {
                _initializing = false;
                emit Initialized(1);
            }
        }
        /**
         * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the
         * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be
         * used to initialize parent contracts.
         *
         * A reinitializer may be used after the original initialization step. This is essential to configure modules that
         * are added through upgrades and that require initialization.
         *
         * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`
         * cannot be nested. If one is invoked in the context of another, execution will revert.
         *
         * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in
         * a contract, executing them in the right order is up to the developer or operator.
         *
         * WARNING: setting the version to 255 will prevent any future reinitialization.
         *
         * Emits an {Initialized} event.
         */
        modifier reinitializer(uint8 version) {
            require(!_initializing && _initialized < version, "Initializable: contract is already initialized");
            _initialized = version;
            _initializing = true;
            _;
            _initializing = false;
            emit Initialized(version);
        }
        /**
         * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the
         * {initializer} and {reinitializer} modifiers, directly or indirectly.
         */
        modifier onlyInitializing() {
            require(_initializing, "Initializable: contract is not initializing");
            _;
        }
        /**
         * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.
         * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized
         * to any version. It is recommended to use this to lock implementation contracts that are designed to be called
         * through proxies.
         *
         * Emits an {Initialized} event the first time it is successfully executed.
         */
        function _disableInitializers() internal virtual {
            require(!_initializing, "Initializable: contract is initializing");
            if (_initialized != type(uint8).max) {
                _initialized = type(uint8).max;
                emit Initialized(type(uint8).max);
            }
        }
        /**
         * @dev Returns the highest version that has been initialized. See {reinitializer}.
         */
        function _getInitializedVersion() internal view returns (uint8) {
            return _initialized;
        }
        /**
         * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.
         */
        function _isInitializing() internal view returns (bool) {
            return _initializing;
        }
    }
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)
    pragma solidity ^0.8.0;
    import "../utils/ContextUpgradeable.sol";
    import "../proxy/utils/Initializable.sol";
    /**
     * @dev Contract module which allows children to implement an emergency stop
     * mechanism that can be triggered by an authorized account.
     *
     * This module is used through inheritance. It will make available the
     * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
     * the functions of your contract. Note that they will not be pausable by
     * simply including this module, only once the modifiers are put in place.
     */
    abstract contract PausableUpgradeable is Initializable, ContextUpgradeable {
        /**
         * @dev Emitted when the pause is triggered by `account`.
         */
        event Paused(address account);
        /**
         * @dev Emitted when the pause is lifted by `account`.
         */
        event Unpaused(address account);
        bool private _paused;
        /**
         * @dev Initializes the contract in unpaused state.
         */
        function __Pausable_init() internal onlyInitializing {
            __Pausable_init_unchained();
        }
        function __Pausable_init_unchained() internal onlyInitializing {
            _paused = false;
        }
        /**
         * @dev Modifier to make a function callable only when the contract is not paused.
         *
         * Requirements:
         *
         * - The contract must not be paused.
         */
        modifier whenNotPaused() {
            _requireNotPaused();
            _;
        }
        /**
         * @dev Modifier to make a function callable only when the contract is paused.
         *
         * Requirements:
         *
         * - The contract must be paused.
         */
        modifier whenPaused() {
            _requirePaused();
            _;
        }
        /**
         * @dev Returns true if the contract is paused, and false otherwise.
         */
        function paused() public view virtual returns (bool) {
            return _paused;
        }
        /**
         * @dev Throws if the contract is paused.
         */
        function _requireNotPaused() internal view virtual {
            require(!paused(), "Pausable: paused");
        }
        /**
         * @dev Throws if the contract is not paused.
         */
        function _requirePaused() internal view virtual {
            require(paused(), "Pausable: not paused");
        }
        /**
         * @dev Triggers stopped state.
         *
         * Requirements:
         *
         * - The contract must not be paused.
         */
        function _pause() internal virtual whenNotPaused {
            _paused = true;
            emit Paused(_msgSender());
        }
        /**
         * @dev Returns to normal state.
         *
         * Requirements:
         *
         * - The contract must be paused.
         */
        function _unpause() internal virtual whenPaused {
            _paused = false;
            emit Unpaused(_msgSender());
        }
        /**
         * @dev This empty reserved space is put in place to allow future versions to add new
         * variables without shifting down storage in the inheritance chain.
         * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
         */
        uint256[49] private __gap;
    }
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)
    pragma solidity ^0.8.1;
    /**
     * @dev Collection of functions related to the address type
     */
    library AddressUpgradeable {
        /**
         * @dev Returns true if `account` is a contract.
         *
         * [IMPORTANT]
         * ====
         * It is unsafe to assume that an address for which this function returns
         * false is an externally-owned account (EOA) and not a contract.
         *
         * Among others, `isContract` will return false for the following
         * types of addresses:
         *
         *  - an externally-owned account
         *  - a contract in construction
         *  - an address where a contract will be created
         *  - an address where a contract lived, but was destroyed
         *
         * Furthermore, `isContract` will also return true if the target contract within
         * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,
         * which only has an effect at the end of a transaction.
         * ====
         *
         * [IMPORTANT]
         * ====
         * You shouldn't rely on `isContract` to protect against flash loan attacks!
         *
         * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
         * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
         * constructor.
         * ====
         */
        function isContract(address account) internal view returns (bool) {
            // This method relies on extcodesize/address.code.length, which returns 0
            // for contracts in construction, since the code is only stored at the end
            // of the constructor execution.
            return account.code.length > 0;
        }
        /**
         * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
         * `recipient`, forwarding all available gas and reverting on errors.
         *
         * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
         * of certain opcodes, possibly making contracts go over the 2300 gas limit
         * imposed by `transfer`, making them unable to receive funds via
         * `transfer`. {sendValue} removes this limitation.
         *
         * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].
         *
         * IMPORTANT: because control is transferred to `recipient`, care must be
         * taken to not create reentrancy vulnerabilities. Consider using
         * {ReentrancyGuard} or the
         * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
         */
        function sendValue(address payable recipient, uint256 amount) internal {
            require(address(this).balance >= amount, "Address: insufficient balance");
            (bool success, ) = recipient.call{value: amount}("");
            require(success, "Address: unable to send value, recipient may have reverted");
        }
        /**
         * @dev Performs a Solidity function call using a low level `call`. A
         * plain `call` is an unsafe replacement for a function call: use this
         * function instead.
         *
         * If `target` reverts with a revert reason, it is bubbled up by this
         * function (like regular Solidity function calls).
         *
         * Returns the raw returned data. To convert to the expected return value,
         * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
         *
         * Requirements:
         *
         * - `target` must be a contract.
         * - calling `target` with `data` must not revert.
         *
         * _Available since v3.1._
         */
        function functionCall(address target, bytes memory data) internal returns (bytes memory) {
            return functionCallWithValue(target, data, 0, "Address: low-level call failed");
        }
        /**
         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
         * `errorMessage` as a fallback revert reason when `target` reverts.
         *
         * _Available since v3.1._
         */
        function functionCall(
            address target,
            bytes memory data,
            string memory errorMessage
        ) internal returns (bytes memory) {
            return functionCallWithValue(target, data, 0, errorMessage);
        }
        /**
         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
         * but also transferring `value` wei to `target`.
         *
         * Requirements:
         *
         * - the calling contract must have an ETH balance of at least `value`.
         * - the called Solidity function must be `payable`.
         *
         * _Available since v3.1._
         */
        function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
            return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
        }
        /**
         * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
         * with `errorMessage` as a fallback revert reason when `target` reverts.
         *
         * _Available since v3.1._
         */
        function functionCallWithValue(
            address target,
            bytes memory data,
            uint256 value,
            string memory errorMessage
        ) internal returns (bytes memory) {
            require(address(this).balance >= value, "Address: insufficient balance for call");
            (bool success, bytes memory returndata) = target.call{value: value}(data);
            return verifyCallResultFromTarget(target, success, returndata, errorMessage);
        }
        /**
         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
         * but performing a static call.
         *
         * _Available since v3.3._
         */
        function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
            return functionStaticCall(target, data, "Address: low-level static call failed");
        }
        /**
         * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
         * but performing a static call.
         *
         * _Available since v3.3._
         */
        function functionStaticCall(
            address target,
            bytes memory data,
            string memory errorMessage
        ) internal view returns (bytes memory) {
            (bool success, bytes memory returndata) = target.staticcall(data);
            return verifyCallResultFromTarget(target, success, returndata, errorMessage);
        }
        /**
         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
         * but performing a delegate call.
         *
         * _Available since v3.4._
         */
        function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
            return functionDelegateCall(target, data, "Address: low-level delegate call failed");
        }
        /**
         * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
         * but performing a delegate call.
         *
         * _Available since v3.4._
         */
        function functionDelegateCall(
            address target,
            bytes memory data,
            string memory errorMessage
        ) internal returns (bytes memory) {
            (bool success, bytes memory returndata) = target.delegatecall(data);
            return verifyCallResultFromTarget(target, success, returndata, errorMessage);
        }
        /**
         * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
         * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
         *
         * _Available since v4.8._
         */
        function verifyCallResultFromTarget(
            address target,
            bool success,
            bytes memory returndata,
            string memory errorMessage
        ) internal view returns (bytes memory) {
            if (success) {
                if (returndata.length == 0) {
                    // only check isContract if the call was successful and the return data is empty
                    // otherwise we already know that it was a contract
                    require(isContract(target), "Address: call to non-contract");
                }
                return returndata;
            } else {
                _revert(returndata, errorMessage);
            }
        }
        /**
         * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
         * revert reason or using the provided one.
         *
         * _Available since v4.3._
         */
        function verifyCallResult(
            bool success,
            bytes memory returndata,
            string memory errorMessage
        ) internal pure returns (bytes memory) {
            if (success) {
                return returndata;
            } else {
                _revert(returndata, errorMessage);
            }
        }
        function _revert(bytes memory returndata, string memory errorMessage) private pure {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly
                /// @solidity memory-safe-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
    pragma solidity ^0.8.0;
    import "../proxy/utils/Initializable.sol";
    /**
     * @dev Provides information about the current execution context, including the
     * sender of the transaction and its data. While these are generally available
     * via msg.sender and msg.data, they should not be accessed in such a direct
     * manner, since when dealing with meta-transactions the account sending and
     * paying for execution may not be the actual sender (as far as an application
     * is concerned).
     *
     * This contract is only required for intermediate, library-like contracts.
     */
    abstract contract ContextUpgradeable is Initializable {
        function __Context_init() internal onlyInitializing {
        }
        function __Context_init_unchained() internal onlyInitializing {
        }
        function _msgSender() internal view virtual returns (address) {
            return msg.sender;
        }
        function _msgData() internal view virtual returns (bytes calldata) {
            return msg.data;
        }
        /**
         * @dev This empty reserved space is put in place to allow future versions to add new
         * variables without shifting down storage in the inheritance chain.
         * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
         */
        uint256[50] private __gap;
    }
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.16;
    interface IL1MessageQueue {
        /**********
         * Events *
         **********/
        /// @notice Emitted when a new L1 => L2 transaction is appended to the queue.
        /// @param sender The address of account who initiates the transaction.
        /// @param target The address of account who will receive the transaction.
        /// @param value The value passed with the transaction.
        /// @param queueIndex The index of this transaction in the queue.
        /// @param gasLimit Gas limit required to complete the message relay on L2.
        /// @param data The calldata of the transaction.
        event QueueTransaction(
            address indexed sender,
            address indexed target,
            uint256 value,
            uint64 queueIndex,
            uint256 gasLimit,
            bytes data
        );
        /// @notice Emitted when some L1 => L2 transactions are included in L1.
        /// @param startIndex The start index of messages popped.
        /// @param count The number of messages popped.
        /// @param skippedBitmap A bitmap indicates whether a message is skipped.
        event DequeueTransaction(uint256 startIndex, uint256 count, uint256 skippedBitmap);
        /// @notice Emitted when a message is dropped from L1.
        /// @param index The index of message dropped.
        event DropTransaction(uint256 index);
        /// @notice Emitted when owner updates gas oracle contract.
        /// @param _oldGasOracle The address of old gas oracle contract.
        /// @param _newGasOracle The address of new gas oracle contract.
        event UpdateGasOracle(address indexed _oldGasOracle, address indexed _newGasOracle);
        /// @notice Emitted when owner updates max gas limit.
        /// @param _oldMaxGasLimit The old max gas limit.
        /// @param _newMaxGasLimit The new max gas limit.
        event UpdateMaxGasLimit(uint256 _oldMaxGasLimit, uint256 _newMaxGasLimit);
        /**********
         * Errors *
         **********/
        /// @dev Thrown when the given address is `address(0)`.
        error ErrorZeroAddress();
        /*************************
         * Public View Functions *
         *************************/
        /// @notice The start index of all pending inclusion messages.
        function pendingQueueIndex() external view returns (uint256);
        /// @notice Return the index of next appended message.
        /// @dev Also the total number of appended messages.
        function nextCrossDomainMessageIndex() external view returns (uint256);
        /// @notice Return the message of in `queueIndex`.
        /// @param queueIndex The index to query.
        function getCrossDomainMessage(uint256 queueIndex) external view returns (bytes32);
        /// @notice Return the amount of ETH should pay for cross domain message.
        /// @param gasLimit Gas limit required to complete the message relay on L2.
        function estimateCrossDomainMessageFee(uint256 gasLimit) external view returns (uint256);
        /// @notice Return the amount of intrinsic gas fee should pay for cross domain message.
        /// @param _calldata The calldata of L1-initiated transaction.
        function calculateIntrinsicGasFee(bytes calldata _calldata) external view returns (uint256);
        /// @notice Return the hash of a L1 message.
        /// @param sender The address of sender.
        /// @param queueIndex The queue index of this message.
        /// @param value The amount of Ether transfer to target.
        /// @param target The address of target.
        /// @param gasLimit The gas limit provided.
        /// @param data The calldata passed to target address.
        function computeTransactionHash(
            address sender,
            uint256 queueIndex,
            uint256 value,
            address target,
            uint256 gasLimit,
            bytes calldata data
        ) external view returns (bytes32);
        /// @notice Return whether the message is skipped.
        /// @param queueIndex The queue index of the message to check.
        function isMessageSkipped(uint256 queueIndex) external view returns (bool);
        /// @notice Return whether the message is dropped.
        /// @param queueIndex The queue index of the message to check.
        function isMessageDropped(uint256 queueIndex) external view returns (bool);
        /*****************************
         * Public Mutating Functions *
         *****************************/
        /// @notice Append a L1 to L2 message into this contract.
        /// @param target The address of target contract to call in L2.
        /// @param gasLimit The maximum gas should be used for relay this message in L2.
        /// @param data The calldata passed to target contract.
        function appendCrossDomainMessage(
            address target,
            uint256 gasLimit,
            bytes calldata data
        ) external;
        /// @notice Append an enforced transaction to this contract.
        /// @dev The address of sender should be an EOA.
        /// @param sender The address of sender who will initiate this transaction in L2.
        /// @param target The address of target contract to call in L2.
        /// @param value The value passed
        /// @param gasLimit The maximum gas should be used for this transaction in L2.
        /// @param data The calldata passed to target contract.
        function appendEnforcedTransaction(
            address sender,
            address target,
            uint256 value,
            uint256 gasLimit,
            bytes calldata data
        ) external;
        /// @notice Pop finalized messages from queue.
        ///
        /// @dev We can pop at most 256 messages each time. And if the message is not skipped,
        ///      the corresponding entry will be cleared.
        ///
        /// @param startIndex The start index to pop.
        /// @param count The number of messages to pop.
        /// @param skippedBitmap A bitmap indicates whether a message is skipped.
        function popCrossDomainMessage(
            uint256 startIndex,
            uint256 count,
            uint256 skippedBitmap
        ) external;
        /// @notice Drop a skipped message from the queue.
        function dropCrossDomainMessage(uint256 index) external;
    }
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.16;
    interface IScrollChain {
        /**********
         * Events *
         **********/
        /// @notice Emitted when a new batch is committed.
        /// @param batchIndex The index of the batch.
        /// @param batchHash The hash of the batch.
        event CommitBatch(uint256 indexed batchIndex, bytes32 indexed batchHash);
        /// @notice revert a pending batch.
        /// @param batchIndex The index of the batch.
        /// @param batchHash The hash of the batch
        event RevertBatch(uint256 indexed batchIndex, bytes32 indexed batchHash);
        /// @notice Emitted when a batch is finalized.
        /// @param batchIndex The index of the batch.
        /// @param batchHash The hash of the batch
        /// @param stateRoot The state root on layer 2 after this batch.
        /// @param withdrawRoot The merkle root on layer2 after this batch.
        event FinalizeBatch(uint256 indexed batchIndex, bytes32 indexed batchHash, bytes32 stateRoot, bytes32 withdrawRoot);
        /**********
         * Errors *
         **********/
        /// @dev Thrown when the given address is `address(0)`.
        error ErrorZeroAddress();
        /*************************
         * Public View Functions *
         *************************/
        /// @notice The latest finalized batch index.
        function lastFinalizedBatchIndex() external view returns (uint256);
        /// @notice Return the batch hash of a committed batch.
        /// @param batchIndex The index of the batch.
        function committedBatches(uint256 batchIndex) external view returns (bytes32);
        /// @notice Return the state root of a committed batch.
        /// @param batchIndex The index of the batch.
        function finalizedStateRoots(uint256 batchIndex) external view returns (bytes32);
        /// @notice Return the message root of a committed batch.
        /// @param batchIndex The index of the batch.
        function withdrawRoots(uint256 batchIndex) external view returns (bytes32);
        /// @notice Return whether the batch is finalized by batch index.
        /// @param batchIndex The index of the batch.
        function isBatchFinalized(uint256 batchIndex) external view returns (bool);
        /*****************************
         * Public Mutating Functions *
         *****************************/
        /// @notice Commit a batch of transactions on layer 1.
        ///
        /// @param version The version of current batch.
        /// @param parentBatchHeader The header of parent batch, see the comments of `BatchHeaderV0Codec`.
        /// @param chunks The list of encoded chunks, see the comments of `ChunkCodec`.
        /// @param skippedL1MessageBitmap The bitmap indicates whether each L1 message is skipped or not.
        function commitBatch(
            uint8 version,
            bytes calldata parentBatchHeader,
            bytes[] memory chunks,
            bytes calldata skippedL1MessageBitmap
        ) external;
        /// @notice Revert a pending batch.
        /// @dev one can only revert unfinalized batches.
        /// @param batchHeader The header of current batch, see the encoding in comments of `commitBatch`.
        /// @param count The number of subsequent batches to revert, including current batch.
        function revertBatch(bytes calldata batchHeader, uint256 count) external;
        /// @notice Finalize a committed batch on layer 1.
        /// @param batchHeader The header of current batch, see the encoding in comments of `commitBatch.
        /// @param prevStateRoot The state root of parent batch.
        /// @param postStateRoot The state root of current batch.
        /// @param withdrawRoot The withdraw trie root of current batch.
        /// @param aggrProof The aggregation proof for current batch.
        function finalizeBatchWithProof(
            bytes calldata batchHeader,
            bytes32 prevStateRoot,
            bytes32 postStateRoot,
            bytes32 withdrawRoot,
            bytes calldata aggrProof
        ) external;
    }
    // SPDX-License-Identifier: MIT
    pragma solidity =0.8.16;
    import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
    import {PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol";
    import {IL1MessageQueue} from "./IL1MessageQueue.sol";
    import {IScrollChain} from "./IScrollChain.sol";
    import {BatchHeaderV0Codec} from "../../libraries/codec/BatchHeaderV0Codec.sol";
    import {ChunkCodec} from "../../libraries/codec/ChunkCodec.sol";
    import {IRollupVerifier} from "../../libraries/verifier/IRollupVerifier.sol";
    // solhint-disable no-inline-assembly
    // solhint-disable reason-string
    /// @title ScrollChain
    /// @notice This contract maintains data for the Scroll rollup.
    contract ScrollChain is OwnableUpgradeable, PausableUpgradeable, IScrollChain {
        /**********
         * Events *
         **********/
        /// @notice Emitted when owner updates the status of sequencer.
        /// @param account The address of account updated.
        /// @param status The status of the account updated.
        event UpdateSequencer(address indexed account, bool status);
        /// @notice Emitted when owner updates the status of prover.
        /// @param account The address of account updated.
        /// @param status The status of the account updated.
        event UpdateProver(address indexed account, bool status);
        /// @notice Emitted when the value of `maxNumTxInChunk` is updated.
        /// @param oldMaxNumTxInChunk The old value of `maxNumTxInChunk`.
        /// @param newMaxNumTxInChunk The new value of `maxNumTxInChunk`.
        event UpdateMaxNumTxInChunk(uint256 oldMaxNumTxInChunk, uint256 newMaxNumTxInChunk);
        /*************
         * Constants *
         *************/
        /// @notice The chain id of the corresponding layer 2 chain.
        uint64 public immutable layer2ChainId;
        /// @notice The address of L1MessageQueue contract.
        address public immutable messageQueue;
        /// @notice The address of RollupVerifier.
        address public immutable verifier;
        /*************
         * Variables *
         *************/
        /// @notice The maximum number of transactions allowed in each chunk.
        uint256 public maxNumTxInChunk;
        /// @dev The storage slot used as L1MessageQueue contract, which is deprecated now.
        address private __messageQueue;
        /// @dev The storage slot used as RollupVerifier contract, which is deprecated now.
        address private __verifier;
        /// @notice Whether an account is a sequencer.
        mapping(address => bool) public isSequencer;
        /// @notice Whether an account is a prover.
        mapping(address => bool) public isProver;
        /// @inheritdoc IScrollChain
        uint256 public override lastFinalizedBatchIndex;
        /// @inheritdoc IScrollChain
        mapping(uint256 => bytes32) public override committedBatches;
        /// @inheritdoc IScrollChain
        mapping(uint256 => bytes32) public override finalizedStateRoots;
        /// @inheritdoc IScrollChain
        mapping(uint256 => bytes32) public override withdrawRoots;
        /**********************
         * Function Modifiers *
         **********************/
        modifier OnlySequencer() {
            // @note In the decentralized mode, it should be only called by a list of validator.
            require(isSequencer[_msgSender()], "caller not sequencer");
            _;
        }
        modifier OnlyProver() {
            require(isProver[_msgSender()], "caller not prover");
            _;
        }
        /***************
         * Constructor *
         ***************/
        /// @notice Constructor for `ScrollChain` implementation contract.
        ///
        /// @param _chainId The chain id of L2.
        /// @param _messageQueue The address of `L1MessageQueue` contract.
        /// @param _verifier The address of zkevm verifier contract.
        constructor(
            uint64 _chainId,
            address _messageQueue,
            address _verifier
        ) {
            if (_messageQueue == address(0) || _verifier == address(0)) {
                revert ErrorZeroAddress();
            }
            _disableInitializers();
            layer2ChainId = _chainId;
            messageQueue = _messageQueue;
            verifier = _verifier;
        }
        /// @notice Initialize the storage of ScrollChain.
        ///
        /// @dev The parameters `_messageQueue` are no longer used.
        ///
        /// @param _messageQueue The address of `L1MessageQueue` contract.
        /// @param _verifier The address of zkevm verifier contract.
        /// @param _maxNumTxInChunk The maximum number of transactions allowed in each chunk.
        function initialize(
            address _messageQueue,
            address _verifier,
            uint256 _maxNumTxInChunk
        ) public initializer {
            OwnableUpgradeable.__Ownable_init();
            maxNumTxInChunk = _maxNumTxInChunk;
            __verifier = _verifier;
            __messageQueue = _messageQueue;
            emit UpdateMaxNumTxInChunk(0, _maxNumTxInChunk);
        }
        /*************************
         * Public View Functions *
         *************************/
        /// @inheritdoc IScrollChain
        function isBatchFinalized(uint256 _batchIndex) external view override returns (bool) {
            return _batchIndex <= lastFinalizedBatchIndex;
        }
        /*****************************
         * Public Mutating Functions *
         *****************************/
        /// @notice Import layer 2 genesis block
        function importGenesisBatch(bytes calldata _batchHeader, bytes32 _stateRoot) external {
            // check genesis batch header length
            require(_stateRoot != bytes32(0), "zero state root");
            // check whether the genesis batch is imported
            require(finalizedStateRoots[0] == bytes32(0), "Genesis batch imported");
            (uint256 memPtr, bytes32 _batchHash) = _loadBatchHeader(_batchHeader);
            // check all fields except `dataHash` and `lastBlockHash` are zero
            unchecked {
                uint256 sum = BatchHeaderV0Codec.version(memPtr) +
                    BatchHeaderV0Codec.batchIndex(memPtr) +
                    BatchHeaderV0Codec.l1MessagePopped(memPtr) +
                    BatchHeaderV0Codec.totalL1MessagePopped(memPtr);
                require(sum == 0, "not all fields are zero");
            }
            require(BatchHeaderV0Codec.dataHash(memPtr) != bytes32(0), "zero data hash");
            require(BatchHeaderV0Codec.parentBatchHash(memPtr) == bytes32(0), "nonzero parent batch hash");
            committedBatches[0] = _batchHash;
            finalizedStateRoots[0] = _stateRoot;
            emit CommitBatch(0, _batchHash);
            emit FinalizeBatch(0, _batchHash, _stateRoot, bytes32(0));
        }
        /// @inheritdoc IScrollChain
        function commitBatch(
            uint8 _version,
            bytes calldata _parentBatchHeader,
            bytes[] memory _chunks,
            bytes calldata _skippedL1MessageBitmap
        ) external override OnlySequencer whenNotPaused {
            require(_version == 0, "invalid version");
            // check whether the batch is empty
            uint256 _chunksLength = _chunks.length;
            require(_chunksLength > 0, "batch is empty");
            // The overall memory layout in this function is organized as follows
            // +---------------------+-------------------+------------------+
            // | parent batch header | chunk data hashes | new batch header |
            // +---------------------+-------------------+------------------+
            // ^                     ^                   ^
            // batchPtr              dataPtr             newBatchPtr (re-use var batchPtr)
            //
            // 1. We copy the parent batch header from calldata to memory starting at batchPtr
            // 2. We store `_chunksLength` number of Keccak hashes starting at `dataPtr`. Each Keccak
            //    hash corresponds to the data hash of a chunk. So we reserve the memory region from
            //    `dataPtr` to `dataPtr + _chunkLength * 32` for the chunk data hashes.
            // 3. The memory starting at `newBatchPtr` is used to store the new batch header and compute
            //    the batch hash.
            // the variable `batchPtr` will be reused later for the current batch
            (uint256 batchPtr, bytes32 _parentBatchHash) = _loadBatchHeader(_parentBatchHeader);
            uint256 _batchIndex = BatchHeaderV0Codec.batchIndex(batchPtr);
            uint256 _totalL1MessagesPoppedOverall = BatchHeaderV0Codec.totalL1MessagePopped(batchPtr);
            require(committedBatches[_batchIndex] == _parentBatchHash, "incorrect parent batch hash");
            require(committedBatches[_batchIndex + 1] == 0, "batch already committed");
            // load `dataPtr` and reserve the memory region for chunk data hashes
            uint256 dataPtr;
            assembly {
                dataPtr := mload(0x40)
                mstore(0x40, add(dataPtr, mul(_chunksLength, 32)))
            }
            // compute the data hash for each chunk
            uint256 _totalL1MessagesPoppedInBatch;
            for (uint256 i = 0; i < _chunksLength; i++) {
                uint256 _totalNumL1MessagesInChunk = _commitChunk(
                    dataPtr,
                    _chunks[i],
                    _totalL1MessagesPoppedInBatch,
                    _totalL1MessagesPoppedOverall,
                    _skippedL1MessageBitmap
                );
                unchecked {
                    _totalL1MessagesPoppedInBatch += _totalNumL1MessagesInChunk;
                    _totalL1MessagesPoppedOverall += _totalNumL1MessagesInChunk;
                    dataPtr += 32;
                }
            }
            // check the length of bitmap
            unchecked {
                require(
                    ((_totalL1MessagesPoppedInBatch + 255) / 256) * 32 == _skippedL1MessageBitmap.length,
                    "wrong bitmap length"
                );
            }
            // compute the data hash for current batch
            bytes32 _dataHash;
            assembly {
                let dataLen := mul(_chunksLength, 0x20)
                _dataHash := keccak256(sub(dataPtr, dataLen), dataLen)
                batchPtr := mload(0x40) // reset batchPtr
                _batchIndex := add(_batchIndex, 1) // increase batch index
            }
            // store entries, the order matters
            BatchHeaderV0Codec.storeVersion(batchPtr, _version);
            BatchHeaderV0Codec.storeBatchIndex(batchPtr, _batchIndex);
            BatchHeaderV0Codec.storeL1MessagePopped(batchPtr, _totalL1MessagesPoppedInBatch);
            BatchHeaderV0Codec.storeTotalL1MessagePopped(batchPtr, _totalL1MessagesPoppedOverall);
            BatchHeaderV0Codec.storeDataHash(batchPtr, _dataHash);
            BatchHeaderV0Codec.storeParentBatchHash(batchPtr, _parentBatchHash);
            BatchHeaderV0Codec.storeSkippedBitmap(batchPtr, _skippedL1MessageBitmap);
            // compute batch hash
            bytes32 _batchHash = BatchHeaderV0Codec.computeBatchHash(batchPtr, 89 + _skippedL1MessageBitmap.length);
            committedBatches[_batchIndex] = _batchHash;
            emit CommitBatch(_batchIndex, _batchHash);
        }
        /// @inheritdoc IScrollChain
        /// @dev If the owner want to revert a sequence of batches by sending multiple transactions,
        ///      make sure to revert recent batches first.
        function revertBatch(bytes calldata _batchHeader, uint256 _count) external onlyOwner {
            require(_count > 0, "count must be nonzero");
            (uint256 memPtr, bytes32 _batchHash) = _loadBatchHeader(_batchHeader);
            // check batch hash
            uint256 _batchIndex = BatchHeaderV0Codec.batchIndex(memPtr);
            require(committedBatches[_batchIndex] == _batchHash, "incorrect batch hash");
            // make sure no gap is left when reverting from the ending to the beginning.
            require(committedBatches[_batchIndex + _count] == bytes32(0), "reverting must start from the ending");
            // check finalization
            require(_batchIndex > lastFinalizedBatchIndex, "can only revert unfinalized batch");
            while (_count > 0) {
                committedBatches[_batchIndex] = bytes32(0);
                emit RevertBatch(_batchIndex, _batchHash);
                unchecked {
                    _batchIndex += 1;
                    _count -= 1;
                }
                _batchHash = committedBatches[_batchIndex];
                if (_batchHash == bytes32(0)) break;
            }
        }
        /// @inheritdoc IScrollChain
        function finalizeBatchWithProof(
            bytes calldata _batchHeader,
            bytes32 _prevStateRoot,
            bytes32 _postStateRoot,
            bytes32 _withdrawRoot,
            bytes calldata _aggrProof
        ) external override OnlyProver whenNotPaused {
            require(_prevStateRoot != bytes32(0), "previous state root is zero");
            require(_postStateRoot != bytes32(0), "new state root is zero");
            // compute batch hash and verify
            (uint256 memPtr, bytes32 _batchHash) = _loadBatchHeader(_batchHeader);
            bytes32 _dataHash = BatchHeaderV0Codec.dataHash(memPtr);
            uint256 _batchIndex = BatchHeaderV0Codec.batchIndex(memPtr);
            require(committedBatches[_batchIndex] == _batchHash, "incorrect batch hash");
            // verify previous state root.
            require(finalizedStateRoots[_batchIndex - 1] == _prevStateRoot, "incorrect previous state root");
            // avoid duplicated verification
            require(finalizedStateRoots[_batchIndex] == bytes32(0), "batch already verified");
            // compute public input hash
            bytes32 _publicInputHash = keccak256(
                abi.encodePacked(layer2ChainId, _prevStateRoot, _postStateRoot, _withdrawRoot, _dataHash)
            );
            // verify batch
            IRollupVerifier(verifier).verifyAggregateProof(_batchIndex, _aggrProof, _publicInputHash);
            // check and update lastFinalizedBatchIndex
            unchecked {
                require(lastFinalizedBatchIndex + 1 == _batchIndex, "incorrect batch index");
                lastFinalizedBatchIndex = _batchIndex;
            }
            // record state root and withdraw root
            finalizedStateRoots[_batchIndex] = _postStateRoot;
            withdrawRoots[_batchIndex] = _withdrawRoot;
            // Pop finalized and non-skipped message from L1MessageQueue.
            uint256 _l1MessagePopped = BatchHeaderV0Codec.l1MessagePopped(memPtr);
            if (_l1MessagePopped > 0) {
                IL1MessageQueue _queue = IL1MessageQueue(messageQueue);
                unchecked {
                    uint256 _startIndex = BatchHeaderV0Codec.totalL1MessagePopped(memPtr) - _l1MessagePopped;
                    for (uint256 i = 0; i < _l1MessagePopped; i += 256) {
                        uint256 _count = 256;
                        if (_l1MessagePopped - i < _count) {
                            _count = _l1MessagePopped - i;
                        }
                        uint256 _skippedBitmap = BatchHeaderV0Codec.skippedBitmap(memPtr, i / 256);
                        _queue.popCrossDomainMessage(_startIndex, _count, _skippedBitmap);
                        _startIndex += 256;
                    }
                }
            }
            emit FinalizeBatch(_batchIndex, _batchHash, _postStateRoot, _withdrawRoot);
        }
        /************************
         * Restricted Functions *
         ************************/
        /// @notice Add an account to the sequencer list.
        /// @param _account The address of account to add.
        function addSequencer(address _account) external onlyOwner {
            // @note Currently many external services rely on EOA sequencer to decode metadata directly from tx.calldata.
            // So we explicitly make sure the account is EOA.
            require(_account.code.length == 0, "not EOA");
            isSequencer[_account] = true;
            emit UpdateSequencer(_account, true);
        }
        /// @notice Remove an account from the sequencer list.
        /// @param _account The address of account to remove.
        function removeSequencer(address _account) external onlyOwner {
            isSequencer[_account] = false;
            emit UpdateSequencer(_account, false);
        }
        /// @notice Add an account to the prover list.
        /// @param _account The address of account to add.
        function addProver(address _account) external onlyOwner {
            // @note Currently many external services rely on EOA prover to decode metadata directly from tx.calldata.
            // So we explicitly make sure the account is EOA.
            require(_account.code.length == 0, "not EOA");
            isProver[_account] = true;
            emit UpdateProver(_account, true);
        }
        /// @notice Add an account from the prover list.
        /// @param _account The address of account to remove.
        function removeProver(address _account) external onlyOwner {
            isProver[_account] = false;
            emit UpdateProver(_account, false);
        }
        /// @notice Update the value of `maxNumTxInChunk`.
        /// @param _maxNumTxInChunk The new value of `maxNumTxInChunk`.
        function updateMaxNumTxInChunk(uint256 _maxNumTxInChunk) external onlyOwner {
            uint256 _oldMaxNumTxInChunk = maxNumTxInChunk;
            maxNumTxInChunk = _maxNumTxInChunk;
            emit UpdateMaxNumTxInChunk(_oldMaxNumTxInChunk, _maxNumTxInChunk);
        }
        /// @notice Pause the contract
        /// @param _status The pause status to update.
        function setPause(bool _status) external onlyOwner {
            if (_status) {
                _pause();
            } else {
                _unpause();
            }
        }
        /**********************
         * Internal Functions *
         **********************/
        /// @dev Internal function to load batch header from calldata to memory.
        /// @param _batchHeader The batch header in calldata.
        /// @return memPtr The start memory offset of loaded batch header.
        /// @return _batchHash The hash of the loaded batch header.
        function _loadBatchHeader(bytes calldata _batchHeader) internal pure returns (uint256 memPtr, bytes32 _batchHash) {
            // load to memory
            uint256 _length;
            (memPtr, _length) = BatchHeaderV0Codec.loadAndValidate(_batchHeader);
            // compute batch hash
            _batchHash = BatchHeaderV0Codec.computeBatchHash(memPtr, _length);
        }
        /// @dev Internal function to commit a chunk.
        /// @param memPtr The start memory offset to store list of `dataHash`.
        /// @param _chunk The encoded chunk to commit.
        /// @param _totalL1MessagesPoppedInBatch The total number of L1 messages popped in current batch.
        /// @param _totalL1MessagesPoppedOverall The total number of L1 messages popped in all batches including current batch.
        /// @param _skippedL1MessageBitmap The bitmap indicates whether each L1 message is skipped or not.
        /// @return _totalNumL1MessagesInChunk The total number of L1 message popped in current chunk
        function _commitChunk(
            uint256 memPtr,
            bytes memory _chunk,
            uint256 _totalL1MessagesPoppedInBatch,
            uint256 _totalL1MessagesPoppedOverall,
            bytes calldata _skippedL1MessageBitmap
        ) internal view returns (uint256 _totalNumL1MessagesInChunk) {
            uint256 chunkPtr;
            uint256 startDataPtr;
            uint256 dataPtr;
            uint256 blockPtr;
            assembly {
                dataPtr := mload(0x40)
                startDataPtr := dataPtr
                chunkPtr := add(_chunk, 0x20) // skip chunkLength
                blockPtr := add(chunkPtr, 1) // skip numBlocks
            }
            uint256 _numBlocks = ChunkCodec.validateChunkLength(chunkPtr, _chunk.length);
            // concatenate block contexts, use scope to avoid stack too deep
            {
                uint256 _totalTransactionsInChunk;
                for (uint256 i = 0; i < _numBlocks; i++) {
                    dataPtr = ChunkCodec.copyBlockContext(chunkPtr, dataPtr, i);
                    uint256 _numTransactionsInBlock = ChunkCodec.numTransactions(blockPtr);
                    unchecked {
                        _totalTransactionsInChunk += _numTransactionsInBlock;
                        blockPtr += ChunkCodec.BLOCK_CONTEXT_LENGTH;
                    }
                }
                assembly {
                    mstore(0x40, add(dataPtr, mul(_totalTransactionsInChunk, 0x20))) // reserve memory for tx hashes
                }
            }
            // It is used to compute the actual number of transactions in chunk.
            uint256 txHashStartDataPtr;
            assembly {
                txHashStartDataPtr := dataPtr
                blockPtr := add(chunkPtr, 1) // reset block ptr
            }
            // concatenate tx hashes
            uint256 l2TxPtr = ChunkCodec.l2TxPtr(chunkPtr, _numBlocks);
            while (_numBlocks > 0) {
                // concatenate l1 message hashes
                uint256 _numL1MessagesInBlock = ChunkCodec.numL1Messages(blockPtr);
                dataPtr = _loadL1MessageHashes(
                    dataPtr,
                    _numL1MessagesInBlock,
                    _totalL1MessagesPoppedInBatch,
                    _totalL1MessagesPoppedOverall,
                    _skippedL1MessageBitmap
                );
                // concatenate l2 transaction hashes
                uint256 _numTransactionsInBlock = ChunkCodec.numTransactions(blockPtr);
                require(_numTransactionsInBlock >= _numL1MessagesInBlock, "num txs less than num L1 msgs");
                for (uint256 j = _numL1MessagesInBlock; j < _numTransactionsInBlock; j++) {
                    bytes32 txHash;
                    (txHash, l2TxPtr) = ChunkCodec.loadL2TxHash(l2TxPtr);
                    assembly {
                        mstore(dataPtr, txHash)
                        dataPtr := add(dataPtr, 0x20)
                    }
                }
                unchecked {
                    _totalNumL1MessagesInChunk += _numL1MessagesInBlock;
                    _totalL1MessagesPoppedInBatch += _numL1MessagesInBlock;
                    _totalL1MessagesPoppedOverall += _numL1MessagesInBlock;
                    _numBlocks -= 1;
                    blockPtr += ChunkCodec.BLOCK_CONTEXT_LENGTH;
                }
            }
            // check the actual number of transactions in the chunk
            require((dataPtr - txHashStartDataPtr) / 32 <= maxNumTxInChunk, "too many txs in one chunk");
            // check chunk has correct length
            require(l2TxPtr - chunkPtr == _chunk.length, "incomplete l2 transaction data");
            // compute data hash and store to memory
            assembly {
                let dataHash := keccak256(startDataPtr, sub(dataPtr, startDataPtr))
                mstore(memPtr, dataHash)
            }
            return _totalNumL1MessagesInChunk;
        }
        /// @dev Internal function to load L1 message hashes from the message queue.
        /// @param _ptr The memory offset to store the transaction hash.
        /// @param _numL1Messages The number of L1 messages to load.
        /// @param _totalL1MessagesPoppedInBatch The total number of L1 messages popped in current batch.
        /// @param _totalL1MessagesPoppedOverall The total number of L1 messages popped in all batches including current batch.
        /// @param _skippedL1MessageBitmap The bitmap indicates whether each L1 message is skipped or not.
        /// @return uint256 The new memory offset after loading.
        function _loadL1MessageHashes(
            uint256 _ptr,
            uint256 _numL1Messages,
            uint256 _totalL1MessagesPoppedInBatch,
            uint256 _totalL1MessagesPoppedOverall,
            bytes calldata _skippedL1MessageBitmap
        ) internal view returns (uint256) {
            if (_numL1Messages == 0) return _ptr;
            IL1MessageQueue _messageQueue = IL1MessageQueue(messageQueue);
            unchecked {
                uint256 _bitmap;
                uint256 rem;
                for (uint256 i = 0; i < _numL1Messages; i++) {
                    uint256 quo = _totalL1MessagesPoppedInBatch >> 8;
                    rem = _totalL1MessagesPoppedInBatch & 0xff;
                    // load bitmap every 256 bits
                    if (i == 0 || rem == 0) {
                        assembly {
                            _bitmap := calldataload(add(_skippedL1MessageBitmap.offset, mul(0x20, quo)))
                        }
                    }
                    if (((_bitmap >> rem) & 1) == 0) {
                        // message not skipped
                        bytes32 _hash = _messageQueue.getCrossDomainMessage(_totalL1MessagesPoppedOverall);
                        assembly {
                            mstore(_ptr, _hash)
                            _ptr := add(_ptr, 0x20)
                        }
                    }
                    _totalL1MessagesPoppedInBatch += 1;
                    _totalL1MessagesPoppedOverall += 1;
                }
                // check last L1 message is not skipped, _totalL1MessagesPoppedInBatch must > 0
                rem = (_totalL1MessagesPoppedInBatch - 1) & 0xff;
                require(((_bitmap >> rem) & 1) == 0, "cannot skip last L1 message");
            }
            return _ptr;
        }
    }
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.16;
    // solhint-disable no-inline-assembly
    /// @dev Below is the encoding for `BatchHeader` V0, total 89 + ceil(l1MessagePopped / 256) * 32 bytes.
    /// ```text
    ///   * Field                   Bytes       Type        Index   Comments
    ///   * version                 1           uint8       0       The batch version
    ///   * batchIndex              8           uint64      1       The index of the batch
    ///   * l1MessagePopped         8           uint64      9       Number of L1 messages popped in the batch
    ///   * totalL1MessagePopped    8           uint64      17      Number of total L1 message popped after the batch
    ///   * dataHash                32          bytes32     25      The data hash of the batch
    ///   * parentBatchHash         32          bytes32     57      The parent batch hash
    ///   * skippedL1MessageBitmap  dynamic     uint256[]   89      A bitmap to indicate which L1 messages are skipped in the batch
    /// ```
    library BatchHeaderV0Codec {
        /// @notice Load batch header in calldata to memory.
        /// @param _batchHeader The encoded batch header bytes in calldata.
        /// @return batchPtr The start memory offset of the batch header in memory.
        /// @return length The length in bytes of the batch header.
        function loadAndValidate(bytes calldata _batchHeader) internal pure returns (uint256 batchPtr, uint256 length) {
            length = _batchHeader.length;
            require(length >= 89, "batch header length too small");
            // copy batch header to memory.
            assembly {
                batchPtr := mload(0x40)
                calldatacopy(batchPtr, _batchHeader.offset, length)
                mstore(0x40, add(batchPtr, length))
            }
            // check batch header length
            uint256 _l1MessagePopped = BatchHeaderV0Codec.l1MessagePopped(batchPtr);
            unchecked {
                require(length == 89 + ((_l1MessagePopped + 255) / 256) * 32, "wrong bitmap length");
            }
        }
        /// @notice Get the version of the batch header.
        /// @param batchPtr The start memory offset of the batch header in memory.
        /// @return _version The version of the batch header.
        function version(uint256 batchPtr) internal pure returns (uint256 _version) {
            assembly {
                _version := shr(248, mload(batchPtr))
            }
        }
        /// @notice Get the batch index of the batch.
        /// @param batchPtr The start memory offset of the batch header in memory.
        /// @return _batchIndex The batch index of the batch.
        function batchIndex(uint256 batchPtr) internal pure returns (uint256 _batchIndex) {
            assembly {
                _batchIndex := shr(192, mload(add(batchPtr, 1)))
            }
        }
        /// @notice Get the number of L1 messages of the batch.
        /// @param batchPtr The start memory offset of the batch header in memory.
        /// @return _l1MessagePopped The number of L1 messages of the batch.
        function l1MessagePopped(uint256 batchPtr) internal pure returns (uint256 _l1MessagePopped) {
            assembly {
                _l1MessagePopped := shr(192, mload(add(batchPtr, 9)))
            }
        }
        /// @notice Get the number of L1 messages popped before this batch.
        /// @param batchPtr The start memory offset of the batch header in memory.
        /// @return _totalL1MessagePopped The the number of L1 messages popped before this batch.
        function totalL1MessagePopped(uint256 batchPtr) internal pure returns (uint256 _totalL1MessagePopped) {
            assembly {
                _totalL1MessagePopped := shr(192, mload(add(batchPtr, 17)))
            }
        }
        /// @notice Get the data hash of the batch header.
        /// @param batchPtr The start memory offset of the batch header in memory.
        /// @return _dataHash The data hash of the batch header.
        function dataHash(uint256 batchPtr) internal pure returns (bytes32 _dataHash) {
            assembly {
                _dataHash := mload(add(batchPtr, 25))
            }
        }
        /// @notice Get the parent batch hash of the batch header.
        /// @param batchPtr The start memory offset of the batch header in memory.
        /// @return _parentBatchHash The parent batch hash of the batch header.
        function parentBatchHash(uint256 batchPtr) internal pure returns (bytes32 _parentBatchHash) {
            assembly {
                _parentBatchHash := mload(add(batchPtr, 57))
            }
        }
        /// @notice Get the skipped L1 messages bitmap.
        /// @param batchPtr The start memory offset of the batch header in memory.
        /// @param index The index of bitmap to load.
        /// @return _bitmap The bitmap from bits `index * 256` to `index * 256 + 255`.
        function skippedBitmap(uint256 batchPtr, uint256 index) internal pure returns (uint256 _bitmap) {
            assembly {
                batchPtr := add(batchPtr, 89)
                _bitmap := mload(add(batchPtr, mul(index, 32)))
            }
        }
        /// @notice Store the version of batch header.
        /// @param batchPtr The start memory offset of the batch header in memory.
        /// @param _version The version of batch header.
        function storeVersion(uint256 batchPtr, uint256 _version) internal pure {
            assembly {
                mstore8(batchPtr, _version)
            }
        }
        /// @notice Store the batch index of batch header.
        /// @dev Because this function can overwrite the subsequent fields, it must be called before
        /// `storeL1MessagePopped`, `storeTotalL1MessagePopped`, and `storeDataHash`.
        /// @param batchPtr The start memory offset of the batch header in memory.
        /// @param _batchIndex The batch index.
        function storeBatchIndex(uint256 batchPtr, uint256 _batchIndex) internal pure {
            assembly {
                mstore(add(batchPtr, 1), shl(192, _batchIndex))
            }
        }
        /// @notice Store the number of L1 messages popped in current batch to batch header.
        /// @dev Because this function can overwrite the subsequent fields, it must be called before
        /// `storeTotalL1MessagePopped` and `storeDataHash`.
        /// @param batchPtr The start memory offset of the batch header in memory.
        /// @param _l1MessagePopped The number of L1 messages popped in current batch.
        function storeL1MessagePopped(uint256 batchPtr, uint256 _l1MessagePopped) internal pure {
            assembly {
                mstore(add(batchPtr, 9), shl(192, _l1MessagePopped))
            }
        }
        /// @notice Store the total number of L1 messages popped after current batch to batch header.
        /// @dev Because this function can overwrite the subsequent fields, it must be called before
        /// `storeDataHash`.
        /// @param batchPtr The start memory offset of the batch header in memory.
        /// @param _totalL1MessagePopped The total number of L1 messages popped after current batch.
        function storeTotalL1MessagePopped(uint256 batchPtr, uint256 _totalL1MessagePopped) internal pure {
            assembly {
                mstore(add(batchPtr, 17), shl(192, _totalL1MessagePopped))
            }
        }
        /// @notice Store the data hash of batch header.
        /// @param batchPtr The start memory offset of the batch header in memory.
        /// @param _dataHash The data hash.
        function storeDataHash(uint256 batchPtr, bytes32 _dataHash) internal pure {
            assembly {
                mstore(add(batchPtr, 25), _dataHash)
            }
        }
        /// @notice Store the parent batch hash of batch header.
        /// @param batchPtr The start memory offset of the batch header in memory.
        /// @param _parentBatchHash The parent batch hash.
        function storeParentBatchHash(uint256 batchPtr, bytes32 _parentBatchHash) internal pure {
            assembly {
                mstore(add(batchPtr, 57), _parentBatchHash)
            }
        }
        /// @notice Store the skipped L1 message bitmap of batch header.
        /// @param batchPtr The start memory offset of the batch header in memory.
        /// @param _skippedL1MessageBitmap The skipped L1 message bitmap.
        function storeSkippedBitmap(uint256 batchPtr, bytes calldata _skippedL1MessageBitmap) internal pure {
            assembly {
                calldatacopy(add(batchPtr, 89), _skippedL1MessageBitmap.offset, _skippedL1MessageBitmap.length)
            }
        }
        /// @notice Compute the batch hash.
        /// @dev Caller should make sure that the encoded batch header is correct.
        ///
        /// @param batchPtr The memory offset of the encoded batch header.
        /// @param length The length of the batch.
        /// @return _batchHash The hash of the corresponding batch.
        function computeBatchHash(uint256 batchPtr, uint256 length) internal pure returns (bytes32 _batchHash) {
            // in the current version, the hash is: keccak(BatchHeader without timestamp)
            assembly {
                _batchHash := keccak256(batchPtr, length)
            }
        }
    }
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.16;
    /// @dev Below is the encoding for `Chunk`, total 60*n+1+m bytes.
    /// ```text
    ///   * Field           Bytes       Type            Index       Comments
    ///   * numBlocks       1           uint8           0           The number of blocks in this chunk
    ///   * block[0]        60          BlockContext    1           The first block in this chunk
    ///   * ......
    ///   * block[i]        60          BlockContext    60*i+1      The (i+1)'th block in this chunk
    ///   * ......
    ///   * block[n-1]      60          BlockContext    60*n-59     The last block in this chunk
    ///   * l2Transactions  dynamic     bytes           60*n+1
    /// ```
    ///
    /// @dev Below is the encoding for `BlockContext`, total 60 bytes.
    /// ```text
    ///   * Field                   Bytes      Type         Index  Comments
    ///   * blockNumber             8          uint64       0      The height of this block.
    ///   * timestamp               8          uint64       8      The timestamp of this block.
    ///   * baseFee                 32         uint256      16     The base fee of this block. Currently, it is always 0, because we disable EIP-1559.
    ///   * gasLimit                8          uint64       48     The gas limit of this block.
    ///   * numTransactions         2          uint16       56     The number of transactions in this block, both L1 & L2 txs.
    ///   * numL1Messages           2          uint16       58     The number of l1 messages in this block.
    /// ```
    library ChunkCodec {
        uint256 internal constant BLOCK_CONTEXT_LENGTH = 60;
        /// @notice Validate the length of chunk.
        /// @param chunkPtr The start memory offset of the chunk in memory.
        /// @param _length The length of the chunk.
        /// @return _numBlocks The number of blocks in current chunk.
        function validateChunkLength(uint256 chunkPtr, uint256 _length) internal pure returns (uint256 _numBlocks) {
            _numBlocks = numBlocks(chunkPtr);
            // should contain at least one block
            require(_numBlocks > 0, "no block in chunk");
            // should contain at least the number of the blocks and block contexts
            require(_length >= 1 + _numBlocks * BLOCK_CONTEXT_LENGTH, "invalid chunk length");
        }
        /// @notice Return the start memory offset of `l2Transactions`.
        /// @dev The caller should make sure `_numBlocks` is correct.
        /// @param chunkPtr The start memory offset of the chunk in memory.
        /// @param _numBlocks The number of blocks in current chunk.
        /// @return _l2TxPtr the start memory offset of `l2Transactions`.
        function l2TxPtr(uint256 chunkPtr, uint256 _numBlocks) internal pure returns (uint256 _l2TxPtr) {
            unchecked {
                _l2TxPtr = chunkPtr + 1 + _numBlocks * BLOCK_CONTEXT_LENGTH;
            }
        }
        /// @notice Return the number of blocks in current chunk.
        /// @param chunkPtr The start memory offset of the chunk in memory.
        /// @return _numBlocks The number of blocks in current chunk.
        function numBlocks(uint256 chunkPtr) internal pure returns (uint256 _numBlocks) {
            assembly {
                _numBlocks := shr(248, mload(chunkPtr))
            }
        }
        /// @notice Copy the block context to another memory.
        /// @param chunkPtr The start memory offset of the chunk in memory.
        /// @param dstPtr The destination memory offset to store the block context.
        /// @param index The index of block context to copy.
        /// @return uint256 The new destination memory offset after copy.
        function copyBlockContext(
            uint256 chunkPtr,
            uint256 dstPtr,
            uint256 index
        ) internal pure returns (uint256) {
            // only first 58 bytes is needed.
            assembly {
                chunkPtr := add(chunkPtr, add(1, mul(BLOCK_CONTEXT_LENGTH, index)))
                mstore(dstPtr, mload(chunkPtr)) // first 32 bytes
                mstore(
                    add(dstPtr, 0x20),
                    and(mload(add(chunkPtr, 0x20)), 0xffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000)
                ) // next 26 bytes
                dstPtr := add(dstPtr, 58)
            }
            return dstPtr;
        }
        /// @notice Return the number of transactions in current block.
        /// @param blockPtr The start memory offset of the block context in memory.
        /// @return _numTransactions The number of transactions in current block.
        function numTransactions(uint256 blockPtr) internal pure returns (uint256 _numTransactions) {
            assembly {
                _numTransactions := shr(240, mload(add(blockPtr, 56)))
            }
        }
        /// @notice Return the number of L1 messages in current block.
        /// @param blockPtr The start memory offset of the block context in memory.
        /// @return _numL1Messages The number of L1 messages in current block.
        function numL1Messages(uint256 blockPtr) internal pure returns (uint256 _numL1Messages) {
            assembly {
                _numL1Messages := shr(240, mload(add(blockPtr, 58)))
            }
        }
        /// @notice Compute and load the transaction hash.
        /// @param _l2TxPtr The start memory offset of the transaction in memory.
        /// @return bytes32 The transaction hash of the transaction.
        /// @return uint256 The start memory offset of the next transaction in memory.
        function loadL2TxHash(uint256 _l2TxPtr) internal pure returns (bytes32, uint256) {
            bytes32 txHash;
            assembly {
                // first 4 bytes indicate the length
                let txPayloadLength := shr(224, mload(_l2TxPtr))
                _l2TxPtr := add(_l2TxPtr, 4)
                txHash := keccak256(_l2TxPtr, txPayloadLength)
                _l2TxPtr := add(_l2TxPtr, txPayloadLength)
            }
            return (txHash, _l2TxPtr);
        }
    }
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.16;
    interface IRollupVerifier {
        /// @notice Verify aggregate zk proof.
        /// @param batchIndex The batch index to verify.
        /// @param aggrProof The aggregated proof.
        /// @param publicInputHash The public input hash.
        function verifyAggregateProof(
            uint256 batchIndex,
            bytes calldata aggrProof,
            bytes32 publicInputHash
        ) external view;
    }