From 8a0b6cb95dce1a88c7288eaddb1c8ef4513298c7 Mon Sep 17 00:00:00 2001 From: Romain TREFAULT Date: Fri, 8 Jul 2022 16:06:20 +0200 Subject: [PATCH] parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358481 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzREACgkQX0oYuBcZ na2MCw//aJk14PC6yfDSbOygdHsCSeZUk3AquJZjiuQ3XCUYP6DZoWoMU/H0YI1O uVe3m395upWdBg2umpZISIlXceFZ4wFFhYOJqZN9Efi+PUV4WS7+ezSxeB79L6jB 3MkgXxPYHeOdJX7YQepqv6536IqklPBmkT8GZFEqB8Hr4et3dTqTzxsZ+D3HYi41 dGkgE18Qkev9s+bpmWH4zjJyaVJu+DmW2pCOKjdj7RTXBDVRuyY39Gls65D8Qiot pNvaLgP4hg4AqtdU1+iv+DMM4WrJVMDjjM0NpzpifPRgH32sTRTMgfxkztWnwzFf 8Ze+YzYKSxy4GrqcK1vOnv8c3UC0va/kJRbOyCvrXOP9nGeSlV3PL6fCle+73XoZ qD7Pm/8/5qdxhtSSLuJ6vibhR6gIxdUMDN/G5KR5zecLK3AmgEXrJu4e51BXHt95 x/n8G9pcpz0x6mz6LoHbQHdSslEIqMw5x3bWiu9MXFHN8mkh+2S0WpnOeJvGmVG7 pUPeQrhNL0NqcSSlF5yXX+puZVDY/R1rZGM7J9kJ1fowZUFRmRimpM9d/gA23/5F f295pn2RMiS2yTtpAobbwl5+/uKltcyo2ieVrFWRC+AXjwakIqNaIIpYo3c5D/S8 VD9WQ3LSbzFNanXtpmSsxcRxDK8SJknB/zzjT0l22lVCKT//Bt0= =PJCl -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358479 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzQ8ACgkQX0oYuBcZ na1kQA/+MRmrJy3Y0JMSYECBWojK9xvjYmMVtgkrXaFY86oI+l0eZP7nS/Y121dF eziIc55oTUVRt/6YEnYk/mpcGAyz8ZH8yokqqFBClOypLHc6iAXpX6WObW0WGt05 w+VwSyByIOGrhd8oSWzbie9lEL8YWuIinbMI+4UqPDaDHroVqjrPTR10pDwUqeHH z0hzXuGqgleCaTT1+rh3mjsojBc4mXH1ewCA81Y0qnC12rwz0KB+4RWNDBLgnqU4 Ni0Q3rV05uA9iCKQzblpUkdXXpZhR04H44ow5sC9ds4wmI7Z6Jk3mEbwRS2EY/M7 wYZKGPPtgjGXj8RIJLLFTqq1Aar6ZIcipxt5GyLK0SitGm1wqUqoKoaf8Dkvg57W 1ixojU3I0s+bsqG3HxyUX0uAwVdQAKVj9rgZp76BYNG7f3eufaodXw1TdzPOpDxw TbHagn6uqxfr+4hPEW1NcrMwyYcaVOM9R9gew8mek1zhNIMUo0+tIWjC6M5CgzNE oIQW+MlCxRCldquvGU4KKa3Oag2clySgGd/tcSoA3k3i0p4eiof6blMNoFY3rWis OVcXkqf8QJ+U1/T1HLwfot7Sg+mh8PMyI/pVb1p7+gMcesciihLiMmQ3rkPUYdq6 t8Ip2TPxYVwr0zRIdil1XgjtkIBY4qtffQHE44kX7PxTj0hcjAU= =ry2R -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358479 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzQ8ACgkQX0oYuBcZ na26mA//cUEAwE7VkRuSIJuXZFsQhogOPqAlUvpUNk/Rl/M0u0UxvhQbVMIv80Wi JQ6ECqEt1UVfcQ4NixXvm9BLMxFa8gLCjRTGdKgB4jRiupUZ93xb9ysrnppGv4HD Mnjlw4FAmGdWX+KgYuL/+F/AKYiY8LXmJ4YAGYySLgfsSQXWgy425nTMqPkQwZbM 9QNUG12zVGaqAmWW50V2oB0yUIJJXAzTHj6rsuxU0L36KEjsXPzpumtv/YoOFvvd Ad8r2YmdCBEbGav7gOaAtPGW1KCnIuEuevjnhGWJBhY03N3lnmZYtAzjp5kp7tTt auhi9tNo1jtFWSo3404u+Dkf1YuG35giJ5ujETk8gcPK2nA4MJs9I7Butjgf3pjP Kvt+02o++Q1qkANRGCeeSP3K0mSjS+ran9DKGIBSVfvIYPCmgaHWqpFV64CBCanF XA2ItKdSQp27Tq5A6eRoR6QE149fTEVCkTvRj/egyJBML5bQCEgDZX3KoEygQk0z waCULUjOc4Y/DLEQHcj/vmTZ5iph6Ymri/Ohld1NI83X9FbPGioD5uyUcfx3sDy2 v2fybeo3EDmydf7w1iKFfGRdDDBTPlCwZ8LirSkKXT4647MGL8hEMLkqmiTQdWdY P70VUwSc+aQjt5aGqB2OjRhZaxnj5GJRi0EYsvnb3k3zd6J60y4= =AOAX -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358478 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzQ4ACgkQX0oYuBcZ na3w6w/9GgqhaNn68FMH7TEvTKaz6HbNtEEgTmC+2uMxWZ2pW42XtwBbpCdkyuXM pVSsdLYd9GkFvyYlT2fbmogRhRhYbPgLfjeF8576bPGDRwDryg3Zov2594lEi5fs gxR7s42W3I/al1MQyd4+QKIPJ60ASzQHXgDk5YWc6iPVJIEFUofGCQFfpkq7Swu8 5DO+QAmLf+0+/I6bsf7SVnui17zRgWmDW0qtO7NwkeOTfzTWbmrfxknkjyeA3nOq BSsGOyim5370CIN0ly8w0tzNmU6R6s/b8wf2kRSv23P58Gqu5rI80zC/0VhSycV9 DeIpCLfls4D6aw4LQrzj/aZmhdSJBO7KJCH+TAwI8hXZDCsxzjjtqaEHqhNb9Q/y Qke4YSYCqjuBTX6ieVCHGJvHgqGOh5PBAIakf9g1/MgvNBgYcEHO7DQOfuNrHePH bv0TMjVF3kMYkqw+qJBbO1zp3KGr57Iq0XCf9v5U8KMzp3Dvo65YvGZ0UhDciNXo cu6qKmXSOFCS0OlWeIR0mIjaTBv+Z29CDq/+znfrsFpX4yWRfb91oe4c3OjZsYew NgNw3o9pnF9xSYISwJm4NFNCA51IlG6qBR48o3/lhcbhZh3dROkLWF0cSn1pHpIV WYXRbSZUUE/cskku4lMu+IDi9JVAsZ+Fx+ahvMzmvDRV7pNP1B0= =n+cn -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358477 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzQ0ACgkQX0oYuBcZ na3s/Q//UvoEFvc/ZrYDPHgDAC0sSlg1NiMWF1pDfbjhiYgV3EZwnGi7C2O+lP// V7adoLkgJ21sLyz6KzhXaPy8UQkfN2WBZGLui47qHcJibb7PyoyWXU4ZoqSHQ0PB Y5vqpw5c3plmkiV4Tc9WVFOahnpCxfPoNPd1jss/O3ESrbHbb26ukO8u6y2YekTR kqPBxDhVVIBliHS6dGQT+ygumdgWoqrnpvZ/dQFAfQ/APU4hD9Mlklpw9Nv+eGNk xroJ126c1FaNZBCRiOL8ai3XIUfA5xSuYdAAsOCLiYmACjcY1UrI/Vo8H2kI2IOA 7ZtueANZpU2dsbPasNiE1S/okoyqjwU0PEOXsvV8PhnxNhQNRGHmwB6dekX+vNV3 Y9OfrzDyHvXV8spgt/wxLth9kpVNqlLU8Z6279mKLcceGyhr7vjuIgsObZw0+bOe IBywps92J8lUklDNoHNFpkuISwYgge0BSN17G17Sxq/ggnAGDm+xk6gaMgW2Bf6T X/IwPkYtYkKRyWtmQT40ptTrLj8G9ZN4a9wI4+Z7b1iB8TOo+Yj35MmHtVwSfxiZ 0f3VmOuBIw4/1aoEBd1qBT3sc9a6Ir6J7tme5MB/12hcFOt0jNcGQ/sYLXn3M5iN zb7U2ZE5kQgCJQx4dC4rXPY4Gj3mL7iov3M7dhU4JGTH8b/mWy4= =z6HG -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358475 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzQsACgkQX0oYuBcZ na1HJRAAleEDqNdxAvmVStM6XS8XKg/OFY5j0g1uJKYvcYwouczgZt76Dfm/e7r5 OCDbVCYzN8dcub+hYPuYLs7yyywfiwTnGrDv3Ia+aUu4+SF74DsMhkhledrfTg2n iJi7yjBH79nPaJORWPkKMrbcI4itUvkJMhZewSpET6WGIwXWz2aWlOOxZvzog7lZ LsdpPiHznA/v4GF5tOyxSqffuiHoYdu8rXpL4e7ibwBUutKvrzv9Bixbvv3A0itA gPUBaBDSxfVl4sYPG6murnaxJv7rIrosKIXdeEBdJ+1+AUymW+8MgJOlcF0ViLHy SR8y7W10zmvPFNsQ8BlOcSmVlGXp8hknrdmpdAfsvXGZLA2M7pO7q5kYWChN/7xG M3kvzi/yM7+sAil9pPtm84jASSdjD4UhcVmQyEwZtK5d0H2OhvQAYTwUP7dIPFUj ASzccqEpRU144kEKrNZLUxb0qB0jjv+9RslhMATwwTNeOyiNXyGFSvjDPmiBEsik I0nZU5/zj6RkFMmgdFzVI2J1BtiYtgnMM0dvURQgVbszsrvoCDIoow1mwHEE3tK6 XmTJjpxP7qMqHxPsJ9zKWQK1WIZjR9gsuEnqBLAaRA/Pu84Sd2qdDHOsOoyAPecK 2U8rsiRHAHtik6Z9anf+MjJJ9Dq6kAywMJAW+s+68A9CCd2eJas= =SKF8 -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358473 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzQkACgkQX0oYuBcZ na2WoQ/+L2lpPx8OfMINHY+cZw4EeAt6SaxoNh7b7HvDwInLaMLNwx/+jeJ+qzl9 X00AqDjivt3RTf1I0hTwd2GvX0PZrkwzmTqIv6+dwMC4S7b5l9cSh+h/lsUqMXaY kQ6Pfo8X3vTwUnV0tgrdwjy30Jmlrnz0O41fwA1LCg2JHsk160JuFcuxXXELmDAf QFx9HRVO85UbDgvrNrkpCURgsFkASVX1nFNID5rkFal45xIfn41Aa3UW8kbDrEVX NaCc3AJ58ltW8vZKtg12q/1q99gQm7qZpcRwomXNuDHKxWrpqig/ESDGF1/Y4Q9A FpdUroIwSvVIJ0wU1N2OCJ3sE8CiHMEr7/ttQQjVQwg8ziw8YvlSNNvtn0o76Cql gV4KD5z3J4NBz+6IwUxcnUu4aU3TqLg9/gtoBlk81R0lIhoQdgMZ34NPVSDRiU2Z 5utUlWJwVd03b6kP4zq57T9xlfWjsfl7FQoAwPjKyTs96+PIAZrrWp3yj8Q7M+tp 6CV+taW0nD+LWromovnPDYrAlQq4SHdGvLpQtqqSx300q4n3JJLL8nWiex2KgIs8 vM9g17dSWf9vcBhzPpUB+icuN3Z6pD+mSI8up4rkqmC55LjdOP7zbWNGUSozHTPv f0Bm2bqhOxRB7iJX+tzyZRptFv6JgzSSbtjsVo8HoavM+h6vFyk= =C8jf -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358469 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzQUACgkQX0oYuBcZ na3iNBAAr04rYS5DAic4+yxmgyFjeUEJeudmc5+9c6/ixllr/L9hWrO5dFJk9/1Q 9Nr8QVfNkxWhftPwgoDZg88A2hsD858TjQ8CRTLrYNFUNvyN6dimWVZDQnUTjHkM TnJ0G707An4A3IQSA+jaIUkgF51fPnUou7K+ZgP0y3q4CPY3cmBw8CPUdv3u0AVl APhXRl+rZqdZCJ1FOp2M7eNMNDNxaaPaclR4CriSWq82+Bp44U5bgKYE8YdhiVqu pkLsdU+pHNh535mATCuJOllgnCu52yON83I3o3LbUuEWZPZCrlqdxEjsgQ4b/8sk NKkU/LU2bjrAbXCtaMEdEkQRrax7jUGPaoL9zKV1zC0rUJm4+eG1UTvxhLYDVBRq U792QnbZtzdS86s++/IiQlspXeJdtz7SHzoYBa1gJFSIMM5Q6BXJFmKK29FzNF3W uexTmU4DwNcpnivzPevpS9HRn6T3/mkXj8kbjKedg750snrjgzj9+mbhbWDAFvaf JOcERCyM71DeR4wCga8eINk3P8rQRDWBEzXkYiSjlcHjrjHo3lrojGdDEWgvCRKD ZIm7IXNem1PEmX3yBE/4syenYdZn2nRRlD678UqaPHEkyv1ntydls8dT6o9CBT8o yFdprEsbxcOy7i3GxE7ZGS2oIDcVLMNgzb9aGFVC1zV/z74B/Wc= =lkzQ -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358466 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzQIACgkQX0oYuBcZ na3pTA/+PITVgs1xZqI5sm6iY8AafXbVbE4Uit9qqf8DATYSxqUHhqJequoLQxqW VNlS1zxpIvwdFleNDe7AhMgrMvAuZtiBaJwYUMZzs7fD/8jnYxbs0/vZ9t0MsGTx HP3/V8J5zLQs92tCsxZxPEmwRm1WmC7+G9R3NuUlaz6etgdgmzt5v2070UJGBPcv fqrh5MFgYqdoosea84iiqHmPa0oY+D6xyU85uYAAwMkrZcOrVPOa8C21gcTIUYwp SrKWpyLfXAEz5PHzp9FNuc6tOsG2AE20b7sFqSoEqfDu5aCdJiSOhGXJH1owJ5LG Ksjg++r+tPWeMTt+m3cHQIK8xQhynqKsOLcwSmdvRzt7uDGiz5iE+BKCGWf1XiIR FMDh90V5fACa2QUIQDmp6TUsosR2gthXl14Ikw9Z623tSdVR+XW55Baw29MW77Yp yXEvkZ6etdsL0qcr/HFQ185kr7DsrWTwOPIyWU5bhm3q3Huc8jK6OvlotML5LIsa 0KlwsqocCAzT0RWJSLErjU1DamF18lSff4opFnA75RD2k58mo8A8pvJUm+6LjYeZ 8A8a6O501ym6Oa8gcm9pjYUZThDRUxCPlpa7urNDgCEYQbDHnlbA/dgqyn9rH7CX 6FPGis3kGK6AuOg5D0gOJJqVHmUnNvLEhJviqzLTYf6ZqR3BWfg= =WQ3b -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358465 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzQEACgkQX0oYuBcZ na0suhAAqzs+rUIrMfANYic/aiDO/2F6xE09ygRj8gleVymKeXO9Jvd/oKLKYuQ7 mepfDB8vHzTH/YF16Ax6TxHz9kS+Gzxk9CZcGSivEnRIY6G4WCGkFCgTibbOkrk5 CYS7aHy/7GKUAoRInkTam6NbVoCC5HG8O72cQiehIlDIgyUUlA+uUlnT5Z8syiR4 CPfHxSqn6hWCXZz9F1gWvbkP9ugmIt+uxCd8EmHamp5DjIG4jqqzyaW6wT50f4M4 DQF61/h2q1B0+JSSf0RneU01F/OvEYhRKuuzl21g0MnZ3CiPJ91N5Qo9VHiVMRaA u9HvApm50qyjDgUuopVIdr1TMe0YBfLPYC4bgs9PtBzBDVKnmi+uLWti4zD02+ea CQyTkdBLy1t/MkC4P+RjaV19Bg5ytym9UdlRGCY9tFmtPRbkZslvnthy68j6bNtD tUHG9RVlXzQgNShKOHPMHYAz022XcOxDmgBcdTrzj33lhJWYaqEFEdJm0keYAVcm IiGUqugdohBlg3pI8eGfn0oHy3veo1yMUpCpiuVjnuzVsecLHAIUu9+00P7ZR842 vtIoSqyWcCKIl2Zvzw2KBeWntbds3IammeOoYbO/4goJCEIip4cjdafGTF5wQUHq Trgve/idNlZyWxJ1n3bj4HqT6bghZudB7bKZjTG6OjuP+0Gt4X8= =M9Fn -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358463 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzP8ACgkQX0oYuBcZ na135A//fC76xVbN1hXeoKqLUgCCL7my1ki8iU5Rf4Jw1tk9BSZJyznxTzXrdsk6 kZv8P+UWRpNDHczX/hsFjBABL6nkdnor5GCsCVVBq2jnloOdDshCqePTY/1QipnG leN9fvU8VBXu0GFO8BbhjHwkkaUIXvbwtmoEOuxRZCqnJ5zCDlWVqLi7XWrOKH0R ugYINoq7uImn8TUa/GbpDBx0HFRDLXDpKGtvf/pzWoteIywVFEHljZL5AId4G+AS BbPwnE8voFaBYy7RpJLjtNdV/0/pVnhsbDHtMixVBjaCYptFyB9lJAw2YIOGCu/f ttypVY6xIs7HS3kP3yC0Or4UiBxQDzjle8za1+SMwAEpcPFoQTC1qbbtuitj2oJm 9x6oRRLMmH82kNCQ3q0x48oZ1rgh6yp2DreKFXehWyv2wdPNC2u3QcZWnTPSONFh G6jo86qqSMa1ynCsD6m1+V5KZVY5W8WVpbOqF5JNZ5N+I7PCCfwKz+h4cETpRk/L Va5a46ZfbiqgPs6pMmGY9qZBJvavkUBBz8+BIujGK2D6IVLFemsz/RQD9SMJ4VYO vAOSNEqz1i0DQQSDdVC1xzfehSgcccsikExAJnSqmLZ+d2t+AG8xoy1pjHUCCaXR Rs520jB11rLDc8tLDMsvonfKCaFrZrOaUpmM7gYqueA3BMlCHNg= =BWmI -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358461 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzP0ACgkQX0oYuBcZ na2zWw/9EgHfg0NXn/V2bhkt+ruVBzUWbEwZL8yOhHMCe0heKLDyS1dgb/jndPE7 4SMGVE5gHQ+OhqBWMKQVuG5YjORbKn6SKeniw82eeefM+VOf49DN0u9CHxfi39vt TQQwoAbN0Pnd8hiPAklCa8ESIUFoeoHDu15ajmczDJNiaIFKeFM6zppiOQZnP6OD JTl7k8I99yokpIMDA6jHGtQT+atxOV9ro8e5KlGvJHZt221GW5hdUGyWD/8gd3Ae MBmI8ys4jsIDMV9Rum4E6oEF3zaS0Ab7faqa+tBs4vzPik7j0xOE24PvvxuLId9+ J5b0YLGMOFFFY3MMjJ+bSrYTkwee4CAUN0hueWNmyC51eT6MVOEC1A09E3UpH1/1 bxkOuzeuMwMIyEmNshXD2csHUP0gxv3d9QdSw1V9CrQGyfBKup4CeXb2V1fFxo9R UkI46tHmjzWJxZuLqBEjrSD/d/vguNyZbTHs5AOnVrfogGYCGj7AO9MRIE3vjhRm fqU2x+x5NKWtSh8ACO6sPVAFvlRdi0TpEUb0riLN2/S90QHSg/YXiId5aS0b/5vt uJy2Oyq1ix2M7u6hHSv34AhpdmKgWo67anbiXDK1r3LcZfnAGCJyLAybftj7CL4c 6illiX3I5t9tcGNwyYE1AYI+qSPMCq825mv7dVfCV9pgij9nSJM= =Rka5 -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358458 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzPoACgkQX0oYuBcZ na3SVA//a/Tg5JdLdTJgrLYTeTpVDfqbD+4bOrQtJfYlsl9eaDkxHSz+uFLIk76p 7pWoS6sSdWWtGjGo56/aE/1tVkeYgvWiR+lou2p+1TA5lkY+jet1azPVF6BSjl0r SD8FwxzqYUZgWeVr2GJToQduOJgcLav3ynfY9usHb0eIDG68OubGJNK/ZKy5IcVR qL3vDrNh4uFod5N1yzNZP4KObkDX13R4361u/3jiJ8qw44hWIcH3D9NN2f0kxXbc P5PClC3Dfm+XoMxEQRSXiWo1c+bC67IIBvqxULGQSu828GrAbPvbSEJF44rDx7Ic H42GrXUFXcSNEf7Qii2VxMyaEEvwH6tqIWG3YUQ9aShfMXaUzTQaLsNziIY+U+Bj kZK0M1AwP8SRhUmdsiq33ujQWhscV08ETqrI+wx7FBvWwGGPIYu0cvXkYudOwgwt E1ohJuPWlbNO4LA9ORXC9CZDmcSeCptQtY1iyNsUSOuAv+aYxlYnrEwkdNpebK1M 1jxCmyABNHs2eKhSDBYz/nWNxXP/ZM7fGiciPoMeJLdxl8JzziCH4s3VWZSH4XU4 284Y+OOY/xmiHTvD3EAYYIDTwr6pSdb8pCuug+uYDmGitIJOhBq/CRwHLxzMnCqo duQ6NPii7MXlfsQ9IRWLC4yLPIwqPMZ5WHIG18LjNW60Gr146aw= =NP+V -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358457 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzPkACgkQX0oYuBcZ na1Q4RAA399tptOQ1OwLxEWqFPrxI+ZE5QK9nJ8lVFOV80oAalfhbaFHVkk/DFLo oDiYAY9DkZL5Of8KuBO1KzRVmCjwq186jGZkyPhEm6etBTMNKBSrdgMQk5gwq6NF VKIgynOPFSobn2HU2u/qDYeycdSMqA8c7JpPVnZp2F87bvk02csQ6z4prjKVVYrc YRhesTRroQORHnl0EITzfAwOZL5qZAyhywKiaO4aAsKJxLIot6LFsKZfeT3fDRDR 2EN9wWWLTyEJ/qzvBY6abbBBeRcRmlMMKKFyWykCIQZJTumRTy9/nUWnEg+45imY DngxgVA1Mk9BuVGqwRrl72qpUrzAzNCmyYa3VAKPjoAFFxXfdV/bT/Sy0gMYWJe/ K0sVXHjyBj0yeqzgbfmzhGPJ3iB6ZqmMC0TlZv86dqb/UKFC5y4FcQRnhjPMOiHt Wwti/Zscs7558O1i//mkG9vyQXDCVfHJRTYcQUnYgw7tit9krOtZacQDjjrJZuhx 5nlUo1+h2Nwrrwz9x54ebGJViSBvNOfaW2eSOazMAS6nYazWlSviUwVmWbg73JV0 xciflBZciyvKl1W43ZotAoITvdCVI0GC1iP/6pr5pQEqPmMfKADcAP4UJXYIATt9 aq3uar0croixPUEbLYRBZj9Hynfp+dlPWdXKC/QD/DAQWztmkJ0= =tjo6 -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358455 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzPcACgkQX0oYuBcZ na1+Aw//bTM6ohJb3XFQwIwlHIlbnV50RUo3PbXItUhbVsBavYthCDNAiGn0aMBG ilPNdVyzFl87Af+EpyzEuFdBLTtPd0SQP5jCWwAa5RUC+IixgpmphD+FkAL9MGRa 2cYINOXb0lC2URPu3MRL11k40REdg1neOxABLXlGJcf6+JehxSGBeGFmoHf0+40w dsEQQTO4lryaX44UiV6rqoQSVBurnbtbzkgqCSAsHcVzRwFFcseUoyFXT1YaIdbc BBfYn/ZTJ6M0LIzppuAYfPoGeM9iE89nMupImWtOYk/9e56TmCPhJhfuQz15fmIl jPyQx4dEOe+BpaBmuMt68g3rdzvc4wVpd3HHIcm0Xdhv0jBqz2XutnGqvIDW3Nlb dskV/Ka83jNhTyOsneIDatGXpdVYMT/HPUU0/fZo2Yet/ATUSuQNgwJC96Iv0OSl HfBBko4G84XbTpSoMDGtRo0zEgQohwKMKCn6MBR83gaVhPdEi5lSuH3/LabmqoXa IrFAWrrU6iJQm8GvHCaPLWBNBf1HO9MAAS1yrQLAFaP2jzKdM8T2cPe2SyKnsXEx v5a5/aVo76DSI4E7mz2nhzQ10ota2E13S5WeE528Y9k85X3Oj9AeNfMSM6hpgcQz 1JUtQQiPyBHhNI6li/ib9WG5QyJ8o42HvXAzxsyPD8xJWm/0b1M= =ctiS -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358453 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzPUACgkQX0oYuBcZ na0eGg/7Bv1ZGI3KCp2hDqblzAzYIL+wY2bXdcppSfcFt7qPGrTwJtEgGbapJjlV 6KU54agv/NnRahPMBBYEB3+GUnwZvZ4ZvjspeQOxLtutu8MARE2+/mslUCfRunsj 5DfY2sAxBrioYXG7wL6wlt5s1m16z3wOECYUF6s3QdyovbksI/dG63ck6dTj8mNm I/2UCCD96/gI5R+u+ysbqrDKGugvS0zYPKhx6GHpHiWGAdSvkMdVOufU9sPhFnl/ Lmt0vNWQg3iG/9kwyw4NKLIL1n/AgyQ0yjaz9vl8URN4Nayj+I86V0PdEN42zCfI BeSR9OcF8wJwPJonmodg8SFVaKwJEsrmNhJsgpytUD69QY22x8ykTIEaprEFrwOO GRpWdN5QB/4wx6o0UvxFO1cmaylKaOwK5h2czDXcXmrl3O59+7XGpos6nH1NA6sD yH8l+QCRSqwLyf/9lagBALLlvR3G/ny/w84+hcFwX92n6+P53JSbwio0Qp0+slAM IF14YWRwFGToKROjWn1xle69XvIKajdwgEC7YDPXeax8Yn4xvwYysl4/gZ8QLF2B 84s4dIshTPOraJge9RLGZbIKnqR4Mo5emsqjuFlRXX5WwmZeMP8jciCpY0EzcSuV 6+XNbXbncF8CnEwfo1bf2BOQ1+DKVee1nM7dLnzeX8t9a1mUG5w= =E+Bt -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358435 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzOMACgkQX0oYuBcZ na0fWBAAkvqF5/IE4Bmlzj7AxMa6Jo3xzNyc9gXzNoi/6EPZn2T/tJ1TvjL1EKUm A7I1pOvu9IQ7g1D3QYetORwaqlWHrPOBPOKS+2PMAqZafSNJlnzNQWaLRKEPjUth ScVLBExn7Bx6DAjwHKynd0t9EgGIJ651KEOCLuuuz+btXbEqhMq/nWXqA0xZ4K8W bjxqRVbAW8hSP8GNry/zZuvlxOGyfepTfBkooJDzZCAnGPsdgOdHbpb703grchj+ GKTy2RLTEF1vdQxEhiVc7EFKykHNwmUfB3AR7e8JWCXltM90qz9ku5SF95Dui46n T+AvGhPfiFcZEbh5wkpMbw8lWLHOETY+dP7XXkB4JLizHmeLw/xjZs87zHfLhzPa JPCuBtze4YHezToZJMPU4KYv/18xD2B3yHB4WaoQmxgv1q0xEE9ZjlwD01WXqPXj syn4shJ8jBc0RlpOkMiTMTc4WYxMkN196Z/WVjxEx4kMxh4VwjJiHBf4gqbK2cs1 ky0lTmyKCBsatkwrxr0WRL5saaK42iLA2oy0KxEnV3TgGn0MgFEMxcVaeh79Q2WM VTn/BHWYG0hblOk2H6/Fy7X1VyWkzDtbPXhqAPwdyiCXkKhDGPW118gTusx3yP3F 1JYof3FDUa/i9Bt7NUCMH4xew42fEC79UX0gu4lOlNdagoGqIq0= =ElpN -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659358422 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnzNYACgkQX0oYuBcZ na1K7hAA5MaTEVRIRmCFUjpV6rTRP+I0nrlXDdKFs695Z9FHYMppWYiXiOgwgqnC zV4U5fsc8p9Y++MBR4LLOeBLY5bxjPv44cijFExqXRztvyjBEYc/SN+oizN/eP4Z Dea5m0kozTmz0ryRDGM/KIiXMvCcbHanlvzvarSC5HswMVt0CCxAXUZYwSHa83KT gdck4rH1x8id2Qze3Go5sD6OHidpDecp1ZnHQ5e4EKsf+d+QTU+f7W4159SEyjRa xwiLzjhklgJtdITTxBy+VD7EF/Z47jh+YVtVmERi5av/Wc4ItBhU2zX8iIXRtZXM BlLiDOaT5hZ+qi3LLUSOuEFspputIaDTevVkhMQbnEG6rQG1QBRSB//15ZfHe4gK xvr5IDj470mO15w4YoRCZ/NnuWH7xKbzeC+Q/6EVhqDYSVo2JHR+si4BF3JckfuA hzRudTznEL0G7f8dBJ4kGkWIB6OMtMS+J4DQPB8cp45ZOISfS/cvmwkPH+upvKeQ e8wShHm7EGrF/GojQqFo1h+AmN7Tc7e/52qcvzlAg4MM6Ufe480Ii9/cX6ouxJba //X/n7kveBrNP8wyC0bwRHNOw8MuZfOj12Wq2XNmUL7YGtrEw78w22z6M6OxuCM6 28Iqj0uzZmtKMzzb6/7q5RLLK7sf7xb35rp8t5alZc0auTJjo4M= =jhbG -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659356922 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnxvoACgkQX0oYuBcZ na0ZdRAA3InUdqI0RXW1qZTmdv+yx5foN+HVZuz4ZlemtBDpBwSHJ86kl8J+m6xY a5pwwpI1+TXjYHc9TiBMvsoTFdtjC/HM+pbfPp798zadyNoJ6b9QwN7PfEQnJAGZ HBykcnymCPmj9k/F+usTrBLA/Z0rKm+1RigGfWGBgjx+ph+oL2lyK1g5QdxDB3Kg YGcApXiHxY/jbyvMXNkpm4+iLMLKvZJckSWSqByfHX8iK8slAjaMmlCINMB00cqs 7MFC6s8YgG5rYz9WYXvlVKLqcxO2/irwoh1Oip6PpBR665GfrZY4MFOxhb/AszdX 5kwvnr22dTtua9voToTHLztlMGc3h7a0Objl1k09hZvig72+lz9DdAJTZkS18pKP SQpEB3ifq9F6wmZt+/TJFASvYqqZ34CDQFQWqLT0I5lRU8S+0nN9Nac/BdMjKg7F /fPu5fX5toP7JH1nl0E95cnNkY3NVN0Nu9FPoxiaq/GEcH6/qdcR89HmdnGzL09p lEtw7iqBE0s7RgzxFN9QrEOsiKBBOBU+PcOwgPflRooyby+2QY+INOQqhti6lOiw HBmfZtcR0LwQCGXyTNiOE7OUPWCRXsXEYqQ3xyOmhS2xXUe+pVVh+dF1dvnIStG9 Zuw3SzovkRPfxQT6Zee24t1SY932gI+W48vQzuqEozLU8KbLCNQ= =uqA2 -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659356903 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnxucACgkQX0oYuBcZ na3vsxAAlTmU3U1kOFlF/ouh1FzS1/2jLWIxlJJQi9klshPrqjSardpkx3UkWyB6 gBB7Nu9u6IDA7Mtgv0xiYTZJqs14iHvrQIYeRFX+ZXjhRxkLHbD0UFt4O2v8eMjw Dvaj0lP2HrogHkbhUkCAYoCHvJ6XFy+5BGPwLHfH7U8aHM4gJTVDoiGR8BQgNF2u NUmSwy70tVL2r9bbcY0QnptP4zouTmstfVxsLjRkJuu/ntd8sll4Rxe+/Yh+X/Cu onne21ujZCRJ/6oonF/J4MqAQ3up3gW0s7mRjV9sAJKrCyf5tL4Tn3BC6rXz8OI9 Ew0o6j5hnlFuXDXknXxKPvTa/gpLNkcGpgTK61JXLKrpQ9aJTHYGFApGcJ6yNVM4 NEgloO+t8TDpoTFxE49buA3YfjeHQCJp+0F/q6u/tJgAApni8id5hWaHQr8760dU mzFXaPT4YKCLRfZ+PZHPdzc39XKeJmYiAkwZqD5zjEm5NOSPmNX+EGscMLB8SYeH 2nCZCfxPPVhghnNTWTROjyv6O5S7wYybkyaUdO/i/oc0XyFpmbkQC7QLoOeCl8PU vBXjhgbPNOXeD4EFgtBKYcUGb6GydaMoFbhihCQcXhOjPSb91MIV+dL8FISzXZcZ HXGPqNx9QilyFXx3eUrF1ZSXJWQsVchSuoLFOrLKJ2xXmzsXjMw= =5OjE -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659356902 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnxuYACgkQX0oYuBcZ na32HQ/8DWhblMJUbK0gVSEPyVgDOCIPGhxPR7G+s8js3d9WhmOXGXwMsNsxrnvi xbhSgewmbFApg4OsIRHHo6pyxQioFiafy24GscO/ga3OHKNI+rd+srX3Ymgbi8Rx cB8+2R20ryrY+ifn6eaM/t2dIazmylH7SI3D+S/Uw1acsIQL63NGcqUpqTlgGA/D hlINPxtmX5aqvDSlMBmzvwQC/v0Pts4A6QbXFZlDMkjDdo68wKLL2jDxgHEdGb58 wHNYLjuiTz69nMB7Kvd4d0soHED1Z1GjtcHSoQlCVKPxI6+OreTILQLMtPupm8Ez zwGH5xhXbxNW0u42jpvPHywaLkCL1VNv3KGoqanEPn8fyuHV8dZHf9yUwE8zYe0d UfVkH/5zYeufCvqgGb/Acb9OMAtcZ096kyCudoBvCu11vVtQP7mBht74NYZdi0gQ R3KrEHb3ROcWyWOVN2FYIFOxLLT8bOZQaUF39MQA5o8/EU0PSqg+dK6fyvTSW4je dK1zgMoHTQrwv8kNifTRUm8bZLjf5o/ZR++RYI1vGruRKRg4vnnE41D5Uf6IKGth lgtxt0iYftis7oSeU5S4jWunZDCPqtIEvh7jVipdLCfyN7B9HhAma1jiIKwY5Gcr IK2I+wykHh2mCd0NRXqSFcRIQRg1V28mjtZlnNa5MMn/x13P80Q= =OSCu -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659356899 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnxuMACgkQX0oYuBcZ na2u1A/+Ncp3hHPoJnporhJlZI8vdC+eauJB9Bwn9E+Osv6+ybVGhtz4Tu0ehTHy n9LWSfzMUNZGgsKDEWseGTciiNCqA4I64HeIlDzVWBlGA3ckniUU2StT1PaSWWvm ACi3/cIZh3eqYXTe7F0qcyylOLyypRvou33XOARO1A1jgLdqKA6PBMnoO0n/U6xf naZqKgXCJXrDqefcLs1PIafnvQG2GNLnLt/5FaYpPguXR/wxOhIvcwqBc/et6C9j jT3GnnTU8YziSAK+6b3Kl+KCYWvN+Bus8Dyz1PaSjIOQ/DnFNDHeuJu6hOjx4Q+m FJhZoatlckktvVPaczztZNYdNlgSmAMED4dmC1lsbdo1kho1SHvdj1na1ZAQWxes /W4MkasHV3F0xWYl1DFD1YNQCC7X6fy7e7wylZTpxgUwo/Ze0lXq4s79XYer1wSI 1jUKkSjnty3zXaj/TfIeDQgVjqS9AbpHqjLj9x6QauLOlzmUzlMnuU/ZBrfj5QLt 53oSBCyAn/Wa8dPR04EdEgEARvES/kKEKIa2I5ivcxuk5uJzpjfQPV61I98AToEO NiekGGPh9HIUoI4l3RsBX2czGP9fFltZAnm/Il5NpeIY1/yEB5NhCg/lGRwLzuFw z4rQ2huPyEzQzBIyywyof4lXWBkU4TSY9x1FX5og8IhT/bwQ++0= =1n5t -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659356889 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnxtoACgkQX0oYuBcZ na1iGA/8Cpm/QitQNZb96EEPdfbMdlinyTakUZn051QyMIfWOIMVjfFmsWwY71bH urg2MiEp8KTXAAaVzW9f0jnafXh/kM9x1FfbbVsA1gUVAfyjkPWGQK8THZ/WshHZ 68DBggfnjCtpZypPslYInBlVGg/uo/++5waCdRQ9dwGv5ZV3JvdTs5WQhHLXhPUa MopHXQOo3SxWe49KOgb7c7afNJn8lRUJJGAQw5iyVjBxpuktkzaXq+plqA5zEFtc qgZGlL9goluZkQbT3l5O5L8jLtEaEUJDcqmk8PVPgJuEHIbm7nPrr8tGeS7j2EmK MsfvW2TKnR0LNCgmC+cjV+bwJHNcDYskxNVh+1hEMBaGgtnHWh/IMUcs0oEEnC2C 43HmZ8NZhucF/LlUB5RAgOYb3bXkyli9Hl2LvJaN8qtq3r5ppWj2o/q/Vrp25dIX LVF+QfoQBuL9Fde3uxONc57VCzuE2oVnWcqCw1EUNcc0LUXGf2TUhE6XGq+qOlXx QY0qNjjS/566Bk3O2PXImI54znsuLBaCKwS4sdUFh2YRulAqNtXoAYBkzDTCoXK6 eFMsaFuDLzDeWosAsa7WSN+DaEhzpF27qTPj7E28raZzrHU9u/0A3cN1WZlbYBpq JFXHV2dZvxFSti5KBVO04pnPGXeo/RM2guWUIPaY3a1QvID0B0E= =v4QL -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659356870 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnxsYACgkQX0oYuBcZ na0FiBAA43ywWSrHjxxlZsg2VCKAYtS0F4QBXuUzav4EkPPD7kongyggTtXXwwlG 06k5M+AW5G3Sh3VbUmi4kAlLl0I12rhogoT6xnfNjit3hUkniL2fZPzO1GCWT1rs EnfmF9nMya6qkmrlJoB8YQ9dRXg83pzLyLJYOSmFSwnutYlDXC6P5Dh9lW1xL8vF pbfPyf5SVlE+K/nGy42Y35ewVe0vyFB4PbWPtRvVIdq/G5d61gEh1AzdnmJqgqHp xu0+01E7wYNAzRsiP4hAtbzpRPWAWtrcZQx9Sbyc+AjHnexXeH9UYc9bt9l1Y59G WjEAagpi2+Sh5s2HCaB2PR87ATyWUqQxOjaghkZkXlUt3bGNZicJg2nmgsQeA+lE AAwXyIeFaMjS1TLukpafZFlfS4bgENuJsZxa3m2u9VpUxJ7kAmxDXDaPwa1RZudn lya3caq+Q3Dm09aHYLbxM+HPPgR3YEPLo+WykzY2fonp9S+T7ZMd5Am702gF4OjD RNoJRAEiNeJn5oyRAuWKOlCdunluIYp0koIVxf1x3PAz9v3TAPNcenLyIuN3SCc9 QNDj4fVwMu+Xz2PvGy6Hq1IRDD60tyujyJL+3Da1uKfdyvPEPggqN8DETHTQD9tw 09gggvQv/1BDmFNk/hIdJr8b+FNVQhiLWiJioAM0El3T+C24B/E= =15DF -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659356848 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnxrAACgkQX0oYuBcZ na1Z5hAA4HAQXD01C/sJAcC9e/o+4V6RaCSX3yu1PULGskHcrMngLGsQbPL1W6Wa F1lX0GJm0DaUuG8/edKPWK4o1jXaNJSb0ndslU5ASzBB1Fii6MTzUrBO8kHUCgbF XiV/NWPQd787O2HJE8Yjyjzyr0PFDhwssVjEapfZIOvjqAuQHqQO1XuiEu4AgQ/9 GsSEArj3b3dAWHyf/PdVphQc094QGrShFS9zCFqeFsVRRvUcxKFdgzsoJcpJi+LG H97P+JlQBifTLTg5p3lqzu53gf8T3aW94yJioKMQporNjU2daxnGbZPT2Z0h09bD Kizm6jHflQRmbrJwZdySnitYuwYKLW1x+tN9xPSgoBeqibKTNvKag02f6W21tUeu jzbgcv5XCPzNMoyxkfiFTszSZakTXzbELblf7XtE7GkbSk1t5mSx7y3LaMCGClkl Ujd4W7EJy09exIxrelec4FvMsCEkT3zSIdBsIrSMPKZ+uEESN0AqJ64Db1lFpxla qxuy83WRw1CcbVJeBa9YyplxcjblmvPcwzeDc5F1PrNr9KRmCmQ/jlPCL9ILgW4h UrmhOkVdIBMOfNLJUr7Umrvc5UjFG9V9891xnjFO1oV/s48kgt7/o7ccHfkWwZg3 Dsfxh8Z8oX4njG99YiziKYd/T5Q3obuLMVVq3rKRmg6O+a/sOew= =sa+s -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659356840 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnxqgACgkQX0oYuBcZ na3ZwA//SiRAmtntNE1dPsXoiYw+vnMrFuz1MkjRVrUeGkL/NY7bx38+MdJwoZCn kxPTg/rrCbWvLd2f0c1aWmD6aiSWUgn935+Ul+MYmR508OR30uOpT2GurONAtkok 6XOw+TUjKi6keS/FYLCc+ZB6vAtqP3MG2OC208FYBotI6XMsNtKXSCjjMR7hk8yZ tPmPfiEZhR4XiHIfOe4vgwC+qu+eHbsDnvC8Qt3Vy8WEWH2U/4+mw0ssbLpe5M5L hflJIguV7gvT/7CBd2iGkWI4Gx//6ujk8n1xgWj7DBmwWbQ2PXgx8Wenm3whd19T YoYoWCg/fuiz3c+xdnzfVYa/9H3zJV6iWcUTE/9Mvj4waD42AHL7KmLoS09/xVi5 qSdESVVZkNry5CsQUtUOZyhAG/VauyPJ+tkoRLdw2bcBnbXJFdhZpZN/lC3bfhI/ lCT6gW3m74FZuh7p0m43rwT6F6empn2yw6OeOtmt3o6ew1e01MSgvWU3n23JFWst MyvfMhbwq01nKaxBqyluFLe2LU82WHuNzhndkvyghbZBRjmiLOAAMK94rT6cHGzj fYXqXNA8kBnRiHZIfvgkEu1gEqxFWGs0uqYTxPTWVcu/2jyJtprWOhYrcwUG6HtA 3ErB6msUJn5/Tw1Rbm/h3fNVeAGsDEi8Ny1YU6HqyWLKeZVdrFw= =R18F -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659356833 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnxqEACgkQX0oYuBcZ na25oBAAviha+Wt4opJ5LKEHbmb7PjhnCvmMmyPEp9/jNKd53sk9N3OfNy+eG+z9 d8XfavtPM9z8pByUIz1xwRFsa3DGG6/fVBg8znGLhaVxU9JQejQQ9qCjelQE7lXy xSJo9xEfpA7B9OhaF1frA8afPGC5UwJU4mAh4Z5hpjnJhMbvZdERhmy0VLd5rVGm KOuIORsvO4nJuBkte5oxIaadD2GpeU2flsqPRjzZ+RvsP+EoTp+xrWluhpyLNryp IpTsPyleg3SAfJEuEi+QakUxjBsBKB7coJB5ubNjwtoLUzmWn7XfZ26y3KxmGDox y+WMXFDOHr1X1QSyZzfDLuMIkTeA52GnGr0e3Okpl4OUTe3ee5AbfF2Tq+ZlokuE iEYdoC2gPsSRRTrh1GyECU2dDYHE0xH/Go4Cm5WG4H2lJp0XYYq2ZL8/l/zPXE5f mPkYfA0Tyofo1tRKKCSIrAUfHqJWr7pDpkgrtmeA9/O/f4Y8jpm14KluLkAQ6zKp oT0AbYK0xmBYtGdCyOa36IezPs+jwliTEpeInTFqd/xzI90ubqDQQgwQbB+sx6wB Fek4X4XGJnYKGwAjx0MYawqhb83MbnTQMR3/M+PXdn60igBGHS+gh9dyWdtOwAKw 0t645KbGH25x80nx2EeypybKMG4NDxbE0TZ1S9+txci8tQ4l56w= =w7f3 -----END PGP SIGNATURE----- parent 118b6e1620cfe7784fccfbf5dca83ee993a0a351 author Romain TREFAULT 1657289180 +0200 committer Romain TREFAULT 1659356782 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnxm4ACgkQX0oYuBcZ na3nOBAApaA6AJMPK6UxfHpvpcX35Yau+IiXBnwhDdKy9yJ/RCMWbP5UuoakbhQe W7NoNKlZcdFWyan2jEGqs6I/jkTqTXvyUov02H+WuvcWkZv0QZZLSsE7l6gjBR/E LzrJ9mglUHdDfDUayzxAHWFvA83PljDOYmGKg6YrcazSFWLa4m5Nkhplj3gpMEPD Kc3NRplB3qpoye7Iq8+G/zVbeUl6+3FxP3KQWOAd4ioQBF6nv4S5ABiGHSeayxxH nzxKXZkpIRfo1CZvRkKSJQrD/0mI353I5/wSSa7lUUa3D8HB+2tfU3eS+C5cKPeM 1ba5HCn7EwmQla8x+m2N4O1b70r+PcWL7De9Nu6Hy1ZKEjtRE5Zd/fV7J0iiup1J NjoyYz02vLlnwsTPymt+X/lZf78bDKpQpfmwpHWRStBhzlBRX4YwJgDeaZv9ukmw m7aIeQYZa2O1iKNS5D0gPGX/ACiEPJ00JfZEvuBeoBbQbe2ZEOBLBdFXq7dclYRm x2FzBYTkuuONTajZfNEFsUPK83fHlqGZRmKEUGv4iQrCUfI9E/1YGCj8wky8foXq sx2kFpvBTL65Piz5I6Ic2BPeo5t8tuXVdQo0+voB5SO7b6j0tDREdNOj4e5pJ1NM DhzYf3UCVzozTTkM8uNkJ8T/lwU8RqhLLXm4dCn8snN4pUYpqEA= =zKmo -----END PGP SIGNATURE----- deploy: goerli contracts Update index.ts refactor: squash unsigned commits -S refactor: add goerli tests refactor: add goerli tests refactor: add goerli tests feat: add goerli support in currency -S feat: add goerli payment-detection tests refactor: setups.ts refactor: goerli tests refactor: goerli contract address in tests refactor: goerli tests refactor: rename ETHConversionProxy to EthConversionProxy feat: add goerli parent 58402f070da652f120ea26417b0155ecac79fd19 author olivier7delf <55892112+olivier7delf@users.noreply.github.com> 1657529886 +0200 committer Romain TREFAULT 1659338957 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLngM0ACgkQX0oYuBcZ na3FSg/9FqPZs8oH38kbtA+HMgUmSYkloTTKefY80dADoVhQc2XrO59MchQmxx91 GlCl6bcrSWpmjTojTo653V3aLFyRfBCltzEE16sM2VYmIgd+lXg4fnK60yB9Xq03 f0NYtd6R7F48pINtOepRZ8kieFRHxcBbE1StV+pZTRJeHQEsbudbtio3rsfkGVnk S/OwwzsQFfJXYDWp4dj6Suz6fy4kgO5e3ZkF0VkKXIMKBEuRiUTf/QWK0nus968C phdtXOzPy1gttVFtY+luA6NboH27jh0k/eVYaab8JkFY42c/kPrxh+Ou6LeKh/Mr G7MB55COmHmt+QEn3o1DFqcaSe9UDuuJVgyG3gb81QxFedc0wsTE4T4WvnLjdume RfBxQ/VbXAuYw7xEZ0vPvKDtQkDoWwXhvsniluplpLeHnYKYKLe3yG/pi9z3xIV4 G/Z+kMXCKM8lAy+pKRSHzv1tMHg02ERLGoyGhGfC+FUkkGDasznKnaxBYqOYHxsy aoaZxec5U7Vrqkz20Exg2sHlyieJIJn3Oh+Sk+ouOINqbArVFGLb379JAi9aEsjl MKULpC8opOPE3l9PcsDCh9oHlKW+i1pRcVpya/OiRZUy+sYdNb4sBDsuufJAUjyL 3b1MRecrh3ZNo0wPLuxypg1x01/Y0JDtaX1Pw0KLXCHLDd6noD4= =vfDF -----END PGP SIGNATURE----- parent 58402f070da652f120ea26417b0155ecac79fd19 author olivier7delf <55892112+olivier7delf@users.noreply.github.com> 1657529886 +0200 committer Romain TREFAULT 1659338942 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLngL4ACgkQX0oYuBcZ na1YNBAAzkAdo+3oZuMuzESNXIUumoLj8iPhAziioVDisKiCUSk8dLkUZ+Dm8nt4 AznGw2wypVLxgk9LMsIEsBHRZvFkC09PNGI0tl1lYgwTNpJnERCxnisVy4P2mTmk vx14DId1xJg6h7B8TfIpEuHJ9PgoVH4CMo0D4r7dkc37ucFqCqqvjFy0Q74BWrAt QIiRtsB4I7tcj+dOMfIYv2VwuHSJiKAEU9zejkKE7opnVvsCp011WaqDCi38MSPS 4clkfj426nrH3iVHFe6X+6sAmhL4YqkGmVSdFcvPpoIfFreaAkN/FHuPTAfXGx3y ZK+x5CVW7yWMKERroD+qly2FMEWIcSonOFLoASrcpyxEOPNCyfChFO4HBfPTu7ms knA0pTWSGjE8K9UI/zf4jh5bdlDO/scUJdSXO8Z25nCp91kACmSIZI56mME86RL5 kZxuBxD9GmtKgZ9xeSaQRoxGjE643xC9pZ2TDReZgQedhIcDy+Bff20XnBjsR8WW Mxk+dzzNWWgZPCeNkX7S1MBUUItFKKN/feSc8Ey9ZUUJbk66SyGrnbj5bLPfEaND oQy9Cu94P0J5ZvRn3GUo8solUZ9lpW6mO4JNomyDNkwiO2DiIZ40DvWYbiCjvjVS wohC5M8OrhVtiWjfcnYrcQvAkgB1eiLPUzc0Q9VYo4daiNhhqPo= =ercG -----END PGP SIGNATURE----- parent 58402f070da652f120ea26417b0155ecac79fd19 author olivier7delf <55892112+olivier7delf@users.noreply.github.com> 1657529886 +0200 committer Romain TREFAULT 1659338203 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnfdsACgkQX0oYuBcZ na3DHQ//RfNwAXsNwVRFdE61rTKHGw2sHoyNwxjT9tsthH2AoYMPwHZddmaX9uAj LQ5mnfSVEtIhnu3CQKLdtxpCFX7+tUpdNSKeaLYtgeKxHM2ZggDJRBDl9vZPK/A7 kYSdlySa+c7BDVhw8X8GqCodm2O+DUv/ZJBWNZkXB9mg1ZQoudDrZk7o07A1vQBN d7MJ6hIrCDvHaur/cHmHB1TUuI9YA1IILQ/DC/KbuujN4QYhl1fvbPVL4muq+vHC gv6UUEI1pRG8mRRypdtTebzYZxOdxz5ezRNiAgfS44h+q44PIfL7nJuRwZJRg6Dm n4vYR71LPMSiRbSNXG+EQ4mPWdpnF/C/eLGfY/otwlNyy7KQFA27R2dJ2lpPYZOz N3MNNudGEG1vXbwjMgEYnY6jhEii30KY80ti5wWiF7szDHgk2JXy+l6rhaMR/KQ8 6qL0dDFYoiOH/3ggP3HSowftzr/xJB92So5e5LEi7neLpolHNgC4sIYu/oYZK9te Q4LpL9h35uER+sh1YhqfU9o2y2YV+Mv4ZbJ9VFKQG6/FWSO1hLnwAxzroKUVCvhm 5Y9fwTsrisiW9F+jjUutL7tqUROZ4F4/0jrHhrKY8FM0GqEKxyI9wF4ZeOG9EtcH qsxFAymOUGUlQYYKCALGasJid80ldg/X4abg+0Gemc40w9f/5Ls= =bAV2 -----END PGP SIGNATURE----- fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% fixed ethFeeProxy subgraph goerli test refactor: move goerli to the newest versions refactor: move goerli to the newest versions new escrow deployed on mainnet, rinkeby, goerli, matic and fuse refactor: contract setup compression fix (#888) feat: goerli storage (#890) feat: squash commits goerli storage fix: modify smart contract address fix: ETHConversionProxy to EthConversionProxy fix: add MIT License doc : modify command to create request (#880) * refactor: command to create request * fix: escrow audit fix 2 (#878) * fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% * feat: add cancel stream function (#884) * refactor: contract setup compression fix (#888) * fix: escrow audit fix 2 (#878) * fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% * feat: add cancel stream function (#884) * refactor: contract setup compression fix (#888) * feat: goerli storage (#890) feat: squash commits goerli storage * fix: delete ETHConversionProxy Co-authored-by: Darko Kolev Co-authored-by: olivier7delf <55892112+olivier7delf@users.noreply.github.com> Co-authored-by: Bertrand Juglas deploy: goerli contracts refactor: add goerli address contract -S refactor: add goerli tests -S feat: add goerli payment-detection tests refactor: goerli tests refactor: goerli contract address in tests refactor: goerli tests fixed ethFeeProxy subgraph goerli test refactor: move goerli to the newest versions refactor: move goerli to the newest versions new escrow deployed on mainnet, rinkeby, goerli, matic and fuse refactor: contract setup compression fix (#888) fix: ETHConversionProxy to EthConversionProxy ETHConversionProxy to EthConversionProxy fix: EthConversionProxy to setupEth... refactor: keep 0.2.0 goerli version refactor: contract setup compression fix (#888) fix: EthConversionProxy to ETHConversion... commented goerli in eth-input detector fixing eth-input-data goerli test fixed formatting removed goerli input data test updated escrow test config deploy: goerli contracts Update index.ts wip: ETHConversionProxy refactor: squash unsigned commits -S refactor: add goerli tests refactor: add goerli tests refactor: add goerli tests feat: add goerli support in currency -S feat: add goerli payment-detection tests refactor: setups.ts refactor: goerli tests refactor: goerli contract address in tests refactor: goerli tests refactor: rename ETHConversionProxy to EthConversionProxy feat: add goerli fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% feat: add cancel stream function (#884) fixed ethFeeProxy subgraph goerli test refactor: move goerli to the newest versions refactor: move goerli to the newest versions new escrow deployed on mainnet, rinkeby, goerli, matic and fuse feat: goerli storage (#890) feat: squash commits goerli storage fix: modify smart contract address fix: ETHConversionProxy to EthConversionProxy fix: add MIT License doc: modify command to create request (#880) * refactor: command to create request * fix: escrow audit fix 2 (#878) * fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% * feat: add cancel stream function (#884) * refactor: contract setup compression fix (#888) * fix: escrow audit fix 2 (#878) * fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% * feat: add cancel stream function (#884) * refactor: contract setup compression fix (#888) * feat: goerli storage (#890) feat: squash commits goerli storage * fix: delete ETHConversionProxy Co-authored-by: Darko Kolev Co-authored-by: olivier7delf <55892112+olivier7delf@users.noreply.github.com> Co-authored-by: Bertrand Juglas deploy: goerli contracts refactor: add goerli address contract -S refactor: add goerli tests -S feat: add goerli payment-detection tests refactor: goerli tests refactor: goerli tests refactor: move goerli to the newest versions refactor: move goerli to the newest versions new escrow deployed on mainnet, rinkeby, goerli, matic and fuse refactor: contract setup compression fix (#888) fix: ETHConversionProxy to EthConversionProxy refactor: keep 0.2.0 goerli version fix: EthConversionProxy to ETHConversion... commented goerli in eth-input detector fixing eth-input-data goerli test fixed formatting removed goerli input data test updated escrow test config fixed formatting parent 58402f070da652f120ea26417b0155ecac79fd19 author olivier7delf <55892112+olivier7delf@users.noreply.github.com> 1657529886 +0200 committer Romain TREFAULT 1659338957 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLngM0ACgkQX0oYuBcZ na3FSg/9FqPZs8oH38kbtA+HMgUmSYkloTTKefY80dADoVhQc2XrO59MchQmxx91 GlCl6bcrSWpmjTojTo653V3aLFyRfBCltzEE16sM2VYmIgd+lXg4fnK60yB9Xq03 f0NYtd6R7F48pINtOepRZ8kieFRHxcBbE1StV+pZTRJeHQEsbudbtio3rsfkGVnk S/OwwzsQFfJXYDWp4dj6Suz6fy4kgO5e3ZkF0VkKXIMKBEuRiUTf/QWK0nus968C phdtXOzPy1gttVFtY+luA6NboH27jh0k/eVYaab8JkFY42c/kPrxh+Ou6LeKh/Mr G7MB55COmHmt+QEn3o1DFqcaSe9UDuuJVgyG3gb81QxFedc0wsTE4T4WvnLjdume RfBxQ/VbXAuYw7xEZ0vPvKDtQkDoWwXhvsniluplpLeHnYKYKLe3yG/pi9z3xIV4 G/Z+kMXCKM8lAy+pKRSHzv1tMHg02ERLGoyGhGfC+FUkkGDasznKnaxBYqOYHxsy aoaZxec5U7Vrqkz20Exg2sHlyieJIJn3Oh+Sk+ouOINqbArVFGLb379JAi9aEsjl MKULpC8opOPE3l9PcsDCh9oHlKW+i1pRcVpya/OiRZUy+sYdNb4sBDsuufJAUjyL 3b1MRecrh3ZNo0wPLuxypg1x01/Y0JDtaX1Pw0KLXCHLDd6noD4= =vfDF -----END PGP SIGNATURE----- parent 58402f070da652f120ea26417b0155ecac79fd19 author olivier7delf <55892112+olivier7delf@users.noreply.github.com> 1657529886 +0200 committer Romain TREFAULT 1659338942 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLngL4ACgkQX0oYuBcZ na1YNBAAzkAdo+3oZuMuzESNXIUumoLj8iPhAziioVDisKiCUSk8dLkUZ+Dm8nt4 AznGw2wypVLxgk9LMsIEsBHRZvFkC09PNGI0tl1lYgwTNpJnERCxnisVy4P2mTmk vx14DId1xJg6h7B8TfIpEuHJ9PgoVH4CMo0D4r7dkc37ucFqCqqvjFy0Q74BWrAt QIiRtsB4I7tcj+dOMfIYv2VwuHSJiKAEU9zejkKE7opnVvsCp011WaqDCi38MSPS 4clkfj426nrH3iVHFe6X+6sAmhL4YqkGmVSdFcvPpoIfFreaAkN/FHuPTAfXGx3y ZK+x5CVW7yWMKERroD+qly2FMEWIcSonOFLoASrcpyxEOPNCyfChFO4HBfPTu7ms knA0pTWSGjE8K9UI/zf4jh5bdlDO/scUJdSXO8Z25nCp91kACmSIZI56mME86RL5 kZxuBxD9GmtKgZ9xeSaQRoxGjE643xC9pZ2TDReZgQedhIcDy+Bff20XnBjsR8WW Mxk+dzzNWWgZPCeNkX7S1MBUUItFKKN/feSc8Ey9ZUUJbk66SyGrnbj5bLPfEaND oQy9Cu94P0J5ZvRn3GUo8solUZ9lpW6mO4JNomyDNkwiO2DiIZ40DvWYbiCjvjVS wohC5M8OrhVtiWjfcnYrcQvAkgB1eiLPUzc0Q9VYo4daiNhhqPo= =ercG -----END PGP SIGNATURE----- parent 58402f070da652f120ea26417b0155ecac79fd19 author olivier7delf <55892112+olivier7delf@users.noreply.github.com> 1657529886 +0200 committer Romain TREFAULT 1659338203 +0200 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEESJbe1R3hzb/g0Lx8X0oYuBcZna0FAmLnfdsACgkQX0oYuBcZ na3DHQ//RfNwAXsNwVRFdE61rTKHGw2sHoyNwxjT9tsthH2AoYMPwHZddmaX9uAj LQ5mnfSVEtIhnu3CQKLdtxpCFX7+tUpdNSKeaLYtgeKxHM2ZggDJRBDl9vZPK/A7 kYSdlySa+c7BDVhw8X8GqCodm2O+DUv/ZJBWNZkXB9mg1ZQoudDrZk7o07A1vQBN d7MJ6hIrCDvHaur/cHmHB1TUuI9YA1IILQ/DC/KbuujN4QYhl1fvbPVL4muq+vHC gv6UUEI1pRG8mRRypdtTebzYZxOdxz5ezRNiAgfS44h+q44PIfL7nJuRwZJRg6Dm n4vYR71LPMSiRbSNXG+EQ4mPWdpnF/C/eLGfY/otwlNyy7KQFA27R2dJ2lpPYZOz N3MNNudGEG1vXbwjMgEYnY6jhEii30KY80ti5wWiF7szDHgk2JXy+l6rhaMR/KQ8 6qL0dDFYoiOH/3ggP3HSowftzr/xJB92So5e5LEi7neLpolHNgC4sIYu/oYZK9te Q4LpL9h35uER+sh1YhqfU9o2y2YV+Mv4ZbJ9VFKQG6/FWSO1hLnwAxzroKUVCvhm 5Y9fwTsrisiW9F+jjUutL7tqUROZ4F4/0jrHhrKY8FM0GqEKxyI9wF4ZeOG9EtcH qsxFAymOUGUlQYYKCALGasJid80ldg/X4abg+0Gemc40w9f/5Ls= =bAV2 -----END PGP SIGNATURE----- fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% fixed ethFeeProxy subgraph goerli test refactor: move goerli to the newest versions refactor: move goerli to the newest versions new escrow deployed on mainnet, rinkeby, goerli, matic and fuse refactor: contract setup compression fix (#888) feat: goerli storage (#890) feat: squash commits goerli storage fix: modify smart contract address fix: ETHConversionProxy to EthConversionProxy fix: add MIT License doc : modify command to create request (#880) * refactor: command to create request * fix: escrow audit fix 2 (#878) * fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% * feat: add cancel stream function (#884) * refactor: contract setup compression fix (#888) * fix: escrow audit fix 2 (#878) * fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% * feat: add cancel stream function (#884) * refactor: contract setup compression fix (#888) * feat: goerli storage (#890) feat: squash commits goerli storage * fix: delete ETHConversionProxy Co-authored-by: Darko Kolev Co-authored-by: olivier7delf <55892112+olivier7delf@users.noreply.github.com> Co-authored-by: Bertrand Juglas deploy: goerli contracts refactor: add goerli address contract -S refactor: add goerli tests -S feat: add goerli payment-detection tests refactor: goerli tests refactor: goerli contract address in tests refactor: goerli tests fixed ethFeeProxy subgraph goerli test refactor: move goerli to the newest versions refactor: move goerli to the newest versions new escrow deployed on mainnet, rinkeby, goerli, matic and fuse refactor: contract setup compression fix (#888) fix: ETHConversionProxy to EthConversionProxy ETHConversionProxy to EthConversionProxy fix: EthConversionProxy to setupEth... refactor: keep 0.2.0 goerli version refactor: contract setup compression fix (#888) fix: EthConversionProxy to ETHConversion... commented goerli in eth-input detector fixing eth-input-data goerli test fixed formatting removed goerli input data test updated escrow test config deploy: goerli contracts Update index.ts wip: ETHConversionProxy refactor: squash unsigned commits -S refactor: add goerli tests refactor: add goerli tests refactor: add goerli tests feat: add goerli support in currency -S feat: add goerli payment-detection tests refactor: setups.ts refactor: goerli tests refactor: goerli contract address in tests refactor: goerli tests refactor: rename ETHConversionProxy to EthConversionProxy feat: add goerli fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% feat: add cancel stream function (#884) fixed ethFeeProxy subgraph goerli test refactor: move goerli to the newest versions refactor: move goerli to the newest versions new escrow deployed on mainnet, rinkeby, goerli, matic and fuse feat: goerli storage (#890) feat: squash commits goerli storage fix: modify smart contract address fix: ETHConversionProxy to EthConversionProxy fix: add MIT License doc: modify command to create request (#880) * refactor: command to create request * fix: escrow audit fix 2 (#878) * fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% * feat: add cancel stream function (#884) * refactor: contract setup compression fix (#888) * fix: escrow audit fix 2 (#878) * fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% * feat: add cancel stream function (#884) * refactor: contract setup compression fix (#888) * feat: goerli storage (#890) feat: squash commits goerli storage * fix: delete ETHConversionProxy Co-authored-by: Darko Kolev Co-authored-by: olivier7delf <55892112+olivier7delf@users.noreply.github.com> Co-authored-by: Bertrand Juglas deploy: goerli contracts refactor: add goerli address contract -S refactor: add goerli tests -S feat: add goerli payment-detection tests refactor: goerli tests refactor: goerli tests refactor: move goerli to the newest versions refactor: move goerli to the newest versions new escrow deployed on mainnet, rinkeby, goerli, matic and fuse refactor: contract setup compression fix (#888) fix: ETHConversionProxy to EthConversionProxy refactor: keep 0.2.0 goerli version fix: EthConversionProxy to ETHConversion... commented goerli in eth-input detector fixing eth-input-data goerli test fixed formatting removed goerli input data test updated escrow test config fixed formatting deploy: goerli contracts Update index.ts wip: ETHConversionProxy refactor: move goerli to the newest versions fix: modify smart contract address fix: ETHConversionProxy to EthConversionProxy deploy: goerli contracts refactor: add goerli address contract -S feat: add goerli payment-detection tests refactor: move goerli to the newest versions new escrow deployed on mainnet, rinkeby, goerli, matic and fuse refactor: contract setup compression fix (#888) refactor: keep 0.2.0 goerli version deploy: goerli contracts Update index.ts refactor: move goerli to the newest versions fix: modify smart contract address deploy: goerli contracts refactor: add goerli address contract refactor: move goerli to the newest versions new escrow deployed on mainnet, rinkeby, goerli, matic and fuse refactor: contract setup compression fix (#888) refactor: keep 0.2.0 goerli version typo: specified test on goerli Co-authored-by: Kevin Dave typo: specified test on goerli Co-authored-by: Kevin Dave typo: specified test on rinkeby Co-authored-by: Kevin Dave typo: specified test on goerli Co-authored-by: Kevin Dave Delete deploy.ts~007d33cc... refactor: setups.ts Delete verify.ts~007d33cc... refactor: setups.ts typo: specified test on goerli Co-authored-by: Kevin Dave typo: Temporary disable goerli Co-authored-by: Kevin Dave typo: specified test on rinkeby Co-authored-by: Kevin Dave deploy: goerli contracts Update index.ts feat: add goerli fix: escrow audit fix 2 (#878) deploy: goerli contracts Update index.ts feat: add goerli fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% feat: Add cancel stream function (#884) refactor: move goerli to the newest versions feat: goerli storage (#890) feat: squash commits goerli storage fix: ETHConversionProxy to EthConversionProxy fix: add MIT License doc : modify command to create request (#880) * refactor: command to create request * fix: escrow audit fix 2 (#878) * fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% * feat: add cancel stream function (#884) * refactor: contract setup compression fix (#888) * fix: escrow audit fix 2 (#878) * fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% * feat: add cancel stream function (#884) * refactor: contract setup compression fix (#888) * feat: goerli storage (#890) feat: squash commits goerli storage * fix: delete ETHConversionProxy Co-authored-by: Darko Kolev Co-authored-by: olivier7delf <55892112+olivier7delf@users.noreply.github.com> Co-authored-by: Bertrand Juglas refactor: add goerli address contract -S feat: add goerli payment-detection tests refactor: move goerli to the newest versions refactor: move goerli to the newest versions refactor: contract setup compression fix (#888) refactor: keep 0.2.0 goerli version commented goerli in eth-input detector fixed formatting removed goerli input data test deploy: goerli contracts Update index.ts feat: add goerli fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% feat: add cancel stream function (#884) refactor: move goerli to the newest versions feat: goerli storage (#890) feat: squash commits goerli storage fix: ETHConversionProxy to EthConversionProxy fix: add MIT License doc: modify command to create request (#880) * refactor: command to create request * fix: escrow audit fix 2 (#878) * fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% * feat: add cancel stream function (#884) * refactor: contract setup compression fix (#888) * fix: escrow audit fix 2 (#878) * fix(smart-contracts): update batch fees (#873) update batch fees from 1% to .3% * feat: add cancel stream function (#884) * refactor: contract setup compression fix (#888) * feat: goerli storage (#890) feat: squash commits goerli storage * fix: delete ETHConversionProxy Co-authored-by: Darko Kolev Co-authored-by: olivier7delf <55892112+olivier7delf@users.noreply.github.com> Co-authored-by: Bertrand Juglas -S feat: add goerli payment-detection tests refactor: move goerli to the newest versions refactor: contract setup compression fix (#888) refactor: keep 0.2.0 goerli version commented goerli in eth-input detector fixed formatting removed goerli input data test fixed formatting refactor: remove some goerli tests typo: specified test on goerli Co-authored-by: Kevin Dave typo: specified test on goerli Co-authored-by: Kevin Dave typo: specified test on rinkeby Co-authored-by: Kevin Dave typo: specified test on goerli Co-authored-by: Kevin Dave Delete deploy.ts~007d33cc... refactor: setups.ts Delete verify.ts~007d33cc... refactor: setups.ts typo: specified test on goerli Co-authored-by: Kevin Dave typo: Temporary disable goerli Co-authored-by: Kevin Dave typo: specified test on rinkeby Co-authored-by: Kevin Dave --- packages/currency/src/aggregators/goerli.json | 8 + .../currency/src/erc20/networks/goerli.ts | 17 ++ .../src/erc20/address-based.ts | 2 +- .../any/any-to-erc20-proxy-contract.test.ts | 48 +++++- .../test/erc20/address-based.test.ts | 2 +- .../test/erc20/fee-proxy-contract.test.ts | 4 +- .../test/erc20/proxy-contract.test.ts | 4 +- .../payment-detection/test/erc777/mocks.ts | 2 +- .../test/erc777/superfluid-retriever.test.ts | 129 ++++++++++++++-- .../test/eth/info-retriever.test.ts | 3 +- .../test/eth/input-data.test.ts | 4 +- .../payment-detection/test/provider.test.ts | 25 ++- .../payment-processor/src/payment/utils.ts | 2 +- .../test/payment/utils.test.ts | 9 ++ .../scripts-create2/compute-one-address.ts | 2 +- .../contract-setup/setupETHConversionProxy.ts | 2 +- .../scripts-create2/contract-setup/setups.ts | 145 +----------------- .../smart-contracts/scripts-create2/deploy.ts | 2 +- .../smart-contracts/scripts-create2/utils.ts | 4 +- .../smart-contracts/scripts-create2/verify.ts | 2 +- .../scripts/conversion-proxy.ts | 2 +- .../scripts/deploy-payments.ts | 14 +- .../scripts/test-deploy_chainlink_contract.ts | 4 +- .../interfaces/IERC20ConversionProxy.sol | 1 + .../ChainlinkConversionPath/index.ts | 4 + .../lib/artifacts/ERC20EscrowToPay/index.ts | 12 ++ .../src/lib/artifacts/ERC20SwapToPay/index.ts | 4 + .../lib/artifacts/EthConversionProxy/index.ts | 4 + .../lib/artifacts/EthereumFeeProxy/index.ts | 4 + .../src/lib/artifacts/EthereumProxy/index.ts | 4 + 30 files changed, 281 insertions(+), 188 deletions(-) create mode 100644 packages/currency/src/aggregators/goerli.json create mode 100644 packages/currency/src/erc20/networks/goerli.ts diff --git a/packages/currency/src/aggregators/goerli.json b/packages/currency/src/aggregators/goerli.json new file mode 100644 index 0000000000..93d71cbd2c --- /dev/null +++ b/packages/currency/src/aggregators/goerli.json @@ -0,0 +1,8 @@ +{ + "0xba62bcfcaafc6622853cca2be6ac7d845bc0f2dc": { + "0x775eb53d00dd0acd3ec1696472105d579b9b386b": 1 + }, + "0x775eb53d00dd0acd3ec1696472105d579b9b386b": { + "0xba62bcfcaafc6622853cca2be6ac7d845bc0f2dc": 1 + } +} diff --git a/packages/currency/src/erc20/networks/goerli.ts b/packages/currency/src/erc20/networks/goerli.ts new file mode 100644 index 0000000000..d890fe3c30 --- /dev/null +++ b/packages/currency/src/erc20/networks/goerli.ts @@ -0,0 +1,17 @@ +import { TokenMap } from './types'; + +// List of the supported goerli ERC20 tokens +export const supportedGoerliERC20: TokenMap = { + // Request Test token, used for testing on goerli. + '0x7af963cF6D228E564e2A0aA0DdBF06210B38615D': { + decimals: 18, + name: 'Goerli Test Token', + symbol: 'TST', + }, + // Faucet Token on goerli network. Easy to use on tests. + '0xBA62BCfcAaFc6622853cca2BE6Ac7d845BC0f2Dc': { + decimals: 18, + name: 'Faucet Token', + symbol: 'FAU-goerli', + }, +}; diff --git a/packages/payment-detection/src/erc20/address-based.ts b/packages/payment-detection/src/erc20/address-based.ts index 5bd11e632e..4664b3164f 100644 --- a/packages/payment-detection/src/erc20/address-based.ts +++ b/packages/payment-detection/src/erc20/address-based.ts @@ -8,7 +8,7 @@ import { BalanceError } from '../balance-error'; import Erc20InfoRetriever from './address-based-info-retriever'; import { PaymentDetectorBase } from '../payment-detector-base'; -const supportedNetworks = ['mainnet', 'rinkeby', 'private']; +const supportedNetworks = ['mainnet', 'rinkeby', 'goerli', 'private']; /** * Handle payment networks with ERC20 based address extension diff --git a/packages/payment-detection/test/any/any-to-erc20-proxy-contract.test.ts b/packages/payment-detection/test/any/any-to-erc20-proxy-contract.test.ts index 1be024d556..2acfa670b2 100644 --- a/packages/payment-detection/test/any/any-to-erc20-proxy-contract.test.ts +++ b/packages/payment-detection/test/any/any-to-erc20-proxy-contract.test.ts @@ -31,7 +31,7 @@ const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { }, extensions: { anyToErc20Proxy: { - supportedNetworks: ['mainnet', 'rinkeby', 'private'], + supportedNetworks: ['mainnet', 'rinkeby', 'goerli', 'private'], createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, @@ -56,7 +56,7 @@ describe('api/any/conversion-fee-proxy-contract', () => { jest.clearAllMocks(); }); - it('can createExtensionsDataForCreation', async () => { + it('can createExtensionsDataForCreation (Rinkeby)', async () => { await anyToErc20Proxy.createExtensionsDataForCreation({ paymentAddress: 'ethereum address', salt: 'ea3bc7caf64110ca', @@ -77,7 +77,28 @@ describe('api/any/conversion-fee-proxy-contract', () => { }); }); - it('can createExtensionsDataForCreation with fee amount and address', async () => { + it('can createExtensionsDataForCreation (Goerli)', async () => { + await anyToErc20Proxy.createExtensionsDataForCreation({ + paymentAddress: 'ethereum address', + salt: 'ea3bc7caf64110ca', + acceptedTokens: ['ethereum address2'], + network: 'goerli', + maxRateTimespan: 1000, + }); + + expect(createCreationAction).toHaveBeenCalledWith({ + feeAddress: undefined, + feeAmount: undefined, + paymentAddress: 'ethereum address', + refundAddress: undefined, + salt: 'ea3bc7caf64110ca', + acceptedTokens: ['ethereum address2'], + network: 'goerli', + maxRateTimespan: 1000, + }); + }); + + it('can createExtensionsDataForCreation with fee amount and address (Rinkeby)', async () => { await anyToErc20Proxy.createExtensionsDataForCreation({ feeAddress: 'fee address', feeAmount: '2000', @@ -98,6 +119,27 @@ describe('api/any/conversion-fee-proxy-contract', () => { }); }); + it('can createExtensionsDataForCreation with fee amount and address (Goerli)', async () => { + await anyToErc20Proxy.createExtensionsDataForCreation({ + feeAddress: 'fee address', + feeAmount: '2000', + paymentAddress: 'ethereum address', + salt: 'ea3bc7caf64110ca', + acceptedTokens: ['ethereum address2'], + network: 'goerli', + }); + + expect(createCreationAction).toHaveBeenCalledWith({ + feeAddress: 'fee address', + feeAmount: '2000', + paymentAddress: 'ethereum address', + refundAddress: undefined, + salt: 'ea3bc7caf64110ca', + acceptedTokens: ['ethereum address2'], + network: 'goerli', + }); + }); + it('can createExtensionsDataForCreation without salt', async () => { await anyToErc20Proxy.createExtensionsDataForCreation({ paymentAddress: 'ethereum address', diff --git a/packages/payment-detection/test/erc20/address-based.test.ts b/packages/payment-detection/test/erc20/address-based.test.ts index f75629d334..93fa533021 100644 --- a/packages/payment-detection/test/erc20/address-based.test.ts +++ b/packages/payment-detection/test/erc20/address-based.test.ts @@ -126,7 +126,7 @@ describe('api/erc20/address-based', () => { error: { code: PaymentTypes.BALANCE_ERROR_CODE.NETWORK_NOT_SUPPORTED, message: - 'Payment network wrong not supported by ERC20 payment detection. Supported networks: mainnet, rinkeby, private', + 'Payment network wrong not supported by ERC20 payment detection. Supported networks: mainnet, rinkeby, goerli, private', }, events: [], }); diff --git a/packages/payment-detection/test/erc20/fee-proxy-contract.test.ts b/packages/payment-detection/test/erc20/fee-proxy-contract.test.ts index f7504c9b8d..c0d924c21d 100644 --- a/packages/payment-detection/test/erc20/fee-proxy-contract.test.ts +++ b/packages/payment-detection/test/erc20/fee-proxy-contract.test.ts @@ -23,7 +23,7 @@ const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { }, extensions: { feeProxyContractErc20: { - supportedNetworks: ['mainnet', 'private', 'rinkeby'], + supportedNetworks: ['mainnet', 'private', 'rinkeby', 'goerli'], createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, @@ -283,7 +283,7 @@ describe('api/erc20/fee-proxy-contract', () => { ).toBe('7'); }); - it('should have gasFee & gasUsed in the payment eventl', async () => { + it('should have gasFee & gasUsed in the payment event', async () => { const mockRequest: RequestLogicTypes.IRequest = { creator: { type: IdentityTypes.TYPE.ETHEREUM_ADDRESS, value: '0x2' }, currency: { diff --git a/packages/payment-detection/test/erc20/proxy-contract.test.ts b/packages/payment-detection/test/erc20/proxy-contract.test.ts index 5d89bb7977..f814c0ae58 100644 --- a/packages/payment-detection/test/erc20/proxy-contract.test.ts +++ b/packages/payment-detection/test/erc20/proxy-contract.test.ts @@ -25,7 +25,7 @@ const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { }, extensions: { proxyContractErc20: { - supportedNetworks: ['mainnet', 'rinkeby'], + supportedNetworks: ['mainnet', 'rinkeby', 'goerli'], createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, @@ -160,7 +160,7 @@ describe('api/erc20/proxy-contract', () => { error: { code: PaymentTypes.BALANCE_ERROR_CODE.NETWORK_NOT_SUPPORTED, message: - 'Payment network WRONG not supported by pn-erc20-proxy-contract payment detection. Supported networks: mainnet, rinkeby', + 'Payment network WRONG not supported by pn-erc20-proxy-contract payment detection. Supported networks: mainnet, rinkeby, goerli', }, events: [], }); diff --git a/packages/payment-detection/test/erc777/mocks.ts b/packages/payment-detection/test/erc777/mocks.ts index 69565f307f..8cfdc6eb5c 100644 --- a/packages/payment-detection/test/erc777/mocks.ts +++ b/packages/payment-detection/test/erc777/mocks.ts @@ -76,7 +76,7 @@ const mockFlows = [ }, { transactionHash: '0xe472ca1b52751b058fbdaeaffebd98c0cc43b45aa31794b3eb06834ede19f7be', - blockNumber: '9945543', + blockNumber: 9945543, timestamp: '1641495767', sender: '0x9c040e2d6fd83a8b35069aa7154b69674961e0f7', flowRate: '0', diff --git a/packages/payment-detection/test/erc777/superfluid-retriever.test.ts b/packages/payment-detection/test/erc777/superfluid-retriever.test.ts index 9ea56eb5e9..fd482f2bc3 100644 --- a/packages/payment-detection/test/erc777/superfluid-retriever.test.ts +++ b/packages/payment-detection/test/erc777/superfluid-retriever.test.ts @@ -10,7 +10,7 @@ const graphql = mocked(GraphQLClient.prototype); describe('api/erc777/superfluid-info-retriever', () => { describe('on untagged requests', () => { - it('should get payment events from SuperFluid via subgraph with 1 request', async () => { + it('should get payment events from SuperFluid via subgraph with 1 request on Rinkeby', async () => { const paymentData = { reference: '0xbeefaccc470c7dbd54de69', txHash: '0xe472ca1b52751b058fbdaeaffebd98c0cc43b45aa31794b3eb06834ede19f7be', @@ -20,7 +20,7 @@ describe('api/erc777/superfluid-info-retriever', () => { salt: '0ee84db293a752c6', amount: '92592592592592000', requestId: '0188791633ff0ec72a7dbdefb886d2db6cccfa98287320839c2f173c7a4e3ce7e1', - block: 9945543, + block: '9945543', token: '0x745861aed1eee363b4aaa5f1994be40b1e05ff90', //fDAIx }; graphql.request.mockResolvedValue(mockSuperfluidSubgraph[0]); @@ -50,10 +50,51 @@ describe('api/erc777/superfluid-info-retriever', () => { expect(transferEvents[0].parameters?.txHash).toEqual(paymentData.txHash); expect(transferEvents[0].parameters?.block).toEqual(paymentData.block); }); + + it('should get payment events from SuperFluid via subgraph with 1 request on Goerli', async () => { + const paymentData = { + reference: '0xbeefaccc470c7dbd54de69', + txHash: '0xe472ca1b52751b058fbdaeaffebd98c0cc43b45aa31794b3eb06834ede19f7be', + from: '0x9c040e2d6fd83a8b35069aa7154b69674961e0f7', + to: '0x52e5bcfa46393894afcfe6cd98a6761fa692c594', + network: 'goerli', + salt: '0ee84db293a752c6', + amount: '92592592592592000', + requestId: '0188791633ff0ec72a7dbdefb886d2db6cccfa98287320839c2f173c7a4e3ce7e1', + block: '9945543', + token: '0x2bf02814ea0b2b155ed47b7cede18caa752940e6', //fDAIx + }; + graphql.request.mockResolvedValue(mockSuperfluidSubgraph[0]); + + const paymentReference = PaymentReferenceCalculator.calculate( + paymentData.requestId, + paymentData.salt, + paymentData.to, + ); + const subgraphReference = `0xbeefac${paymentReference}`; + expect(subgraphReference).toEqual(paymentData.reference); + + const graphRetriever = new SuperFluidInfoRetriever( + paymentReference, + paymentData.token, + paymentData.to, + PaymentTypes.EVENTS_NAMES.PAYMENT, + paymentData.network, + ); + const transferEvents = await graphRetriever.getTransferEvents(); + expect(transferEvents).toHaveLength(5); + expect(transferEvents[0].amount).toEqual(paymentData.amount); + expect(transferEvents[0].name).toEqual('payment'); + expect(transferEvents[0].parameters?.to).toEqual(paymentData.to); + expect(transferEvents[1].amount).toEqual('34722222222222000'); + expect(transferEvents[2].amount).toEqual('40509259259259000'); + expect(transferEvents[0].parameters?.txHash).toEqual(paymentData.txHash); + expect(transferEvents[0].parameters?.block).toEqual(paymentData.block); + }); }); describe('on 2 nested requests', () => { - it('should get payment event from SuperFluid via subgraph with 2 requests', async () => { + it('should get payment event from SuperFluid via subgraph with 2 requests on Rinkeby', async () => { const paymentData = { reference: '0xbeefac9474ad7670909da5', from: '0x9c040e2d6fd83a8b35069aa7154b69674961e0f7', @@ -64,8 +105,6 @@ describe('api/erc777/superfluid-info-retriever', () => { // = (1642693617 - 1642692777 = 840 sec) x (385802469135800 - 3858024691358 = 381944444444442 Wei DAIx / sec) requestId: '0288792633ff0ec72a7dbdefb886d2db6cccfa98287320839c2f273c7a4e3ce7e2', token: '0x745861aed1eee363b4aaa5f1994be40b1e05ff90', //fDAIx - block: 10024811, - txHash: '0x0fefa02d90be46eb51a82f02b7a787084c35a895bd833a7c9f0560e315bb4061', }; graphql.request.mockResolvedValue(mockSuperfluidSubgraph[1]); @@ -88,13 +127,46 @@ describe('api/erc777/superfluid-info-retriever', () => { expect(transferEvents[0].amount).toEqual(paymentData.amount); expect(transferEvents[0].name).toEqual('payment'); expect(transferEvents[0].parameters?.to).toEqual(paymentData.to); - expect(transferEvents[0].parameters?.txHash).toEqual(paymentData.txHash); - expect(transferEvents[0].parameters?.block).toEqual(paymentData.block); + }); + + it('should get payment event from SuperFluid via subgraph with 2 requests on Goerli', async () => { + const paymentData = { + reference: '0xbeefac9474ad7670909da5', + from: '0x9c040e2d6fd83a8b35069aa7154b69674961e0f7', + to: '0x52e5bcfa46393894afcfe6cd98a6761fa692c594', + network: 'goerli', + salt: '0ee84db293a752c6', + amount: '320833333333331260', + // = (1642693617 - 1642692777 = 840 sec) x (385802469135800 - 3858024691358 = 381944444444442 Wei DAIx / sec) + requestId: '0288792633ff0ec72a7dbdefb886d2db6cccfa98287320839c2f273c7a4e3ce7e2', + token: '0x2bf02814ea0b2b155ed47b7cede18caa752940e6', //fDAIx + }; + graphql.request.mockResolvedValue(mockSuperfluidSubgraph[1]); + + const paymentReference = PaymentReferenceCalculator.calculate( + paymentData.requestId, + paymentData.salt, + paymentData.to, + ); + const subgraphReference = `0xbeefac${paymentReference}`; + expect(subgraphReference).toEqual(paymentData.reference); + const graphRetriever = new SuperFluidInfoRetriever( + paymentReference, + paymentData.token, + paymentData.to, + PaymentTypes.EVENTS_NAMES.PAYMENT, + paymentData.network, + ); + const transferEvents = await graphRetriever.getTransferEvents(); + expect(transferEvents).toHaveLength(1); + expect(transferEvents[0].amount).toEqual(paymentData.amount); + expect(transferEvents[0].name).toEqual('payment'); + expect(transferEvents[0].parameters?.to).toEqual(paymentData.to); }); }); describe('on ongoing request', () => { - it('should get payment event from SuperFluid via subgraph with ongoing request', async () => { + it('should get payment event from SuperFluid via subgraph with ongoing request on Rinkeby', async () => { const paymentData = { reference: '0xbeefac0e87b43bf1e99c82', from: '0x165a26628ac843e97f657e648b004226fbb7f7c5', @@ -105,8 +177,6 @@ describe('api/erc777/superfluid-info-retriever', () => { requestId: '0688792633ff0ec72a7dbdefb886d2db6cccfa98287320839c2f273c7a4e3ce7e2', token: '0x0f1d7c55a2b133e000ea10eec03c774e0d6796e8', //fUSDCx timestamp: 1643041225, - block: 10047970, - txHash: '0xdb44f35aa1490d2ddc8bbe7b82e0e3a370f3bf171a55da7a8a5886996e9c468d', }; graphql.request.mockResolvedValue(mockSuperfluidSubgraph[2]); @@ -131,8 +201,43 @@ describe('api/erc777/superfluid-info-retriever', () => { expect(transferEvents[0].amount).toEqual(timestamp.toString()); expect(transferEvents[0].name).toEqual('payment'); expect(transferEvents[0].parameters?.to).toEqual(paymentData.to); - expect(transferEvents[0].parameters?.txHash).toEqual(paymentData.txHash); - expect(transferEvents[0].parameters?.block).toEqual(paymentData.block); + }); + + it('should get payment event from SuperFluid via subgraph with ongoing request on Goerli', async () => { + const paymentData = { + reference: '0xbeefac0e87b43bf1e99c82', + from: '0x165a26628ac843e97f657e648b004226fbb7f7c5', + to: '0xe7e6431f08db273d915b49888f0c67ef61802e05', + network: 'goerli', + salt: '0ee84db293a752c6', + amount: '1', + requestId: '0688792633ff0ec72a7dbdefb886d2db6cccfa98287320839c2f273c7a4e3ce7e2', + token: '0x2bf02814ea0b2b155ed47b7cede18caa752940e6', //fDaix + timestamp: 1643041225, + }; + graphql.request.mockResolvedValue(mockSuperfluidSubgraph[2]); + + const paymentReference = PaymentReferenceCalculator.calculate( + paymentData.requestId, + paymentData.salt, + paymentData.to, + ); + const subgraphReference = `0xbeefac${paymentReference}`; + expect(subgraphReference).toEqual(paymentData.reference); + const graphRetriever = new SuperFluidInfoRetriever( + paymentReference, + paymentData.token, + paymentData.to, + PaymentTypes.EVENTS_NAMES.PAYMENT, + paymentData.network, + ); + jest.spyOn(Date, 'now').mockImplementation(() => 1643126596704); + const transferEvents = await graphRetriever.getTransferEvents(); + const timestamp = Math.floor(Date.now() / 1000) - paymentData.timestamp; + expect(transferEvents).toHaveLength(1); + expect(transferEvents[0].amount).toEqual(timestamp.toString()); + expect(transferEvents[0].name).toEqual('payment'); + expect(transferEvents[0].parameters?.to).toEqual(paymentData.to); }); }); }); diff --git a/packages/payment-detection/test/eth/info-retriever.test.ts b/packages/payment-detection/test/eth/info-retriever.test.ts index 0a314c0c79..de5f76798b 100644 --- a/packages/payment-detection/test/eth/info-retriever.test.ts +++ b/packages/payment-detection/test/eth/info-retriever.test.ts @@ -46,11 +46,12 @@ describe('api/eth/info-retriever', () => { }); describe('Multichain', () => { - // TODO temporary disable xDAI, CELO and Sokol + // TODO temporary disable xDAI, CELO, Sokol, and Goerli // FIXME: API-based checks should run nightly and be mocked for CI [ 'mainnet', 'rinkeby', + // 'goerli', // 'xdai', // 'sokol', 'fuse', diff --git a/packages/payment-detection/test/eth/input-data.test.ts b/packages/payment-detection/test/eth/input-data.test.ts index 3be6bfd6db..054c189c16 100644 --- a/packages/payment-detection/test/eth/input-data.test.ts +++ b/packages/payment-detection/test/eth/input-data.test.ts @@ -23,7 +23,7 @@ const mockAdvancedLogic: AdvancedLogicTypes.IAdvancedLogic = { createAddPaymentAddressAction, createAddRefundAddressAction, createCreationAction, - supportedNetworks: ['mainnet', 'rinkeby'], + supportedNetworks: ['mainnet', 'rinkeby', 'goerli'], // inherited from declarative createAddPaymentInstructionAction, createAddRefundInstructionAction, @@ -160,7 +160,7 @@ describe('api/eth/input-data', () => { error: { code: PaymentTypes.BALANCE_ERROR_CODE.NETWORK_NOT_SUPPORTED, message: - /Payment network wrong not supported by ETH payment detection\. Supported networks: mainnet, rinkeby, private.*/, + /Payment network wrong not supported by ETH payment detection\. Supported networks: mainnet, rinkeby, goerli, private.*/, }, events: [], }); diff --git a/packages/payment-detection/test/provider.test.ts b/packages/payment-detection/test/provider.test.ts index 1a9fdaf5ff..1ffabb0b9d 100644 --- a/packages/payment-detection/test/provider.test.ts +++ b/packages/payment-detection/test/provider.test.ts @@ -14,13 +14,20 @@ describe('getDefaultProvider', () => { await expect(provider.getNetwork()).resolves.toMatchObject({ chainId: 1 }); }); - it('Can take a standard network', async () => { + it('Can take a standard network (Rinkeby)', async () => { const provider = getDefaultProvider('rinkeby'); expect(provider).toBeInstanceOf(providers.InfuraProvider); await expect(provider.getNetwork()).resolves.toMatchObject({ chainId: 4 }); }); + it('Can take a standard network (Goerli)', async () => { + const provider = getDefaultProvider('goerli'); + + expect(provider).toBeInstanceOf(providers.InfuraProvider); + await expect(provider.getNetwork()).resolves.toMatchObject({ chainId: 5 }); + }); + it('Can take a private network', async () => { const provider = getDefaultProvider('private') as providers.JsonRpcProvider; @@ -71,12 +78,16 @@ describe('getDefaultProvider', () => { ); }); - it('Can override the api key for a standard provider', async () => { - initPaymentDetectionApiKeys({ - infura: 'foo-bar', - }); + expect((getDefaultProvider('goerli') as providers.JsonRpcProvider).connection.url).toMatch( + /https:\/\/goerli\.infura.*/, + ); +}); - const provider = getDefaultProvider() as providers.InfuraProvider; - expect(provider.connection.url).toEqual('https://mainnet.infura.io/v3/foo-bar'); +it('Can override the api key for a standard provider', async () => { + initPaymentDetectionApiKeys({ + infura: 'foo-bar', }); + + const provider = getDefaultProvider() as providers.InfuraProvider; + expect(provider.connection.url).toEqual('https://mainnet.infura.io/v3/foo-bar'); }); diff --git a/packages/payment-processor/src/payment/utils.ts b/packages/payment-processor/src/payment/utils.ts index 355665d174..a0dc0b72df 100644 --- a/packages/payment-processor/src/payment/utils.ts +++ b/packages/payment-processor/src/payment/utils.ts @@ -30,7 +30,7 @@ export function getProvider(): providers.Web3Provider { /** * Utility to get a network provider, depending on the request's currency network. - * Will throw an error if the network isn't mainnet or rinkeby + * Will throw an error if the network isn't mainnet, rinkeby, or goerli * * @param request */ diff --git a/packages/payment-processor/test/payment/utils.test.ts b/packages/payment-processor/test/payment/utils.test.ts index 7f06a01d1e..16edf997d5 100644 --- a/packages/payment-processor/test/payment/utils.test.ts +++ b/packages/payment-processor/test/payment/utils.test.ts @@ -108,6 +108,15 @@ describe('getNetworkProvider', () => { expect(getNetworkProvider(request)).toBeInstanceOf(providers.Provider); }); + it('returns a provider for goerli', () => { + const request: any = { + currencyInfo: { + network: 'goerli', + }, + }; + expect(getNetworkProvider(request)).toBeInstanceOf(providers.Provider); + }); + it('fails for other network', () => { const request: any = { currencyInfo: { diff --git a/packages/smart-contracts/scripts-create2/compute-one-address.ts b/packages/smart-contracts/scripts-create2/compute-one-address.ts index 7e8c4809a7..f2803616ed 100644 --- a/packages/smart-contracts/scripts-create2/compute-one-address.ts +++ b/packages/smart-contracts/scripts-create2/compute-one-address.ts @@ -52,7 +52,7 @@ export const computeCreate2DeploymentAddressesFromList = async ( switch (contract) { case 'EthereumProxy': case 'EthereumFeeProxy': - case 'ETHConversionProxy': + case 'EthConversionProxy': case 'ERC20FeeProxy': case 'Erc20ConversionProxy': case 'ERC20EscrowToPay': diff --git a/packages/smart-contracts/scripts-create2/contract-setup/setupETHConversionProxy.ts b/packages/smart-contracts/scripts-create2/contract-setup/setupETHConversionProxy.ts index 28d1c974d9..b0c0cbfee8 100644 --- a/packages/smart-contracts/scripts-create2/contract-setup/setupETHConversionProxy.ts +++ b/packages/smart-contracts/scripts-create2/contract-setup/setupETHConversionProxy.ts @@ -8,7 +8,7 @@ import { updateChainlinkConversionPath, updatePaymentErc20FeeProxy } from './adm * @param contractAddress address of the BatchPayments Proxy * @param hre Hardhat runtime environment */ -export const setupEthConversionProxy = async ( +export const setupETHConversionProxy = async ( contractAddress: string, hre: HardhatRuntimeEnvironmentExtended, ): Promise => { diff --git a/packages/smart-contracts/scripts-create2/contract-setup/setups.ts b/packages/smart-contracts/scripts-create2/contract-setup/setups.ts index 88f85e030b..cda45affa2 100644 --- a/packages/smart-contracts/scripts-create2/contract-setup/setups.ts +++ b/packages/smart-contracts/scripts-create2/contract-setup/setups.ts @@ -1,143 +1,10 @@ import { HardhatRuntimeEnvironmentExtended } from '../types'; -import { erc20SwapConversionArtifact } from '../../src/lib'; -import { batchPaymentsArtifact } from '../../src/lib'; -import utils from '@requestnetwork/utils'; -import { - updateBatchPaymentFees, - updatePaymentErc20FeeProxy, - updatePaymentEthFeeProxy, - updateChainlinkConversionPath, - updateRequestSwapFees, - updateSwapRouter, -} from './adminTasks'; +import { setupETHConversionProxy } from './setupETHConversionProxy'; +import { setupBatchPayments } from './setupBatchPayments'; +import { setupERC20SwapToConversion } from './setupERC20SwapToConversion'; /** - * Updates the values of the batch fees of the BatchPayments contract, if needed - * @param contractAddress address of the BatchPayments Proxy - * @param hre Hardhat runtime environment - */ -const setupBatchPayments = async ( - contractAddress: string, - hre: HardhatRuntimeEnvironmentExtended, -): Promise => { - // Setup contract parameters - const batchPaymentContract = new hre.ethers.Contract( - contractAddress, - batchPaymentsArtifact.getContractAbi(), - ); - await Promise.all( - hre.config.xdeploy.networks.map(async (network) => { - let provider; - if (network === 'celo') { - provider = utils.getCeloProvider(); - } else { - provider = utils.getDefaultProvider(network); - } - const wallet = new hre.ethers.Wallet(hre.config.xdeploy.signer, provider); - const signer = wallet.connect(provider); - const batchPaymentConnected = await batchPaymentContract.connect(signer); - const adminNonce = await signer.getTransactionCount(); - const gasPrice = await provider.getGasPrice(); - - // start from the adminNonce, increase gasPrice if needed - await Promise.all([ - updateBatchPaymentFees(batchPaymentConnected, adminNonce, gasPrice.mul(2)), - updatePaymentErc20FeeProxy(batchPaymentConnected, network, adminNonce + 1, gasPrice.mul(2)), - updatePaymentEthFeeProxy(batchPaymentConnected, network, adminNonce + 2, gasPrice.mul(2)), - ]); - }), - ); - console.log('Setup for setupBatchPayment successful'); -}; - -/** - * Updates the values of the chainlinkConversionPath and swap router of the ERC20SwapToConversion contract, if needed - * @param contractAddress address of the ERC20SwapToConversion Proxy - * @param hre Hardhat runtime environment - */ -const setupERC20SwapToConversion = async ( - contractAddress: string, - hre: HardhatRuntimeEnvironmentExtended, -): Promise => { - // Setup contract parameters - const ERC20SwapToConversionContract = new hre.ethers.Contract( - contractAddress, - erc20SwapConversionArtifact.getContractAbi(), - ); - await Promise.all( - hre.config.xdeploy.networks.map(async (network) => { - let provider; - if (network === 'celo') { - provider = utils.getCeloProvider(); - } else { - provider = utils.getDefaultProvider(network); - } - const wallet = new hre.ethers.Wallet(hre.config.xdeploy.signer, provider); - const signer = wallet.connect(provider); - const ERC20SwapToConversionConnected = await ERC20SwapToConversionContract.connect(signer); - const adminNonce = await signer.getTransactionCount(); - const gasPrice = await provider.getGasPrice(); - - await Promise.all([ - updateChainlinkConversionPath( - ERC20SwapToConversionConnected, - network, - adminNonce, - gasPrice, - ), - updateSwapRouter(ERC20SwapToConversionConnected, network, adminNonce + 1, gasPrice), - updateRequestSwapFees(ERC20SwapToConversionConnected, adminNonce + 2, gasPrice), - ]); - }), - ); - console.log('Setup for ERC20SwapToConversion successfull'); -}; - -/** - * Updates the values of the EthConversionProxy contract, if needed - * @param contractAddress address of the EthConversion Proxy - * @param hre Hardhat runtime environment - */ -const setupEthConversionProxy = async ( - contractAddress: string, - hre: HardhatRuntimeEnvironmentExtended, -): Promise => { - // Setup contract parameters - const EthConversionProxyContract = new hre.ethers.Contract( - contractAddress, - batchPaymentsArtifact.getContractAbi(), - ); - await Promise.all( - hre.config.xdeploy.networks.map(async (network) => { - let provider; - if (network === 'celo') { - provider = utils.getCeloProvider(); - } else { - provider = utils.getDefaultProvider(network); - } - const wallet = new hre.ethers.Wallet(hre.config.xdeploy.signer, provider); - const signer = wallet.connect(provider); - const EthConversionProxyConnected = await EthConversionProxyContract.connect(signer); - const adminNonce = await signer.getTransactionCount(); - const gasPrice = await provider.getGasPrice(); - - // start from the adminNonce, increase gasPrice if needed - await Promise.all([ - updatePaymentErc20FeeProxy(EthConversionProxyConnected, network, adminNonce, gasPrice), - updateChainlinkConversionPath( - EthConversionProxyConnected, - network, - adminNonce + 1, - gasPrice, - ), - ]); - }), - ); - console.log('Setup for EthConversionProxy successful'); -}; - -/** - * Updates the values of either BatchPayments, EthConversionProxy, or ERC20SwapToConversion contract, if needed + * Updates the values of either BatchPayments, ETHConversionProxy, or ERC20SwapToConversion contract, if needed * @param contractAddress address of the proxy * @param hre Hardhat runtime environment * @param contractName name of the contract @@ -148,8 +15,8 @@ export const setupContract = async ( contractName: string, ): Promise => { switch (contractName) { - case 'EthConversionProxy': { - await setupEthConversionProxy(contractAddress, hre); + case 'ETHConversionProxy': { + await setupETHConversionProxy(contractAddress, hre); break; } case 'ERC20SwapToConversion': { diff --git a/packages/smart-contracts/scripts-create2/deploy.ts b/packages/smart-contracts/scripts-create2/deploy.ts index ec15644fac..23dbfc931b 100644 --- a/packages/smart-contracts/scripts-create2/deploy.ts +++ b/packages/smart-contracts/scripts-create2/deploy.ts @@ -53,7 +53,7 @@ export const deployWithCreate2FromList = async ( switch (contract) { case 'EthereumProxy': case 'EthereumFeeProxy': - case 'ETHConversionProxy': + case 'EthConversionProxy': case 'ERC20FeeProxy': case 'Erc20ConversionProxy': { const constructorArgs = getConstructorArgs(contract); diff --git a/packages/smart-contracts/scripts-create2/utils.ts b/packages/smart-contracts/scripts-create2/utils.ts index 421bba148c..6956b562ae 100644 --- a/packages/smart-contracts/scripts-create2/utils.ts +++ b/packages/smart-contracts/scripts-create2/utils.ts @@ -9,7 +9,7 @@ import * as artifacts from '../src/lib'; export const create2ContractDeploymentList = [ 'EthereumProxy', 'EthereumFeeProxy', - 'ETHConversionProxy', + 'EthConversionProxy', 'ERC20FeeProxy', 'Erc20ConversionProxy', 'ERC20SwapToConversion', @@ -39,7 +39,7 @@ export const getArtifact = (contract: string): artifacts.ContractArtifact { const NONCE_BATCH_4 = 10; @@ -170,7 +170,7 @@ export async function deployAllPaymentContracts( }); // Deploy ETH Conversion - const ethConversionResult = await deployETHConversionProxy( + const ethConversionResult = await deployEthConversionProxy( { ...args, chainlinkConversionPathAddress, @@ -265,12 +265,12 @@ export async function deployAllPaymentContracts( const ethConversionAdminNonce = NONCE_BATCH_5 + 3; await jumpToNonce(args, hre, ethConversionAdminNonce); - // 5.d ETHConversion.transferOwnership + // 5.d EthConversion.transferOwnership if (await nonceReady(ethConversionAdminNonce)) { if (ethConversionResultInstance) { if (!process.env.ADMIN_WALLET_ADDRESS) { throw new Error( - 'ADMIN_WALLET_ADDRESS missing, cannot addWhitelistAdmin on ETHConversion.', + 'ADMIN_WALLET_ADDRESS missing, cannot addWhitelistAdmin on EthConversion.', ); } if (args.simulate === false) { @@ -280,13 +280,13 @@ export async function deployAllPaymentContracts( await tx.wait(1); } else { console.log( - `[i] Simulating addWhitelistAdmin to ETHConversion at ${ethConversionResultInstance.address}`, + `[i] Simulating addWhitelistAdmin to EthConversion at ${ethConversionResultInstance.address}`, ); } } else { if (!ethConversionResultInstance) { console.warn( - `Warning: the ETHConversion contract instance is not ready for ETHConversion update, consider retrying.`, + `Warning: the EthConversion contract instance is not ready for EthConversion update, consider retrying.`, ); switchToSimulation(); } diff --git a/packages/smart-contracts/scripts/test-deploy_chainlink_contract.ts b/packages/smart-contracts/scripts/test-deploy_chainlink_contract.ts index 88fa62a254..099be843a4 100644 --- a/packages/smart-contracts/scripts/test-deploy_chainlink_contract.ts +++ b/packages/smart-contracts/scripts/test-deploy_chainlink_contract.ts @@ -1,7 +1,7 @@ import '@nomiclabs/hardhat-ethers'; import { CurrencyManager } from '@requestnetwork/currency'; import { HardhatRuntimeEnvironment } from 'hardhat/types'; -import { deployERC20ConversionProxy, deployETHConversionProxy } from './conversion-proxy'; +import { deployERC20ConversionProxy, deployEthConversionProxy } from './conversion-proxy'; import { deploySwapConversion } from './erc20-swap-to-conversion'; import { deployOne } from './deploy-one'; @@ -93,7 +93,7 @@ export default async function deploy( // EthConversion const ethConversionProxyAddress = ( - await deployETHConversionProxy( + await deployEthConversionProxy( { ...args, chainlinkConversionPathAddress: conversionPathInstance.address, diff --git a/packages/smart-contracts/src/contracts/interfaces/IERC20ConversionProxy.sol b/packages/smart-contracts/src/contracts/interfaces/IERC20ConversionProxy.sol index 946d170691..3a7b8b8f6a 100644 --- a/packages/smart-contracts/src/contracts/interfaces/IERC20ConversionProxy.sol +++ b/packages/smart-contracts/src/contracts/interfaces/IERC20ConversionProxy.sol @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IERC20ConversionProxy { diff --git a/packages/smart-contracts/src/lib/artifacts/ChainlinkConversionPath/index.ts b/packages/smart-contracts/src/lib/artifacts/ChainlinkConversionPath/index.ts index ee0761fde6..817dd671ee 100644 --- a/packages/smart-contracts/src/lib/artifacts/ChainlinkConversionPath/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/ChainlinkConversionPath/index.ts @@ -72,6 +72,10 @@ export const chainlinkConversionPath = new ContractArtifact( address: '0xd2777001fD7D89331D8E87eC439f78079179322b', creationBlockNumber: 7230322, }, + goerli: { + address: '0xd2777001fD7D89331D8E87eC439f78079179322b', + creationBlockNumber: 7230322, + }, + goerli: { + address: '0xEbe28A2B7336670Ba752bfEad4a121D2c4FF2464', + creationBlockNumber: 10461945, + }, + goerli: { + address: '0xEbe28A2B7336670Ba752bfEad4a121D2c4FF2464', + creationBlockNumber: 10461945, + }, matic: { address: '0x937Db37ffb67083242fbC6AdD472146bF10E01ec', creationBlockNumber: 30751595, diff --git a/packages/smart-contracts/src/lib/artifacts/ERC20SwapToPay/index.ts b/packages/smart-contracts/src/lib/artifacts/ERC20SwapToPay/index.ts index ad9a3ff5eb..51c346834f 100644 --- a/packages/smart-contracts/src/lib/artifacts/ERC20SwapToPay/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/ERC20SwapToPay/index.ts @@ -42,6 +42,10 @@ export const erc20SwapToPayArtifact = new ContractArtifact( address: '0x1B5077Ca852d39CDDeDaF45FAF1235841854420b', creationBlockNumber: 7408086, }, + goerli: { + address: '0x0Ef49176A87Adcc88bD5125126C6a6c23a28303C', + creationBlockNumber: 7109102, + }, bsc: { address: '0x75740D9b5cA3BCCb356CA7f0D0dB71aBE427a835', creationBlockNumber: 16165020, diff --git a/packages/smart-contracts/src/lib/artifacts/EthConversionProxy/index.ts b/packages/smart-contracts/src/lib/artifacts/EthConversionProxy/index.ts index 01ced6caa8..c9720fa6d9 100644 --- a/packages/smart-contracts/src/lib/artifacts/EthConversionProxy/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/EthConversionProxy/index.ts @@ -55,6 +55,10 @@ export const ethConversionArtifact = new ContractArtifact( address: '0x7Ebf48a26253810629C191b56C3212Fd0D211c26', creationBlockNumber: 10023415, }, + goerli: { + address: '0xED250D9219EB93098Bb67aEbc992963172B9c8DA', + creationBlockNumber: 7108896, + }, fantom: { address: '0x7Ebf48a26253810629C191b56C3212Fd0D211c26', creationBlockNumber: 28552915, diff --git a/packages/smart-contracts/src/lib/artifacts/EthereumFeeProxy/index.ts b/packages/smart-contracts/src/lib/artifacts/EthereumFeeProxy/index.ts index 06dd436767..48bfbf6b22 100644 --- a/packages/smart-contracts/src/lib/artifacts/EthereumFeeProxy/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/EthereumFeeProxy/index.ts @@ -66,6 +66,10 @@ export const ethereumFeeProxyArtifact = new ContractArtifact( address: '0xfCFBcfc4f5A421089e3Df45455F7f4985FE2D6a8', creationBlockNumber: 10307582, }, + goerli: { + address: '0xe11BF2fDA23bF0A98365e1A4c04A87C9339e8687', + creationBlockNumber: 7091386, + }, fantom: { address: '0xfCFBcfc4f5A421089e3Df45455F7f4985FE2D6a8', creationBlockNumber: 33495801, diff --git a/packages/smart-contracts/src/lib/artifacts/EthereumProxy/index.ts b/packages/smart-contracts/src/lib/artifacts/EthereumProxy/index.ts index 527cedbb78..2602944bd0 100644 --- a/packages/smart-contracts/src/lib/artifacts/EthereumProxy/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/EthereumProxy/index.ts @@ -136,6 +136,10 @@ export const ethereumProxyArtifact = new ContractArtifact( address: '0x322F0037d272E980984F89E94Aae43BD0FC065E6', creationBlockNumber: 10307566, }, + goerli: { + address: '0x171Ee0881407d4c0C11eA1a2FB7D5b4cdED71e6e', + creationBlockNumber: 7069045, + }, fantom: { address: '0x322F0037d272E980984F89E94Aae43BD0FC065E6', creationBlockNumber: 33496209,