From 049f7b76478630267841d0913fef97d2cd162d8c Mon Sep 17 00:00:00 2001 From: Marek Wolan Date: Fri, 30 Aug 2024 15:22:05 +0100 Subject: [PATCH 01/58] Update action masking to inlcude new actions --- docs/source/action_masking.rst | 118 ++++++++++++++++++++------------- 1 file changed, 73 insertions(+), 45 deletions(-) diff --git a/docs/source/action_masking.rst b/docs/source/action_masking.rst index 30b1376d..2b17075b 100644 --- a/docs/source/action_masking.rst +++ b/docs/source/action_masking.rst @@ -9,6 +9,8 @@ about which actions are invalid based on the current environment state. For inst software on a node that is turned off. Therefore, if an agent has a NODE_SOFTWARE_INSTALL in it's action map for that node, the action mask will show `0` in the corresponding entry. +*Note: just because an action is available in the action mask does not mean it will be successful when executed. It just means it's possible to try to execute the action at this time.* + Configuration ============= Action masking is supported for agents that use the `ProxyAgent` class (the class used for connecting to RL algorithms). @@ -23,95 +25,121 @@ The following logic is applied: +==========================================+=====================================================================+ | **DONOTHING** | Always Possible. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_SERVICE_SCAN** | Node is on. Service is running. | +| **NODE_SERVICE_SCAN** | Node is on. Service is running. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_SERVICE_STOP** | Node is on. Service is running. | +| **NODE_SERVICE_STOP** | Node is on. Service is running. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_SERVICE_START** | Node is on. Service is stopped. | +| **NODE_SERVICE_START** | Node is on. Service is stopped. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_SERVICE_PAUSE** | Node is on. Service is running. | +| **NODE_SERVICE_PAUSE** | Node is on. Service is running. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_SERVICE_RESUME** | Node is on. Service is paused. | +| **NODE_SERVICE_RESUME** | Node is on. Service is paused. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_SERVICE_RESTART** | Node is on. Service is running. | +| **NODE_SERVICE_RESTART** | Node is on. Service is running. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_SERVICE_DISABLE** | Node is on. | +| **NODE_SERVICE_DISABLE** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_SERVICE_ENABLE** | Node is on. Service is disabled. | +| **NODE_SERVICE_ENABLE** | Node is on. Service is disabled. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_SERVICE_FIX** | Node is on. Service is running. | +| **NODE_SERVICE_FIX** | Node is on. Service is running. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_APPLICATION_EXECUTE** | Node is on. | +| **NODE_APPLICATION_EXECUTE** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_APPLICATION_SCAN** | Node is on. Application is running. | +| **NODE_APPLICATION_SCAN** | Node is on. Application is running. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_APPLICATION_CLOSE** | Node is on. Application is running. | +| **NODE_APPLICATION_CLOSE** | Node is on. Application is running. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_APPLICATION_FIX** | Node is on. Application is running. | +| **NODE_APPLICATION_FIX** | Node is on. Application is running. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_APPLICATION_INSTALL** | Node is on. | +| **NODE_APPLICATION_INSTALL** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_APPLICATION_REMOVE** | Node is on. | +| **NODE_APPLICATION_REMOVE** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_FILE_SCAN** | Node is on. File exists. File not deleted. | +| **NODE_FILE_SCAN** | Node is on. File exists. File not deleted. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_FILE_CREATE** | Node is on. | +| **NODE_FILE_CREATE** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_FILE_CHECKHASH** | Node is on. File exists. File not deleted. | +| **NODE_FILE_CHECKHASH** | Node is on. File exists. File not deleted. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_FILE_DELETE** | Node is on. File exists. | +| **NODE_FILE_DELETE** | Node is on. File exists. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_FILE_REPAIR** | Node is on. File exists. File not deleted. | +| **NODE_FILE_REPAIR** | Node is on. File exists. File not deleted. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_FILE_RESTORE** | Node is on. File exists. File is deleted. | +| **NODE_FILE_RESTORE** | Node is on. File exists. File is deleted. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_FILE_CORRUPT** | Node is on. File exists. File not deleted. | +| **NODE_FILE_CORRUPT** | Node is on. File exists. File not deleted. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_FILE_ACCESS** | Node is on. File exists. File not deleted. | +| **NODE_FILE_ACCESS** | Node is on. File exists. File not deleted. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_FOLDER_CREATE** | Node is on. | +| **NODE_FOLDER_CREATE** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_FOLDER_SCAN** | Node is on. Folder exists. Folder not deleted. | +| **NODE_FOLDER_SCAN** | Node is on. Folder exists. Folder not deleted. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_FOLDER_CHECKHASH** | Node is on. Folder exists. Folder not deleted. | +| **NODE_FOLDER_CHECKHASH** | Node is on. Folder exists. Folder not deleted. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_FOLDER_REPAIR** | Node is on. Folder exists. Folder not deleted. | +| **NODE_FOLDER_REPAIR** | Node is on. Folder exists. Folder not deleted. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_FOLDER_RESTORE** | Node is on. Folder exists. Folder is deleted. | +| **NODE_FOLDER_RESTORE** | Node is on. Folder exists. Folder is deleted. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_OS_SCAN** | Node is on. | +| **NODE_OS_SCAN** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_NIC_ENABLE** | NIC is disabled. Node is on. | +| **HOST_NIC_ENABLE** | NIC is disabled. Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_NIC_DISABLE** | NIC is enabled. Node is on. | +| **HOST_NIC_DISABLE** | NIC is enabled. Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_SHUTDOWN** | Node is on. | +| **NODE_SHUTDOWN** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_STARTUP** | Node is off. | +| **NODE_STARTUP** | Node is off. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_RESET** | Node is on. | +| **NODE_RESET** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_NMAP_PING_SCAN** | Node is on. | +| **NODE_NMAP_PING_SCAN** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_NMAP_PORT_SCAN** | Node is on. | +| **NODE_NMAP_PORT_SCAN** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_HOST_NMAP_NETWORK_SERVICE_RECON** | Node is on. | +| **NODE_NMAP_NETWORK_SERVICE_RECON** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_ROUTER_PORT_ENABLE** | Router is on. | +| **NETWORK_PORT_ENABLE** | Node is on. Router is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_ROUTER_PORT_DISABLE** | Router is on. | +| **NETWORK_PORT_DISABLE** | Router is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_ROUTER_ACL_ADDRULE** | Router is on. | +| **ROUTER_ACL_ADDRULE** | Router is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_ROUTER_ACL_REMOVERULE** | Router is on. | +| **ROUTER_ACL_REMOVERULE** | Router is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_FIREWALL_PORT_ENABLE** | Firewall is on. | +| **FIREWALL_ACL_ADDRULE** | Firewall is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_FIREWALL_PORT_DISABLE** | Firewall is on. | +| **FIREWALL_ACL_REMOVERULE** | Firewall is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_FIREWALL_ACL_ADDRULE** | Firewall is on. | +| NODE_NMAP_PING_SCAN | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| **NODE_FIREWALL_ACL_REMOVERULE** | Firewall is on. | +| NODE_NMAP_PORT_SCAN | Node is on. | ++------------------------------------------+---------------------------------------------------------------------+ +| NODE_NMAP_NETWORK_SERVICE_RECON | Node is on. | ++------------------------------------------+---------------------------------------------------------------------+ +| CONFIGURE_DATABASE_CLIENT | Node is on. | ++------------------------------------------+---------------------------------------------------------------------+ +| CONFIGURE_RANSOMWARE_SCRIPT | Node is on. | ++------------------------------------------+---------------------------------------------------------------------+ +| CONFIGURE_DOSBOT | Node is on. | ++------------------------------------------+---------------------------------------------------------------------+ +| CONFIGURE_C2_BEACON | Node is on. | ++------------------------------------------+---------------------------------------------------------------------+ +| C2_SERVER_RANSOMWARE_LAUNCH | Node is on. | ++------------------------------------------+---------------------------------------------------------------------+ +| C2_SERVER_RANSOMWARE_CONFIGURE | Node is on. | ++------------------------------------------+---------------------------------------------------------------------+ +| C2_SERVER_TERMINAL_COMMAND | Node is on. | ++------------------------------------------+---------------------------------------------------------------------+ +| C2_SERVER_DATA_EXFILTRATE | Node is on. | ++------------------------------------------+---------------------------------------------------------------------+ +| NODE_ACCOUNTS_CHANGE_PASSWORD | Node is on. | ++------------------------------------------+---------------------------------------------------------------------+ +| SSH_TO_REMOTE | Node is on. | ++------------------------------------------+---------------------------------------------------------------------+ +| SESSIONS_REMOTE_LOGOFF | Node is on. | ++------------------------------------------+---------------------------------------------------------------------+ +| NODE_SEND_REMOTE_COMMAND | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ From 3a6e10b772f81b8eb8cae62af566a752f105bec7 Mon Sep 17 00:00:00 2001 From: Marek Wolan Date: Mon, 2 Sep 2024 07:46:03 +0000 Subject: [PATCH 02/58] Updated VERSION --- src/primaite/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/primaite/VERSION b/src/primaite/VERSION index 6d0e8e51..15a27998 100644 --- a/src/primaite/VERSION +++ b/src/primaite/VERSION @@ -1 +1 @@ -3.3.0-dev0 +3.3.0 From a6dd9b850bd1c65d3f28570f9ea7fee1afe26437 Mon Sep 17 00:00:00 2001 From: Defence Science and Technology Laboratory UK Date: Mon, 2 Sep 2024 09:53:06 +0000 Subject: [PATCH 03/58] Automated benchmark output commit for version 3.3.0 [skip ci] --- ...nd Bugfix Releases for Major Version 3.png | Bin 0 -> 82270 bytes ...nd Bugfix Releases for Major Version 3.png | Bin 0 -> 47362 bytes .../PrimAITE v3.3.0 Benchmark Report.md | 38 + .../PrimAITE v3.3.0 Benchmark Report.pdf | Bin 0 -> 210119 bytes .../PrimAITE v3.3.0 Learning Benchmark.png | Bin 0 -> 159498 bytes .../results/v3/v3.3.0/session_metadata/1.json | 1009 +++ .../results/v3/v3.3.0/session_metadata/2.json | 1009 +++ .../results/v3/v3.3.0/session_metadata/3.json | 1009 +++ .../results/v3/v3.3.0/session_metadata/4.json | 1009 +++ .../results/v3/v3.3.0/session_metadata/5.json | 1009 +++ .../v3/v3.3.0/v3.3.0_benchmark_metadata.json | 7445 +++++++++++++++++ 11 files changed, 12528 insertions(+) create mode 100644 benchmark/results/v3/v3.3.0/PrimAITE Learning Benchmark of Minor and Bugfix Releases for Major Version 3.png create mode 100644 benchmark/results/v3/v3.3.0/PrimAITE Performance of Minor and Bugfix Releases for Major Version 3.png create mode 100644 benchmark/results/v3/v3.3.0/PrimAITE v3.3.0 Benchmark Report.md create mode 100644 benchmark/results/v3/v3.3.0/PrimAITE v3.3.0 Benchmark Report.pdf create mode 100644 benchmark/results/v3/v3.3.0/PrimAITE v3.3.0 Learning Benchmark.png create mode 100644 benchmark/results/v3/v3.3.0/session_metadata/1.json create mode 100644 benchmark/results/v3/v3.3.0/session_metadata/2.json create mode 100644 benchmark/results/v3/v3.3.0/session_metadata/3.json create mode 100644 benchmark/results/v3/v3.3.0/session_metadata/4.json create mode 100644 benchmark/results/v3/v3.3.0/session_metadata/5.json create mode 100644 benchmark/results/v3/v3.3.0/v3.3.0_benchmark_metadata.json diff --git a/benchmark/results/v3/v3.3.0/PrimAITE Learning Benchmark of Minor and Bugfix Releases for Major Version 3.png b/benchmark/results/v3/v3.3.0/PrimAITE Learning Benchmark of Minor and Bugfix Releases for Major Version 3.png new file mode 100644 index 0000000000000000000000000000000000000000..123c97744a7bf3c8ad99e3f0b7cbeba70fc8f2ad GIT binary patch literal 82270 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 literal 0 HcmV?d00001 diff --git a/benchmark/results/v3/v3.3.0/PrimAITE Performance of Minor and Bugfix Releases for Major Version 3.png b/benchmark/results/v3/v3.3.0/PrimAITE Performance of Minor and Bugfix Releases for Major Version 3.png new file mode 100644 index 0000000000000000000000000000000000000000..43f661ea894cdb0e74d0e149ab1dad63d5be14a7 GIT binary patch literal 47362 zcmeFZWl&t(+BHfO9D)-hNF$9q2?TGP#$7^i4MBoCG%mqi0t9ym5Fi8%5Zo;|!Ge2m z`xg7W=e&F0s(bH`TXlb(s#VmgE_&)S9~ooJ4p&iNVFnt4-Fm7SrK z(XZ1tvT;Hs+RaRNk=c#-KkXJe_PF$qP42x78tuhf!x$1e7x;azUc)LJMfKn&b$A>8;IDDpe{^@2^IrlC) zk@Yp&(5{x`I9>Q^kgCQ*<=j_HuQt&Lj+E$V7r(J68M|cGw8PmSCUEn+5>E^w$sTrq@0eFG*eNAeW&n5{HUg{#tUFM{P6b?frJZO-va z#PVs^-yBd85=O2j&9Cg7Wu)?#VlKH~@yFPPl^q^`r)4-&-KE}|E~Vem@?m)Gb>H}& z6jJ6Qx!+$fnx|+RW9vJK^BN1)?Ol+Z`Lg%q@0i=GU$MA@diA95c=tQf+Bj%5`_~!& z+$LDf7jrv`+|ST1$2@&J>+Kmxk$B)TzI|Zz7HPVDch4zqFHd2EhOMOhR3ib9iEEnn zhgWZVA5A&!k{{*P#Vn$GY7jTf{(7;KNXFH7CPKu?{~;18{4t5Dqr8QUtTpHy$QdzQf;7l%~wuX<^`j@xcPBSFETkwP)Gw+`go1$ zcYlU6_oB4iqG6GP1wBP~O3>{<3N7}sV?AG)N(#=JI-@@1_|34wGg=*Xlfz-rjn1xo zds9rIhe-GBxVHr*Iy0u=U4!xIYFuv?B(JC8LKCFccGrXU^y!aVbYWo&yhYT&00~@@ z_YacM5a^QkzQ?Wis|q`JQ~iXTEYYmq?h~pzSx#ZCWl2rsZ6lczU@~WH?sh;S!lzgXEWWg{sS4AQQt| z7t3zTj78Z1T~xO?ntyqPdzj)a+>vAG=SITK<(AAjOF%FBlKzk3%slf z`BI`@I?_A15TwgeZN4dT>$OeBU8o%8Sb&+Q87MbKPdgnYA<@ZcxlLbwYr`;n?}G=6 zr_>>@pJotIk_u=?1rVVU)-t+!E z+s~Bs`$;0q#)r9fU`#)Lopt&16U$+Js1Xz)t3TrjMY@*ehKQs7Pwf5cS6)}O8uIA*ODW~D7wOeJbC#mnq2pBe6jGk%{tKLdT)76z@M)~Rm9JHk4&8da(CVVQ`h-4_}i zqC01tpqiBrEnB>10t;)f{+MnB!w`F%+ekgPgHoNhI<>6KiC2e$1e$PnvKyS!s+l&A z9+5$VX1pS$Z1vUzT|1`W_$h{6&zV}-tAPvO{ojk$-2!h{CEf4S7MPRENgOO8=Df)A zyb(cF<}DFBO)SfK4m?^$4>4`OhBKRbuXRu~uP2Is-{1`nOm0OsL^Pv`ii$$E=$_@V z;M5?=R=K)xn%yEQ+`kku zzHpfwp)ZIcL+gVM#lEn2vS&A6=~-)f5c6?2Cdqiqu}?J}#Q0<}!QpIQg>QU$!%MYc zUq!Ryt*{<()ojF%vWC)4ml`wJ(eE<3O$+Lh!iO=SJjOLrE z+XKgEZlbFvNxQO{%)#k|2~#w>V^NhzyT&3Xe;V=jC79Cv5;bd3C`4LE{IcpdH~$I) zdPtGP;P_q_GEQUy)P^7PQkcfeIi^-K4zJ{hy-3-1G&Mfb4;ehY!h6GI3YWuRH~3cS z%bMMP`bv(-i!|8K7u&RFh-d;LvH5 zf;ddbIE#;IXUClTs?oo2?8mpcbmYKj`$**@FzKH?fHTw-qYATbeKR{&rS4-kocioe zW=ON|p`OSzPQcvptW&$v4yW1hyAm*{nSa1=(d(o2&NCa2D+<)0up!%exUL9Z|p3Yf!7h>9mhRUWPFd$nj5# z`cBX5J$*iV#uK49O&7K@9DD8kPv_U<0@r2Chv9E=!Wb0Fb=zkyHN5f8;<-^_A>Zmt z!y7Q#;DT;}oGwdbKkjRlLuvKX6C;|slIi@1b~RKsU^KjR+r+9Y)lAx({_53Ehtybm z<0|OCpNLZSOkTY^?lF9Dr-S~E-i;>C##wHlLp15hl3;G_;tdBi3K4;6-n3r-M*Xv^ zLxr3@@WHkT$7mxY^KyU0ssCAc)7CA^@kT4E$IfT?{*Q= z>nrYHqRl8n-#qUIcR8vJdF3ocAOiZUP9&EcE}klHYC$ZyhwnshbG0be1u4(ss~ZkT z+1br41YxUP{TxKQ7ix9)t6m<@dL_HUm_Ces?)KX8p#FK|@{Ly22*Giqw{&$ad@pUP zmU_n=GP3HH=G>b|ZJQr2q8pwiV9#a|vyZ}*^d(C@OJraHIV`MUt^%dZ2lGx~THWOS z(!NNOd;kf4wm`<|$?ocV8pxbvd#&n0ByZy9oD!x<+7|Zy;_!V{jHSu$Pt?z*8?Sz7 z(WjenOKUw{V!09+Hf%1}n(qLz8^_pyzz#0V9ZO>r&y?1maaY!=pT#dQhQS2ma zpc<2IXky72y7{uN{!n2*1onQ{V6ED8!~HDqo)dJ!N$=`SmbtH8wWz^De(>DMkKg0< z(1~6Fw$`B3;s-9%6_l6qY#XYp7c@kAd0GW(TT9=xB(>uul{4CgX+ii?BD(sxqF+i4 znR3m#2|zSl>iOa<<{xgl-@p*f3wnGcyfq#oI2Mt^%KvCs&&Z(P31}{hZG^N;T^xx$ zcVGjpvKO1#@YyYB!HVdztB5?chSvMdAiTHW!e4{W}?iB7Br@ z--Rb~BuA>zOnl3adBabs&U2Y1l;Me$nWM$JE;3D&C6uKFvvWqA@l@)2$mVMewWg=B z-??>>`_x!9=R)z~>HGzGN7h-w6pus}b-bC3;$U8PToXc^4yBNMZ&+!{(ZD^it(z z8gVEdWW|gMLu0~>#fLN+cos3OPiEu!q|4+o@C0!`XW-e@;$}3*py6Gp zD(*{MQ0`C5W#4z(;)4yz9lYk@>b~j2$)~%%5q&sxreRUV6HB1gyR^yFToX0dK_&E~ zZ7w$+7{1eK^+ol4*tK71BF>i+VApSq#xTc_`FKg!Cow&^J#|mK8$bINh9G@ro744u z;E-1;*ezm7+tbL$_dGs|MA(*;*H=Jjd~aoh;a-L3o0|2Sfw)Osg1Vda3#w0Fd&4CU zQs~C2S}tw6u(tEiVl`_~N|Gp7=vHNR2F-(a4;H~mg98t~sR$k<1cD+_2P{l3r;a2Y zDNU_CSC}bygyiMC6Y{zdE~`;QPBf)vD0AQP_oOUzAZZEQ_33P=CF9U{&-6tY0#vo+ zg!qx=wUn~@pSPmxr)J)+vHoVA4g2#}-L$)yeTR-!87T~6w&AsIKxS1zDI9@-r$>iZ zwd|XkUNM}(lfm5QIZ8Caq%$sUQMw_>1j}=gl{~dGoxG5>s9EHYKN`5u(8>iIWKs2D zxZi_-8)zy6N5%Z@RDX&J1GEpL?B&~)?b^4yl~1ge?P(0yFA4io*vsXP7LXMc1|>BH z%+YaIs9W8Lxli2qW1*7GbsdZ&vB20$)#_384-nVu#7ByW*4f$K71wC*rqL#lb2lBZ zLxp^j8!>SQI8=XpOl0W`aV%TV%Bqt8Y1@foI2>Ic$+6>ZrpfOV@+I|UVcB)UZDE*B z^3Zk-jjiy+wOeJCR`X)j&n5eupbvj+(Q%F0d~4X#bkf^QJ}_^@*YM8T9JG!JmLeQ? z$>7)0L{R=&2($aqzv!w96Y%-nd@|8&o?SNac|Ax*H)>t#(ZMR=aZ1BwY1%Fy>b4PC zRE@wjmVLNy>3d2;lXVRr7#U20gMz^3CuY{aN90f-{?+|ztf*fZ2BzN4$p{iIhg z8rr%GDT6*L7<_#=4tWjb-p!^W39HveKMkLw?E2_>YDu$C+&M+FAAgZGopo`5NwSV5 zrM0T0u8sEFP-IPsI#N#Ew?D;*l0mr(68+B%+}Uv=H0?t1S~5!FIRTSkP%zn@*dpm4 zYo~#lO%<7qrD&+JieA^?6KTRFqxjuGG_?zg0x&jL)WrIC2Vdq&l5s=Bk^W+;Xw~ZpX$W^o=9_ zojueL#S@BzJ4_lg0p7C0eqqyZxfp<1mEjz)WRGjfi8npXqEvlGk4U$30r@5Zv`mi7 zc5%5jC~DmnTmB1Hl1+CqecHqP{p64CZ+0kan|Fi5>wI;z5yR$y1`!*o>J!|>(=##A z{2B~!8E87dcNI`M_bPutmw^TXbV54XR2 zDTQ^1630ImBX$u`31_h-;Dd2I?SN$H>%7~+Eu^kvVJ{D(9{aTev$1g-U`wqM?TjG& zMJ63p{bRXV3-{ByfH9FbcW>A=3HD16;=Beh#M4%*7A~^TOD>Y`(72r_ChkmFpk^Kq zJ=sdD1LmeQAq=p|GV_eGG{fCY;xP!$0it9-vRS?1UW#ML7W-@`m*Wn8T@JTx`jO)H zf%f%_l3ZbYZG0GvF;8%!_5GC= z11Cl2QB4$L9Esi`l{+DbCZpJVA@8Ox(m4#C)b&FP9yWB+g6qK2;k;pKm~+@WdtobH zHDOWwx+N}uoLMnsPgLh-=m`i?i1wcF9efL$v#aL`&6B&dS=n zvJsB|+Whj1yRRvg7{s%k;2U`}L)khYA;T{(CJ@58ew$3xhfh_neIsS|GS6neGA_$- z+Mm7#NAa9bswJOXtKWo*4qDDjbDxi;nx(Hc2Pxx!c+*_IRABNWkU=C~Sg{%ip(CoT zWiVmY+C;Gm#9uR1^CXBzQ1Gc^p_lO@jRP_%At);wJ-%><-Z)hn8QnmImJ%B}a znIG3WPt++o3nPi8!k?vMWR>cy*4Myx!&)8b~(X zM1CGjXHX(1sn-6k5AQ|l=rmbYe~19L`QAQKjG4yiW4S^0gUO^u{RKnhlwT8$F8Po&{M1^@!PYK8I+{{XPPY7 z2PuiQeR6TPg^~==btw95hQ^@ZI?n+73!p^;sy=EYz!FX}y^1V|&oZ4j zc#;n#`m8Aq=I71jI>ZHGa3t?g_y{`gYzj5ZE$Jd6&!Qk+Hl40oz+cAVs;Ry_hxfH; z1VXh^Tm^qWL=Bas`&Dgkkg=*+Wvgg8m-xd0au(a%p$L^B1w&z%PB>e3A4 zP|VgUZfCq`pyla4{4TI=_FVDdu9Wj>m|8rYY&^5*x0*3c-h%!J_Mo`SK=W?Dng z)gS}r&%Ad7>DI3Lb5AqA%G&lC2)fBijuU4P;a-WQ2snAXodzo3LlO#aQG~vq1yY-Rio;NcaFCb-ynKLj460e^ZIwY>K{8p;t}B_ zf*b6+0I9OJu9Amrp|j6?IZbU}mGLS0388Yz>yqUg*?+XXIP*1RE&L#ql3Ts>mP|bO z#>_>}b$gEbFScgFMY+D}nF`&k6YR)plw_pDiz&;0rcX~!5KAzuAn%^ni4A=wap zS7g*(JiHV1b*mB;9T%1>+0}deMQw*R#RVfdvdXl!)VlC`rf-6I8sb{6_(N6s`w88- z@Nv~gY~HuS))4W6b3^tt|Kxjfh>8~bqm7k+y?ov8x*m(kPp=all#~~>L0Fx79w-Ue z6qsf5ums6GX1Z>2+o(nchMjEn^RhE+XaX=eZV?ye<=m%?C;g{*H={tT0*p;HW+mwu zEfl0r_N!zeX04Z_t!(0EUC_9~@rN{A2h~^B<71+RF2QpxtO&+fg1!88MWyqE%^2@& zDQAw1B}0l}@=Sy{%UU#UJn2Vbp%CjW*nzo6+_1@4eZMjMb-+e=jLEgF1IJ=y36gyO zI`82^(bBs!HGhVw{Ek1!yOTV|SCJsRBCKmAfzCL9#Y>fJ-$V*)PeF1zSvb0Y_d?9I zPtFbAnXcra;lAbQ;p>kX=V-e_W?GAldplP+MI=sAeSb_4a#*70%@S`E8B8t!9$ zJisQpRl~5=Tdgh!?=AH9NXwnf7?6t&6P=}64M(VshCLf&{mH^1RDqAiAIwnr1hnon zW;>Vs`n-p`K>fnXpg}yJ*4~^Wo=#8g8BL#Ot-yw60Bez3xJsNn@6833F!3_wB`k>} ziT%EYEF;mn@1C5WO|}v>$!O@!pES9_jrX85v3ho0|2VgGpcu|pak0GlZ0Zi7PMjjS zP-A5>PC(LYeK?`O=YoW{4I=6l$w*yL#)kfAWw_s8E@@3q)v4Wn2RT}AAyd2H@ETlD zzIlWfgH~rqS&pWbBzD{n*ZUGm^R+Ch^IDC@Gqp89G=2nJoECH3-fml#E@1x|+63+c zj;k-U(DD|kX@6p^?1PL^VV`6vBJi`&il$cWRke5_>SNRhZ;hnMb4DM+$l3q-YK2zvfm zhul^E*%HNt`a*9k(jGpeeqQa|;n}AP?AiUmeZcPlh~XbMGWvk{QP4sTLv z>HKx@Vq2*5ia0vY7f~m3&`5dmHH&=eY;|<^nSMzjx}x_EAcsck!G-v1ON2E5=)TrV zzMkPPMw=53Gy+n}4S$@k<1~*HA{!>fS79TO=#lK<~w0jp+&0Lnv>jr#orAq7*u@cbnL z+xuTf=#%gGG-k=3(LWHQh>E6MAM!qB$=jCM5GL#S2+26wO!FJ9Qokb+^;=I--{N%_ z5YaoTmbvgA4Hda^7N#FIC=kIXBST3UfXqxmc*BI3wtDJwC>OwtuaNSJ*nR{M>3z1J zctIzhE?M`@>4Ne)GBvoW^$M>qo?be%P*XKW0q=~@c+sbq;g!PTe;&VzDZjdXheakx1th$Z z;T;^3B!8y(M2&hcl^w2jTnIhyVOWP#SS9L^7_*~AFEK`qLi8PNFYT!1Z)UeQ*c6?k zl!`)>zkrg3%Y6Z{JpE4v8tAA*z}M2CrKF8VoQ)o+i;f*>9KK z@G*q5aa_t;^X9rVMJb>Ef#XQ`R7+h{10^LEcI%s&$ z1Djp~a3*2NC`Mlbsq{2x<~gcwC4kP57*1K;DYTW&40C>G=` zLxIK0Y1oDCvvf-h_MZb({w(DH+`^@QEkT(NYT>%!+0^@?Gzu+RyPsFvFS~JzXU{+o zUB-_;7-ahUkqDPf6JkPfwu2*%{8p`9ZwVdg$jNJ44Yx@8$OH*rhJGpbee-lLg<*9!5@M61f?H2xV?MU>z=E$;3QR zRwL5X-f^?|?Vjr=y=l6=<#c$jXC|9M*3^23*TLPsOjXC6(lMi)Y&x*2Dw`l6^~F_& z2zeJEsvodvR-Rm9Tz1q zpG&Tz4?O3yFT3;txUqiiyh1ij?*uvw$*OagBhMU5+9+kMVo3#`);qzoLk?nZxgVB* zA_7;vyf-5G1`?SyobiOJjxwOTZYc&A>^M@F;bywiLowOIaqESA_;WkjUNoar>&JpF zVZ{vDeuj4#P%oIAjGpf(1IW=%UB;HEC$s=qDxdTLoSJA>DcBDr!tcOlHg%m$4W>A}KRJ-Q01br_foXX5c);iJtr zBxj8{OKcGx8+tk2sP=ibdCdJk0X>5>Kqwy@^!@y7v*=oWyT`(sxrFmU%l=1l<_+gN zXYG$|?xZjEusZ}H2CCs_qv)6p``wCIyJJYi9Qr>(6|Yw&U@aQl>m>-slh^l*5k%9`&-@*~n#cD3b$JG#24q_}bO;J45Jo>q>n4`Zsrne;&jQ3G zBVN7bomswI++G}V*dHFJF_iLbKCEy82DQC{$P%yJ*E97u;77<1U=}-ykxCxi&Z7t{ zp93=EljWwLiV-@R=}mu}!rY6Gl<=@f+YneRu_M1~4^WyO``S$&!T{PUgyExID zygQ<3K0a}J6a{oGL+F<(rjP;PRuVFLx=u}iU?o2L!w=2sX$znY?uexafPdO#eaT_5={+t5V*TAQ=>(v?N7!bOKeV zyS^_wK#SpMS1zfvQcP79;NR9BsU`T@jgmH$ z0*;7OiEO3)b@91-mSgus--h|6G;9y{M*PP7*nh0M&b7bF}!t(qzUvYl- zAv-jv_OpW_KduAy4O>@zVWtcd9%D*5y!qT0lla z^~98%T+2gBukBJb&WE2iKNcJolMuq$wU(HUt-oAEFheCj^+Q;mPiy9zykkvYV8|Vm zyVutWOdK*CjMS;qed&ZdZ97X*jk>;HN-^0VR{p*ZawBB6AuBn*bm$imrdjQG9pEAd z@A^YQIo8C#bpKgc;6+)8TSS}Va#o@hYLDN4^0LtoI3A*;9PIo+6w%Mm51IYdE6EDU z-rriY-Z!_v3TrCgTkp+cibsfxr+ar=HDzFNQIJ142epH&x*~-o z9%AjxsYEqePuy>f=b{++9KXFi-{jv21Y~aKsY#I=Ee(e1<|>YgS+!&-m2Y}X)5gVk zyNi_04AWBScGNr@tk<+lZ+FC=XPUkS%~o5#>B=H)e3)%}kow{F;nQ+)BY^VB22nw< zgWLeb#!W_^X|%gyxwy;ois3G)Vj80tM>JF8MvmKD_W78kWEC1;_|M@dg{!Ahw3Ewb zb#xDUPr(KHCv8Q8`hgXOQ~*O>QvUxpBSmOw9^%l3C@I zX8o}!MI#1bVbs-rm-$k1aG@>1+tYASFw2XYbd6tW3#B$}g+!dTS@kc1{+-=J@kR~c zVeOZn#OwhTjP$-FtL z;QJM_=O8seAMxi$2`e z91*UrW-LK*hv)?mxfd&g>h(c1K5`xt>0STQX+au_L$v+6GmOEm0Vih%$MI6yA=%IQG7>o`-bhR10IWsq`Se=6MX z+X-gAe1cqs1u%rP?oEvs|1_hlw9UqA5AZ#E19%6*bdXO9$1eVf*s+Pgdu)^_=(EYUMmYH39m*-e65~FF z#=7OTrjf!@zg-?j-g+M&l`H)v!{Ye@=OoLKMPh;HeZIUR;e2fR;(*x**T8$7<~(C&QZP`R>~@iW2pL7r<%I zi;_}0jt`{j!qFT^Y449REK%I%@(DGkO7@m%@VRSY_D{qY<|muE_T71yDG2_bBOLn~ z-HHSH(KUw7eR|-@Mu8JhT#5}`Q@yg)D!)m|S7L|lY`FjYIZ)UBosDO0--i*0`wfz8 zFn6%(`TmhGANooSQg6srCw|9!e(C=Obw>Sg!V*N{b=_uXTD`mBM~c6PP>SQrXsXuT z##!}z1|rldmQG5RD81pkA$kN=QE>i5{s--t{v^ju}oxWfD&1NQ>jS|?zd(yAB(egbAvFkaZ z2e9S;25Uw$00e01KF8%h?(6a8m--`A)t^a@^>1w9FT7?;5soNn|1c`>zuyNMI${Dq z9gz(s?2vy)pMN27^Z*jq;Achgk0vf3?~Y_UGNAsYE&5NVo&=u|#^y!8ME|1+?+9RU z%8dzu)c+ptU*m2;SAlQsQ@#F6w)>wZM5F+Cs%W9_`#<5SC156h&T%RL+0B0@4F+Y? z0PvLh!Mf2u;3=p*FcZ(4(CN5;z*EY=&6Z;(H%HF@^!51ii4T}b%bmpTKbmMS0FMmTgAo^jyHEz^OXeE_Jm5YQ zA_NMGhf<6fCjfR2pFomUK)0tEep646H18U`)Kj-0=<8lq zEQ*K-&+8HAvUfl`Sb7oXT{FVR4i@XIh-eyqp6;EaNEpv7uqT&)xY_@?qQT>4*P5;^CL z-+)M7GRdNcYehYIziP%fZI3NgfpfRAiR%506$zGraQ6+_WVplV_T(K2bMl$YG%Ney zYuxgCzZSB45&>QkF|k4q!I~CAu*FTxbOKx-SS?rd8sWbjBD5UsG5~?eUI^@kYWFGPbLDx^9QZg1roUH7nm zgx&j-2=k*oya^*Rv3;%zx7sBmlSVuiha=J%aMlw1Wn})vNZw-bX1#IcBpC=cl3M=z zmEMsYov$=VZigZ>%WCy5zj{>m=AK75n%~B5RKMqnr{N#1H3fGoV|FCHYoGbuqp;^q*17W@D2~GpK|| zD;kE-Xk!x#d_jXA=7@du9O7#5C@{sqtuk6ylx^1mdhPxe9rBm4&OT00@(kL#!2Y6` z2%Z&~x16t98zIVV>1^D;X9Q^PmcDuT_}%(Y>NGJS!Q!E|*2|58grU(vCaXRER*Nsu z-0s_Q$4fL3T)poM8JroE&Zm&+*|K;^#WFM_Ed9b}=K1?UhojDt` zuIw`Ju;;>FuIk)hbi5G7f*nmPY+g)@AQaW)sQBUBqgi_nCyo0nr<(&>Hx6dkr#P{% z?o8yB06JrsW*8y`Itep;=KB%JI}+$9hCi|MuPCSfXci@ZT1CwQuO?@|!!fPKzz9Vn zK_&R5J=|hRniN<33N2T9N=;<1xOI}O8x4i$LJv`Ao7o6K_t2)_pvx6m#?}Q=3|%hR zN0QVwI?1yL9z z@ThaE@4J=GJXKZO9x=@OBR_G7SYALJf5HN-H%{0ddYoGjt1fA)98J#&Z#f0L=(O?u zKFVirTTZ^59_G0j;8G}*0oXSIkHGrJ_zXp)`Gtu{2WlKBli0ur({?zqpfe%|0_xfu z=|EV!7n17%`j3Kvr6#IFGi?7aZ{he-x8yHV5xZ1xqg|CitBk&`N{G=w(%`Uw`~r^j zk+vOal>c1mqFe&8_tHrKxB4Qf`^mpb} z0@;u%E#;$65K(c&|H)e%-ezK>gV#9Nh08BmT*5?K(8mPuk8FVnQ(j)&2`qB?8a;m` zVgi* zU5fw;OouY&u5(7(o@>?QNg`V+8xOl0X&i0A>2%V+0Xtw2ENRe^v_E)wnhRz1gb z!kY13S`6p)3GHJV1+2yg;&b&f!qeohZ2ppg!VWZG7iO>~Gx3hrX$&0{lC;;rRVOU$J!|&xhhEEc= zV|>6;3bz3KJzz{O{uqEDy@jN+By5!+U`S@jV z`_jpAZ*QItEnhyZmk(uil#vl?0%`^Dnc`amE`St3k^FQ-15!tiOeZvHMqtut4_@HE z`|P2ICNAM$c!qd1a>dE|n)EK>@%FI~ z*L>(IUeLlp?CwLq^oN!dq|Z+8{A4740%oHMM{%o^xFwB@DSQWQAK|z)qA>t!OVA0f zU4z~7kK<*fwcyPYY3~}l`J7_?#uor|DYsW#ON4GE-cBrUbh6=^BUXX%hy2#>C0?+L z0t;CG8hK^z>^q3KW!EK@(QH9;gSPeM8G1Y2=aUC7ubvq;cO-GOZTp;N`@2MO@k%}Oh}n)`wXZ;_0QBMaBV1b%>0*zjm{C*c#+~pXU_K=2ohpz zEP_QJ*21@^Z(5!mR2Q8zsx-;13sWAnMk>LvwkY9JEaFE4RVysdT}rRkPLeqH76>9N zvrjr3mLD2W^W}FD_GSnod{7TW%?I*R$EZPnf-iacHU(x&C2qI7051g1MpMXVi}T#R?ZbVc9X+rx|08$eo|! zL;aAXAjJS(;#do9ZoK7mQR3t-bjy*?K)`xV9JKp0N9lXKUy7I6$c}hJJ&1%?r-$xBa1P6O6o;}z1?u-9f3>f@V_Yl4*YLMA2DWxRu;7{s%o79m) zz-#aVh2{)W?{7LIZlFhcuaT^M0Xlf3sF%o##yad{OK#CQCB#BtTeubjzhooX-~xkx zlC`1;EEuU@2x{EZ)Bi5lf0ygO*7g5(7#}t3`1qynH#awF!Xnv2rwS1eJZlgRowd(4ko=!tni~(^`bR;2h>P{NM8uSz#Z|k zj%(VFu(1KlAFPw#{m}r+-##)DJfL00B6b2?N&_x6_oz1RWo#|vq5#~OSt#;+JTw4E zJ~_WP3YoP3qjP23978+Ndhv?c0yq*2{_rE?(n zrSmx-x-`Xl1%m=9uH&u1pNay6E61M~jAy^)W4bm!RGsHJSEo>wL}6292?!#!-H9RR z26C*Of%ajcu$un*EX+THu**Pn8-TL=dpuY^JZ)uz@@VhlP#tm zTYkBT$}FEs z12R=kyKaoSEAR19*RReS0?gBg;rj3BciOq8c{xFmF9p_~?;Ifjo}Eg%ni64+V|r_5 z6cdTW&j3!c@rd3gv($iH`H(YyVr2H7cqc+pG+vRG900;v@%5O_DdB}2TuQ!Q{X z)Qo`09HN8<{Yt7Ca(F+0RU0N#os9nJ|7OiL^@;oa>21?dXmr&iS)c|?>!B$a*T!=n zf87XFst-~5Wny-o>)T<_k)6gfJn?kF>iRV%_SI#+>AdG+(K)Q`lCswB?kxvY(pjVG zl2?shIfAm&!ssTVS~f!f0#M-rD+$klR5#}vmk*tnHybE&A4?%(9omu(a%Zl>yf^>> z7>m&w@d{4op00i@su_T0y!lEJqMIG^YmmRz($MUUfDnQY+dbtrfTfELUdsOh{W>}# z^;>d*Zcc+{ss#z_N-t$tpb^C962s)|gLA=;P7@5wap?g%!*g2}}wLMWB zV&)|Z-Gv3k(8~`QacNH4`^dd~%MU@rPl{HD7n`;wn*|wBKWfDlVOo(u}WbW z|ChY#$rOC3AP=YF&h^?kh0$?8ZocA^KL>=WLfyux?^oZuOE0|k0-2~{p`!=4`CZDJc64;SKe?#w&0xvEi={Hl=YYUnEsTJy ztfQ(ec;))R5CekK<%25Wu;*Uv`Kf;A+E8(KOAG*aAS9Mg4UxxIKwI+1mbabYEY$YP z50=07*zrN#*=~s9{kh*7aJr6;SK8vZ&|}4s-}Giq;AAuegI^F@z2-o8_=wY)n?&ti z^(DJh=+au5alGgW0IGDwPsLq$Ocw9O_;G};eApNHB=VvJdZdJu>P5_k+zU|Po{}$K z(WSD0DdQq;aAq_8t639MPB;3t#ZOT{m+o&a6+V>1zwDf3BV2v82PaozcYp7+NHIP} zeRZ%FFWjX7KknIjACIs$BKYU|Ze2ccR&c>+TCoZf$+n#1MK1_uoq%&t4&~iJTR08olJ-B(|!ehs08@6f+r^;v6D;*WkZ{M z_KRYG*emv>6UqU|K_CFZ-4sPSgu2R^l#dmc`n!sJXH(nL?6;(oJh=02!6`;9C%IH) zzUu&3vnObDt`G@0txCAn5wc@1Qg^n*uh|Nk_RCWxa2RJS(bHYIG{n;QPa~t?h32#6 zHp@P&I)~exx+6cY|KL8~do$*PmmjbsjviPtSODb+FmuCiSZm9&P9zN*hO4wmu4aUCW~z zZwn&x0fdh$SH&#g6TNimmc0u!iGqu}w}6McbEB{XI^fih5u8Fdi&n%4pr|i{`^NIs(k&sN5Y< zu2R4IZwaz8n$U0N#J;?P1B-7MCaSnt)}k9Jy05=Jfx>;?e7IDMnD34!+I$;8C9RAt zZ3Lc_H28k&yQ2?A#R)Z;-N9YJMC2|+-I+#HL6p*hwa!omR2behl+)aZuE(aZuoN5d z6ns{urueqLh@LT1W5$O{QAg30j<0Wjb0D9h&TLgx9(VKHN4n*VJu$i^-4|Jl0-Szi zsFf4K9A+#a2sPeZl3+Ca##v+Wf7pBPps2R2efV^fL?nm-2?|P*j6{(vN=6h^a!^n} z5Ri<7Za_ehjDR4}D9Jz&5Xm%11{DMak(?yw+|b?MKJA@(=T3e1z5aeR_0{*sRNb2L zPF+u*z4qE`J?mM|+UF8IUxm!>*2P>fka^L<56)~wk81mV)_|eY)PU9}S8m&Uu(8af zyLPG8xZ>P}M&Aqj^ zldSfMB?{!!qi2>(-c&=>`|0Y6-22}GnG&q@+ghaHv2c5vW_K;%EL61j;cF(MrC;ohH3BBBdbaPWn-?e=<<{aw{KHnJ9-B+r zXooAh`c6Jhm}NlKv}{~y%B+TrN^eQ~?`%lG%0G!$`f_dG!?y(wDRB-Q=2a!3j>bp! z5oLVi9s8tra$~|3G46Q>$-05(Ku1DV?}#W3z3QWwB31|bYz0Ph-8*%`Y+oO7hxgt? z-bJTR4+jE*Yhh zVBM3g)TP9gsVaKLA_@?+=KZFc0r@1OTW3V`j)_A)p1o1Fq81}>+Q3BiwTVN!e%V%$gY$7wk z7^-?A&kV!|7xVT5v4axBi(5a95 z&S<&Un84QW9R$$yRK&ffzVyIh`>-M}ZbjXL;d7==D&viP_28DDWpGQGZF4pZ1 zVkl9B#1Fss;l1z!izm-#u!8vIf%#_`14lTVa+(6%f5suEDubV0?!b<&m($#7Idv`# zbuN)9WNA<6DRgd$EJu*^POfdcpSRk#U5BWs`;bi*=QnHCtUwG*$r;I|0D4oiVZuXg z=B}|s6hyhm=H=B-W3TB2Wlr6w}Asd)|msP6zFg;aI~A zD-{t2@HSPV2Qr+VgERH^CJoO=<41*L#u?LZMxEq`tE|{@ktq@HBVMP2Qbbi25H^2- zp#Qz<@UFZ=6~5TZDDty|$*zowj$N%+xqErC=!|*o$N;>&=AoH1k{hK&BByXRdos;w z@?_zPssaBR7NeOorJFv-kAs}Os$L}wq~o{lc+>&uhug?8d)B8=6HDp}E$J!Y^cjZq z=oKb=H-~8o5NSk|CWLP4z>%h8MWO35h*JfFqV8kY007_|qF7y;v_B@}P7UtNqXt)o zN&h&a4MlihgvLqFawzYdZVFe-7__Nc30E99vt5Tkq|QLxuk!*9;Dkz3Y4(r1w;Cm` z9>-5{zWzhhsGpdpM~Mj6)OeIPBFMEA9AP$}93N5~Cv`+HD^qMfn;#hko6yDNZe9c# zt=gR-u>XP6HCA55x6c!DTq(`FmO(Pbv|6B2P6snCN7kQ}E^>GmaW%o)v?3h70sRUgAZN0Q{Z$6l z2djC!XmxL;>&QTjE4`ZM$42nHvHB*zGkzC%4|_>P>5zYxvO!J@qIi8s9_=cIOj&rg zG9^fSFeE!J@>~sFJPx}f_lWNj2uZLUwN||R%WHq`!>9W$Q!|tw&Bq~GOZ^`Q$N4m~ zUhMN(HBWW4?R~i)h=lqD@M4Jd{i>W!FG#t{dfKbewh3b(y2?|?1@JcaS*f-CaJ&^D zJG0FLo-W;1(hzxVJm%~bjx>QQis#Yf6rm##E<$gKYr12!C~)`H@*udQN^i~&++CWn zSb2PA8OnrK2Dk5jZ#jmd=WM_>b0hwdRDmgdo<`IVJQpa`M_2RSdMq-)7Y71GY%+F!h-6=#h-a>UW_xIHDXr<<&fMkg$*Im9mBF)HH!fcW z0||3cU+^Y3zPuLUq>fG>=``FD3H6FdVhbDRt-t9=MSmZxz|<3R+B5| zU9~Y-I&i_}YgTXKLoAm4&NcqvO&x`IgOZ1o`u9at2apa@;iy%=a}(z7gQ@^p5FA*S zzkij2-D;EL05$-mh~bwqXFbMr1(Um|P$@f9@vNJw5kR-!@CplV^SggwvFEh88AAzq zyW^BLw7@7)T1|TD-@JX;RfmXg#gv@-Ari-=tth|+eUxz_@9VP!dao4v>&}DAY|Q zWmj1Nf8%S=ry~C!iX+3Xg}l>tt53|F1U?dIA{;+%i~sOzV(r)#9|~5b2bL9QNoNZ0 z1^VRa=+ej>?X<)4A)jhD!9{9P?wa#Mp5*nsLLVx;RjSc-!~7y4_nFL#tR+*x}5g+8ET zv${)msMat;yyiK{aw|6u&mn;0Mnuw9E1_4WC>~Z_%!MCWC^e+Ua)%FuHZvK=Ui^M) z>T5Z=t=uTZon0f)#T6Rk{8DnJPE8xqS=Jl){t^xvOwu)yqxs>AhpHwjrNjuny`?Nsuv?g89SA zIZw;Urqq`f3uY4dmsN)j+}&s;?>wrI!Ai0m^YQcV!)^BZJ~TH;fwTGxErE1mLbe>x z1jxS8`}4huXY4lbI1IZoB#CEVgyRg)wf)zU-6wz0y0a|-=rjs0%X|SQwU@PPc*EVO z0L&fyc_f3BtE$E{Ih{Uii+9~su#y<>uralpPy$cqtn>b2dza#&q$*zlZgZpqG;oW{ zTo$r_5Ko@x0++UWEi~H533soa5-%7EqfR%t$KnqAAV_-Wo8B~mf-o#j+UEiQ32Nj` zQ9ki70Q!bt_7Vq&JV2Yh)tUz#^`JdRA(sRz^-pf72i@3{XB77T-VPIdlx_X;jNp7N z#T?kIqt{2DoxjS1rjxC$TO_?R+W{!F^7fw0Jeqt+eq1Dg3SD0hG6EOsG@ltoC(9Aw+3^SQ1vVx0;MpO0iihmcVc`zB01 zo%+b2IDyd%Ix7dax^9q1dOAITsKIn78jB6&Chj&kp-#FsxdB|5H4ZJX011PzvTHwS z!;)APJ%qr9akp%G>=Px-cUqZL!j)R3m1uP}fc#5@jA@1SL+}Nu&u`qY?Ic)%tNjE3 z?I`MK$@=8<9=P@8_W>?Yd_RtQ{X{jZ$mu3NLH?MmmCW@HmT)q)$TwRLa#Ljf*IEp4 zJ*S;x;k}vIcAo|n;p)vKp6{i0$^3P*-%(;GI+Cg33qG?93#xmO!%lC>j*`OSg3%Rv9~sZ)){7iIsVP4v(73>rN}1#2o0eCr6l-l zh#tNmc4<`n+j8@|(8|ssi$Q-ctigeq?(7erOguYn8U(?;6usMVZvn<6ayz#nNnVswwd9Kh z6|7%$w2R)2pGv<(9N4l(4Dl`)0ATS|8i1#S!abmxCO0NTB3$ ztykaGCQM?$sz=lXP>8FSZQl?%1mk8ou5rhlYN*_Q{AkD}!-pO37cZ)-pN?F7`dG^# zKchYU)v+&?<;Dlk?A-jLvr2kiM<`F}?Y*RV`L(+smoKTrseyt#>0<}$dyw+((_@0+ zAO$qf>7ZcJM1$nbMArPdK2>%LIGDYYv-A83ZRohll2*P5O zAZ@6pm-k!~&}-G;X<-JAIhX1*0SOJzk_EtG`GaM_o_E}uhG_Lua%}67|7hmI)#@@w z(G7+14oW$x5*?7>Sx-7y!j+Fry)VZ0bv5KYlbXGKe}RijCl(B$mb+|FYF=AK*BNARc?P+ZRW99R9k-CajR-Aj3VOk}i+p1mAoTBF`CEo&F9Z>-h< zXn$RRV~ViDq{8bPHWGaqzBToW!tZkzgma$C)d>7{YxlnWbjo298utJpB1hDA44>&` zG@?~J@|ZfE>BaX>6M)q~7lK93Tol08U#aFFxd)`gwGX1gF*yPTQ{wO{24=sT22WQ|^ zyh=ZgJvf7GXgXHn*hYTYeyictJ`oMuk~YCAN2yYTEu;E|23wFfF*B_JD8Eix`~cGhTI zlOww2s~c`DDux+pN!|SUQkZhIW*9_v)yj^9719ddo7%crHDSIiiVt};VOE4C?!%g> zFHp5*71;aBNj%%P>ko5j9zJGQ*6TD7Se3b4o51|PRfKCg)8U9exir7jbg-UN%>z}* zVYQ;nM@I@xN|!8u?74q0+@i{TCfnd0CM5{sFG&kPVkziPvHk=sMXi;7Kg?1bT&0xS z2atx;$E`=%prRlP)lFByYLxkIoa@Te3;;ZeX}Jd(pii0_PA)9}c-(PpVc%~r@j}yS z5e_-8ZE|o;XtS_;SHU#CO_LRJ>FqNpsw}=WqlN6 z1GvCFQfU~$K*H~(RQ@4VN6du1501_Srzu-nqSwgp8iQoTqZIV)7rJ0mlF|Xm3MeJs zgJk6}YGw5dPFBxUL~Foto0wR#=^Q~Vq*9kfPWCkS4)s4ZQkS65QD%Aa@X3p-r$1!| zga=#mJSlH^dLa0e+ACWI8Co`$mrq93gCg|~iqR)+4GnL|`LW544KCrUmQZ<9J4s90eRwOZS7CjoTW5r#(``2; zw$~ZzQp`D;Y_3hzF75DLUGMOv(P2ujQ|yMw)XnkGs^v3+%TQmA=Hn1|x|+$hUCP{( zR@p5-hNatDc>BrGh*Am>^x4hn78W`sT zLdc>CG9{hsH*q!v39|x3gPx zvH3AmJT>E3$v2+O0M?-U1DTZAeB7*QsW|W|Cg{hyMCW@su9iG8Mqaivbc$7)5?MV#{4eA&E+b61^4w$g_wNvX)q<>kSWnzF6xBpOML{-RzWv+I5X_eLNn}Lkb?s*bdr5zdR=6e z(sB+gJ^@mwc!aRVHwlSZP6(_n=`v{)?>Z(>dJb~Pxc;o|rr{tnhse;jZZz-~iu3D2 zcHLNr!{u=qbtks$%e@;Axx_Y;5_5LxWqEXFj!jFulmF>@3ojLZ^ZPY!c1Fav>|7E$ z78kq_?}qBO*WfdP-QKnFcDfjPmEB51y)2bhk+ z^D(=bn!!c+C9h38Xwuu>b8+**FQKLR<{IU56n{TsQs%UUwQ*k2Wm>{3^0M}eKgjz-^6kYvk-k-=ZH3>ZR@jCZeHtB+Y*co?jergH>ihemJ}ctF(YQin{Ik+v^%s5SIRj?-m)=vkNIp}YI<#;%LJ%agqF6l@n- z(=wJ#iE*EFLY_AwJXr56<_l~U=ZYg**VaXjYWnhAA)mH*(c&^}xX*T3Btfoz?*J8p zv!^$LTpBt?asxCHtcJqhhAPdrhACmN&98`aOi~j z22^C%?&0m(V^cK08(-u-=fU2ya&doK@Kowa>1%IJQ>?O6QB5a9BItbbg?v)dJr z%I_U_Rnk~HFSVt(CeNGzHvAoXm*-vad}ThV=Ut|p%9$WzyKY}(xl$_Ty?zK`S$nsR zh9gq`ToD|_o(t7B=Ah1Qh6|o2+9G1XK1XlZKg{!h%FFI^dT(LySyx+cs!hDR^XdL8 zcNCM+UY#K=+xX`IrrNSENfs|hp-j|I$*@WY$0U7D_y8Kh(?F+6A3g)m8M~ywMFZB> z+k00eN}|H-j+tlU!7JE}0$uBMt?mg65qiGuP?N*uK81yep|?p?-Ur$K=Ao2 zGP`UE^=g(E*^E=4yIo6@&Z$)24nL>kty1KxZbdb;>EZ=6L1uLPrW%rE&sDH)&*dB0 zL+^?+hihpp4@95GJ%lY9d^P`A+Y8hgr7=!wP9-8^NCIm!oLs^bUx3f>~Xg<BwQ@rV&Tt0u~aY&vVqWHhC^L<^ni>i{o}4y7Uu~* z6CZM;_eMwzD&$O%-s@FxHdD7^_kuV^4lh1@zMBGglte8QYaok0z$&}(auQ$YTB?12 zoQ#eGpXTa?gdxB+D)H#b4^EmS*Q+alibb;AQPi1AyeOBeb%bMdo=My zFwKdWjv>EY>(MUuvuKWm8xFik5Uc4pE(u9gKP4nNVs<8GFgr(+g~8IY5tPwYKM)h2 zlGq<_U8@=obx&ZkvkQ%HE48HP^m9aTr;kDt5b_$tl0r~kQBydJe_VyU46*D5AultS zE$ zT$p%$ACfVy+uh7*4~u_;M>MXoi=Y!KrxGgRO(@^!T)l&{DfiiQ%|UJY*p?${2}VDe zE-c=rislIGeM=>RW~o58D#M}ZFYQ6cai-G(H>lfX)1tLHE@Gc)y>hB6e`ipyq^t2v zuG}VP6?Ed+6+=uX9HZX;aG$T39xh~FdDL()9rehnJvB-P*rxfj*nqAxB%_KF7Z=a^ zVRko5Cr&o2$K9YMW#@60O2L)YnRf?cWeqOb$a*2%RBb)TNZI5~l**v%{4X;YE7g{dRnl!$AySJuBuPeD!QQqvRAh-c>!|xJL)O}OUctM`Z&CKTGijo(t zk5NUJ?HE~1A4lg^Bgn;3`|!n%(I$lTjtF*xO0ZRqdu2Z&lo$w;pZvC?tSfIF$@>O= zY1XqOp5B7>z+79?r+#ZfV*4I_I{UW$^0dB-!Girn_MIasYhxysDF>4WmFl%>*E@0* zK0oSKw0SU48vy-*EhV<6OdqV!ex>JdXP@OBr*wbf+dLVNK2(9HUkORClQ&k6-_O*x zCEy>w%Ra+P^nL#(#Sf?PS!M+}9o{)lNy0|g*{2$2eqmG)duqq^Y~a`<{9&6Cyks9n z@JXvvM}q8~Yw?G4&zkG$6)|E*QWO;*$FyLh6p2v>{1+v6?hdNLAycBd^!-+;OfkeJI zp;B}i4~^a1tnuGk3m$F*JrTe8oF@v({0XwUE~)FqhV} zg*uDfy8}3zclSaB1FIYnFwm<1pR&aNIji*DxUt6l?GJ94WxBQAyvI~< zoEIl#ftArgL!+y{CC;w8MaO}u5|D@<-e%?n5qU+zd!5;<6 zspiQ~sT3RRvYzek?)|M*cAVO!=-+{|;Dt&&-^XZlc&uRqw>q(sSf|+j6Z1T4IZ+4x zD)$}4snJ9OBpRA)q2jPXrapY*(5;oCBVF?~KU{FF+}z^&6FC;WEv|=#SB8_nRgMR- zoNY=a6G7k05XWAIf}%IVhJ3$G$w2#-F$TQ!qx3sgx^Mt39@RWml!k?kv^sDc7np#uf5&nY2lpU<$DAr8{(5>E+3Wxlk8fP=O5t`Gv= zJZCcWC<%0&hR#ah$)q{PMrSM^WmlxPNCwu7@bWGeW+kymzT;&XlID?!| z32|ES(TKrk?MXQafhukq;7LsP-}l~ukLKM_)1n-d@OoKKJcuaVEgQmM8>eDX$9jO- zli#tQ&eA#>*W9nbVIfGkZmb}6mD0^#SgXe9C!l6W@ftH)CU#$beNap z-uJBTgkSk9-1yPre9oUL)=6n^vKDayJ>7L|WvX1y>l#y^TQV#D>C3N8*kdTf)yDbG zSp#rICO57{@`dD+91GjPEgXptBm$Pod8x@RcaZ3`nsXZ)MxIc4kM0Y zb9TXUm!Hv0JRMJD){eF|jGF04gF5=}i$Gxh*%DUkk(aHj&7TKXorBJ~+)FCnv$%k* zUKw9?z^Y}o2{;cslytc&f$R(T7lF3X_r`%GwP+3Mwq< z2p!_vy^Is7go}fa1D<8Cp0QR9oHH%Dm1b~jFXh0!rD zBd4K`Z9Nhi5sp#8{gM9DQJ?pf2av&NB$GWX3mAiC<6MhRft=qlF!HmtgC$$-TaU?R zt)oew*_7cXot(eKj3B`@*RJSgeFz43aFh#9)~xmj8tu#(&vd=^hmJXeit(XURAeq} z5?dPQl^OO(dCoPHx6=>+himj&5W5*3>Uy>0x=I)jnaqrBoS5k1=Hld3@i#BI1VRZ< ze7i+-@JOe*(8`74BvAhKksp20411l(h4Z(H591PbEPdrJBiBVPrwj-_1AdqI>50l# z8F;Oww~u0zlUWXVJuV1YMjq3*SJ{asp?kf&r(poy-xyP&J_XP{c|w2F1rS%xaI=hs zf<%Av_EKUKjpcXQy{!#9m{`E8Fs7r_ao@kok+#4r2z6yC0EYl?sXyeubjW+o0`qX| z%`|(>IdzYvK7m8#KDsP}u5ml;oD)PyZ3`O+pItR#H2E}ptb&wOhoT_yrCRTZ#aEwn ze~5W^^+3{Ik6`(3g8i-Or+k22@#=eP_eNqt^fG^Vf@U4o_J$B3AIv})LZch&4 zjX@}iPY}Dtx=r?QYirI4+g>fS+cqE_Lh)CpeNRt_G2*-@ct4o+L3yyg$Teb^rH?xE%}OIJFA;M6sz9 z9-5;l-rnmq7ZQkNno@WBcse$HuJW6@nE$1t2^qS<+}KViH##ccA6jAXW5N zzaHl1mb`dL$S-ifG^6OSkSV0wc?PgS#}O>%`LMT!P`GHP5@e7QF1!FYQ?oP4G6LLe zMg21oMB6Hh^Gm}eeK*oe7ryhEVc0n9ci&45lK*BcEPyf-7y@4`IdeW_-S(d0D*=PN z_|fs9=z<|11?WH-fLjfPYHB?&dVfbzw!Kc@oEEclRPY=cRAIjkzAV~zy^j%aX|hFL zeJE~JO;u=2Tbyj-fYF=R?|hf9%UujT0LloojqfYi<(U&(PWs`dpeU_W>ds#P7nJvG zUG$B5C1fp#3fg`-ZV|c}w*BAL_yd`0JKt|U4TfER_)P!dA5_y8wkGy3L~%ARbe`(~ za`1UDtJMuSg!U8y+NAH@t;!VtRrstiS|#0QAE&tNmUQbOCEpwwh35|en*X9v7*uG zAfNZqG@oV6{EezF-5DIdm}c9rBrHcfFmuMa%G8aJ)Kz#?-mP^> zZq%y}lO}91)TNoW&~GeUInBntr;E*v!3p77sytPn{vHnw7Oi@hN`2>XNBqyNVZnkL zd6N+Aa`v9j?B&)Z&QBsfdvA!b^oj&c!j41lUoQMl(H^j%mMflJx#JwIalDBRgPWm5 z?`RXJ+_6JGlX*s6s0M+q0@p+3uZ$`FPki{Hn&-FV4T8vXjQ1TrnWcGsdgPWl{`6JR z;ktkZ7vA3ju<~f~E9sj6tbQGO-Y}U1$ACw31)Hfem`%E1Sw$SvBH>QKr6AM~X6|!} zbR3U(e8choU$d5Y2tFLxynYU#6<^mKJ!{NJ&r0Pm)kouH8 zj*0x@;z1FB_(f#$X#!ye_+|a-39zevyPNIBA~k#kx|nek?b35pW7yGHTTr~@7Af9C2-fkR$e4x zObFu?oi1AgE+i(k^n|gw4pGpv!+&wT!=GNr0Q8aC_X1nY79hRCo_ev{mQ;Yun^DVk z1>Ds{jAKU&uM<6eAejTbIdo%sG=PNC^TBDtQK@v)egOED{GS~c5CF0yliTb&ww6&3 zmeo-L*Ygu9lQ*7#;Ce#$%SkxIk1$)jhPStg+eIDoM@9YzQv+TkbX}$J>H^fYT6m+# zb68=fzr66UVvY0B@Af@+pXBRC#3Og2;%-!%B>nao+F&hJuT0~dd_xpWjBR|ZIeLDF z8?Ka`28FRs-%rI0S1RE=?RhTJ5O?|*-oX8!g%qD565=0Hdn4Pa_$HM`ZD?JD&F`IY zFz6-}(eOKgWdBp3|MkyG=*jY^BAe6pe zDX3fVG@*qm2Nh!gfqz3?hV}=7M7AxE0T4?{NwH|&;mrJpz0 zU!T9b!%;oSYGt!e@}F1KLHUr{LuKABYE7vKPwqKcm6_1v8?L z=HD(>&tMjfMWdVlp#>m3ke9_VZPLx<>jt4JsJRtnVUu_5$Z|YNL?0CW8zOdttYx^a zuf(Uocl%4C-Y!m4-T!l;_iwR-#bhl%HlAhvNWFWjFJ&d$1XNmo55s>TtWo!ISK4>| z@V7zB)aSS9;-uHKH^)90DBb+f5PFyqForJBmD8%RdM{8K$WNkbTuQ{#l>gFGup1!Q z@flUU9PrSO=XCi2a{s$Ug_Huc?c0Yk4HtiHPkvAE&4YNFi>#lHDic4x7e4&Rep%!& z$MLYsvS=@hdLM)06JoQk-n%Rs<*;49DW*tPbaV2~%o*E2U+fqY-}QIV?@%xEO-*(f zspg3$Z8Vk~$8;QDz~`0c8#R|5j%lB&BO@;eYP@HKY2YR!lCNQz2e@6-OqUbt$z53w z&B;|Jwh*uOp5tA9wP%@!O5H!K40pYKGjL_?&MQ>E`|396P^}@k@)WDJ z-=gbYQ!&swRMXdEW!9|9H=6ikIfXvyzB>OYbYf%5r;RU5>ugR7O}hB`Vpb9_XXKZ1 zDCdt_>kse+Qg!*haaL!j^)^|x!7XD&1ycoI_qUnZ+19Qbqfx*28f;2MUuv(}_h@y~ zk!9^>Y_%Urj9)Qu9IBCKm9_ShP%{n-XL)w2-N3r3nu-Z%e2=5)B|ksG&pah`D^@O& z$H?Gm0#9u{Oaz_5M7CZEWsZHsu*1$MR)2;P!$APl!&7(t8w&`fj_!`$QCIWaR_d=t z(`h|pk$$$^ND4Gz9gySWU}}BDBAtSHKzjpl-j;~o z>-*#=KsQ(I&TSP^#halu@~8`28{<;%z>tpWLpQ3C@dA`s`&jJ#^I1fLmCRziXCra` zBHq|#jJlckcmY$TYBgPGHBx+eB{cJXyjJSk=MmRP_rt0~4i-osI*7?4_LQ_Ydqu%{bXauAidIHZeQnB$Y3(%r0 zWfTd3LJN2>M-9`rM9bgN9Z|*hTk8T%~BoQ6hq&-_(UNmgnphhG-!3rNSN*%%ThYJAT|L}VLErTW zkDdgr0>9mExMV9Dk22HStP;0gK18p@H$EKJNMi{dWgR>Zr|j^yL*N@1BGAKuQ;vY$ z_(k2)5-2W*%m@LJf@)eAzsS3DYvY`Tjz)~WCWhnIXPHkD+hnb4$YWtrP1hd4```Gj z;h$V`=kJd_MeYbOBfc*%eGt&z)Q8z1*$rkHjS8Qs;1 z&y$xcBD1QX*=e#V#o4J}cE+>Qj%BMiW#gesivppjiI>s_V@FMIe0=xJ6iVX~C z!jAHtW@ctCvRjh^;J)<0+@L0?&QC;|Lowcn1JH{vLL`3ur5qwthloVC2#xV55yw=U zgAokC*GPSm}u|y;2$MyD_x(mo#WWK=!}Vpz7nBy6uPVvPT1cx8?j?JNIz= z_r#p`X~M$t;p1XJ7KKP#$$~+ejp?b-^%)GAoUl7s&#z7!Xz-{j9@YYiCMzDD#Khsf z%lWTNFJ0ohcD_qoY+~w~edDe}OKQn$&F6tT^inSfcfWm-3}#Yt6`~Qm0Y@*I+|-{^ zFHk>?kG=*6_~j3~{9}MW3_9xkVU{Y|gvBHN-Pf;A+x)Fem!76|uQQ0ClPh8dOkwki zl*{)Xjv(00s;;{{M}3(q&kh64;YU=bm^R4vAvMLUR*_G&e^lIr>wAnaZ)_4RUW?~$ z6HWkuQ{#>PN0)()V?=lvxz7<2B`Kv46i{e3YJ~EFoE-jf88osgxlN@C(RU!o2ax7a z9W4|>!u9FUNas5J0QzBQ4(cEiWLiT>tlc*3?U~6WFR!4Rq!`55a~1My{bE@+CNg2^nC*h8m-6f`ZoTX~WGHBbP-D2By3QtN zep}m@|F4Lhi_`2vN+83r7x~i`0)I*DvE{d@k~Qw?(kni|vD@99wHNW})|Xu?3FmNG zDsyOD)yDrhDY*BZUPMk?3{01aLLfr?iWDq+k7akF1+OZiuVUZi9a!o&{w%xuRS@ui zJ-I_Fylqr*RLPD&iT7JM>5=|WVxdS!bfr^`s%kh&>s-l8-gcBJ_tIya_7BCY28-n- z#=lR!eM-e%F!#1k*ekl93IGp`m(;7zeFGvWnicZn;$YVfrjJgNcFmBZ`RfdZQ%Tqp z5VR@F_X;^-vO2-izx)xRL2fbwR%<-1^jZG_JA4%3Bp|i8{2Uz8P=SZMY8jM z>MqzXdR@I;EpV>AE()aX0bS|nU@N(u}7aE^WxdW$C%su9dcViV_V?WvOI}?8C~P=37fXa&D=IU z1$xaFE>ETv!dNi3JY+)#BzGUzn&_>cg3%^-OlMFG^4#2Wr8iQ2dib(^>VKzZ`lB~4 zwfh*07Tpxenm0M^7TyZ}4!)7LYB!fS_{yz5{RaiV0 zS9d5KRVO|fSqRh?7V~`}YZ{<&d$y2Rz;6!K4~=3Abm1%yIsy=0rK`E==MG7^2=?+m z{Z%@Sct^*R9h-hv+v4R-s!)FKu-@IOPZv)TslNX`6q|&^=Ej5d7C#hcsXs@K;pZ~& z*WTy}|K488puG&+%=<6j)}9y1c_JK;^Q0CK$=V#IlO`mApo<3M(-U|t4pT=zZRGmW z(}&yOqEFEN5135)ZVY5Ve!Jg3Y79Xxfz;6}JgqdARTJ|CKp)kmxO<|}1o20~fhJHW z$M`g80k2>Ac_P6bG;>oY{W~(z0mco zx)k=F84s?QzAxAdU6Vu2Anrw8d`Ogwfje3)IKg?K=PQIn9TAye%WoAw1Km91$xs?({`kmA$+8f_BrJd)0pyv zVE!98rq>?H0;)l%pXn4SZ$Z2n*wC5iw&Ub-N;5Um90s8DYE4#_;M1KHptw=XuL6Je zMQPW1F=CGcA%sn?WFYJpb|suE-e0f{;Bi@aGqu2&nmih0N;L8 zSbK54)H;iRu2{+C|)MLPrWTI8u<8g(;lC^x(e^93!g z=fCMU581rK$CN13Zu%IAi+YP{8R5Paw)TgeBPY%#|JHNOr-b0wsXxQMj9_GJ5xlt| zP0bDhVoVTszdRT37YAgZhXst)h53BmAO46+iQ<%(R{_|EOf@cL0Yn};n}{p0v+HIs zx3)eaaEFR#uz@_1!Te7)514hRz8ddTRxz5~j<4f%00e4CUPfVW2E4(hbD>2jhF07A(2U^*!}n7bNAfyO#N5NU93v>yWp=)W?ioH?aRA1 zxmE?ecF@v`?Shw-`Of$j11_gXC`KcUa54KEKh3uhjHalDwk95OK{o;k<77}&O)R|v zP7j3a##>C=1>s*S7Q?v4_A49~LDz|w6lK8MX;jF)EjMGatX*z34~p{n+->V+*ynt& zz4wq1N3(@(Jew4_Rol`EH%j1kut@_kR_J#i+il8di|a&Txc618u%nsaTYO&l?35eP z_2kyD5$9hefPV*|9pTUTixrGc6Y+K>Pvn;lpr)4z1=cGsShi)Rz`6VldJ9-~R%(e) z@-;!mEye4@ijgz%y+_a!exr|W0O0?I_*D_TSJG4sqzDBMwf(j@lZcaI{*+u0bs0qn ziG1Fdy~XmPOOe*>p(EY8NJVw;<#I}*gtO95%iGWn;I72no7CU~Py{3%jur1;0L>gf z@vhNtDw*WbAZ#R7$QvELXdb^`7zf<^} z5KzaRd^MeoI%{#Cjzz@poMZyawRWnb&zNd!FDLh_!_nlU-66vd>ms6022Rs~r_LTN#{BR=-|ErmOW3(xdq1hqLKTv$1E3xAh9Q(*eEh682{fE3% zMYedo5@S8PUM^77eqSH704^bTXm4iZDlqK5rQ z3?)PFh%ZgJfO6%WWEHtKaUM6GEc1urYZ^l%pYP5MT1&kwxdqZP==5|~NI8by#uNq> z(f|8sM6`ojBAL3B<;oYUU+lch?PuqAfk^+Zz0P4(qV_w!cN%w=Mcz4E35JuYA4p%c zU45|UIeDiKt7z7xrw@x9aGrPhC10DLsGrSH{P0@`*cn1d177Rz1abdSSnwYu3I3zA zBL7(x;eUaX^>i^3C;eQSI zcLw~g(f%`|s{i%0{~vhTnRg?J->~ggx{)zXsBI(7L_wbFa|)*c@gWcr-|YW@sn$w- z|J)%Gt8%?E(u@f&E5)f0a~9NW_Z-UC3IRvD^xY_Aml{kYu5Z;`_seqGDe9U|OBVAa z+??6^s5n_|K&kne&F)OD0uD?ip5v6L41kNvq;JhK_i$6;(X3}dX+_d~0?A9tW6>G} zRW#@cfh$v7>gA7H6V_v5ITtzt#v^%j)pL$+WbQRioh!xs)*#>rEq7XOU9| zo%fD9-u^8X?jvofyq-O;X9xVvp;Xe499)pjj;EacLwMTxYvu#6te-C)8%C40oMAb; z)LwAw`_osev#z>qzD0BTR+H>DX@c|vMk-PcgNI6yGTnL;gIitJ-<*=}E!72kP^Vnw zzv%cnMtHaD3_b_t0d$M5|E606gMCK?p2$ADda9BNtofb)mtIBnQo^`(Q$r4&!jAfu z4ctS*8z`AlMztahK^&h6ld&++=7<>wBg zI^gEy5dl;jFS~s#w`##jk=94tVK~gI6#_xtDTa8bW&3&R_f>;hAksM$JI}0U&~X&rPmXxEZF^x~!`Lw5FzCJ|+_~0ve6#-j zy2z;_uJn(Fc$zU(&Y@_9((rx2jSt$niM3Z%8tJYOu)aglUrILofaE@w+ZTV-k914P z>oBGr;trTlQ%|L;Y-L)CjGQaC?rAc_QM0vU4XL6H<-h4ZVCIQa$|ZQqM6eMPd^a$Y zKx!LW*3tUwziXHsE=(KW$-(yah)+N_tAjMxhReL4$!*MY@m=M>y7{cv2pUN_65kDY zj9(*6DO6#X4EFdxoufN9e1DlXwggr$)T*H`46CW?mPRMXCb^Vxx zLVH1r578S;J!U!A?RC8v%_F#i7PM*h=cfYWl%5~;F6DOE-K;fr22Ll^gLps~y>EBM z#bb|EbnJ*x>5XE!ZzV~fz39>4GK0BD<1Et*d;AwgQ;`hDBr^4@=TaY>3zZ{Q_!jTk zFn1LPgG&h%z*xfOaoJnWQAbyIUO3^Ms#X=!7pu2wtd_p4c8N!6)cAU5+3g0vL|Ds$ zWI@u=Mcxn+`t+n-Rj)1xc*MnS05_c-Jw!XbRyt;a!pHlCI;SIZ9*Gzb>xNDE_ z%#VCX8XKM}VYa!T3o8`(QjNdHJ$drvDTYQ|t>-9vfFXW&dAuOgui(n5q@)_ukbx@3 z-$lcFEm&b)L}A^O`&1#WH*5G<5@A$MLu+?ffZZnbx^Z^+j0VwGZ-8XNsmM)i_dVX$ zU@m9a^S%cBDKx5c*n#chqLn23)2DtRIF^xtFF*b3KN_51ZFVo2!8Z&^A2$BS|B~%H z{x4q?hNGf73-~1sl}}3l`q#mq*_5XL^@GCj_Yb@FIYSyOcPLN&Gmw)0Fan*Y`p5JC z__+EAjQfg+Hy7 zs}}Kq?$5tM%@qMrMQ1+0&GF|afQ7n|tZ|s}>Bh?W8N&KmaKq7q5A*BU>l4cwMUME} z%s<{_4RIwg!|#0|1w7>;P3W_wt>b3` zKADuZgDH=Ams=ekns4hebXx-(hg-4cCpdT$`D1Psz{GR)If+=9GTtxA9(x=$f9_`P z*RO|-&h1{Dk+H3++Weftso;98@i8oJE7~g-N%R$=f9J0^s&WNtJ6cazOWtx%U@dsX zA;exK*{*1^vgYKnMi$ljwXk|(p!m|G@}BhX4Q$c$;KOIY%H)@TtBk0ZpM?KqFRC^G zG4X9G4W1vuk0^exSfGF9=1SvzPu)g_$ex2MP+Fhsx16oavw7&i=Hs zyR-A`_r34C`##U}HDz!d?TVeeH1BprPeENB=&H-b84L`7A%O~hMaXrVz7>%g}2RNEC+W@NP*@Kd!*dJ?PMtc|NQeCAl zV*1~Z}>Zk`}X?Y3ua?K{7vtIeIA76=Z3K2$YTk2fYEmR$mJ1JVLjmIW%gt# zwdoT2rb3B0ru0lmUdN%TKSEf~DsvjVn<~|&CH^YLyACAO?uqM8p7}WA7Y!--qQ2Jc zK}SVqdj_J#M{O$&72H57gpP&_RATcjqwl(<_k!dTas9Q-SFYk;1({xwWp~!e_nO)o*KOvaF!|I-93@(xNjNQv=!J}`i z9cw-ACW@&EiLtX>U!>S!z2Quj^7(#cBuTF)=oeIO`_z91GE8e=Hednda^q=;O$VH3 z0CxdB=bj0xggt^P*2k_XgI>SU6*W3Nn-J;-9gUp0*l!!*k+_L|Sy>-yELgR}*DY@D zDWUA4VsYc1!W6qK-s98LRCG|hwyC^!cA^$6&*2%!lsl9h9|+<;fV+4=e~y$7k>+&~ zdkG}ospire8alqw(82!lV0(#?Ded_aisR|4EN-@~3p|cf+l;{NTu6GX3Yj80s9M!K z(N-ZI{|sot3EV;5BRr;>>5IO$n|Ox_7RyPy z1~5Xh_GP%3qDx`?)rv9E(>iCPWRZE(v)tn}@@w0VbW&k?JCh6`s^d_q`}7-c!z2%={Mz zkUti!uyk<7aJaM(ghooUcA=g24po|%>shVapF?{h(3%?4jPxlorlDw3;!>~N>~hM4 z#xQF;WW0y^VWd^J|S44BA>^# zmG=@%Ix?PBTW5QukpyWx1sZmeh10yvZuNF(ermABMp5x8sh2o|xLF>kK7r*pnHgWI zoi8i4X|uu0auVQp6C!t=MOwJ6dkNgnp3IK+n{wZ`?kY}wJ%$^Q)PSB%Y{}=|1olP( z0gLSezLzTUya}4Ivg+wuG6_{Rz6p--Dh=cd9vPXEQ$jr?^h-wJIh;w$d09bHrJf#T z#F^Q5vrdJz7Udt7=JPX{OH}Xqmcpp&qZSA8>>sGo`8vYn;w*KctYRU zs+%|$A|Z?sR_^eIx}4OE6Y5C7bPE-@&ovaC(a}YRK&o61g1ys;1NRqUk?qTVBMyYP zqTu+eUzLOryFgL({nncszB)=f0xHEh=ls2w{dYaM(YG6aLGv3F-=O%v2{Ohj?_r)d T>%MXT2R1k7y-tO@j$i)=2K&VJ literal 0 HcmV?d00001 diff --git a/benchmark/results/v3/v3.3.0/PrimAITE v3.3.0 Benchmark Report.md b/benchmark/results/v3/v3.3.0/PrimAITE v3.3.0 Benchmark Report.md new file mode 100644 index 00000000..da71ede3 --- /dev/null +++ b/benchmark/results/v3/v3.3.0/PrimAITE v3.3.0 Benchmark Report.md @@ -0,0 +1,38 @@ +# PrimAITE v3.3.0 Learning Benchmark +## PrimAITE Dev Team +### 2024-09-02 + +--- +## 1 Introduction +PrimAITE v3.3.0 was benchmarked automatically upon release. Learning rate metrics were captured to be referenced during system-level testing and user acceptance testing (UAT). +The benchmarking process consists of running 5 training session using the same config file. Each session trains an agent for 1000 episodes, with each episode consisting of 128 steps. +The total reward per episode from each session is captured. This is then used to calculate an caverage total reward per episode from the 5 individual sessions for smoothing. Finally, a 25-widow rolling average of the average total reward per session is calculated for further smoothing. +## 2 System Information +### 2.1 Python +**Version:** 3.10.14 (main, Apr 6 2024, 18:45:05) [GCC 9.4.0] +### 2.2 System +- **OS:** Linux +- **OS Version:** #76~20.04.1-Ubuntu SMP Thu Jun 13 18:00:23 UTC 2024 +- **Machine:** x86_64 +- **Processor:** x86_64 +### 2.3 CPU +- **Physical Cores:** 2 +- **Total Cores:** 4 +- **Max Frequency:** 0.00Mhz +### 2.4 Memory +- **Total:** 15.62GB +- **Swap Total:** 0.00B +## 3 Stats +- **Total Sessions:** 5 +- **Total Episodes:** 5005 +- **Total Steps:** 640000 +- **Av Session Duration (s):** 1458.2831 +- **Av Step Duration (s):** 0.0456 +- **Av Duration per 100 Steps per 10 Nodes (s):** 4.5571 +## 4 Graphs +### 4.1 v3.3.0 Learning Benchmark Plot +![PrimAITE 3.3.0 Learning Benchmark Plot](PrimAITE v3.3.0 Learning Benchmark.png) +### 4.2 Learning Benchmark of Minor and Bugfix Releases for Major Version 3 +![Learning Benchmark of Minor and Bugfix Releases for Major Version 3](PrimAITE Learning Benchmark of Minor and Bugfix Releases for Major Version 3.png) +### 4.3 Performance of Minor and Bugfix Releases for Major Version 3 +![Performance of Minor and Bugfix Releases for Major Version 3](PrimAITE Performance of Minor and Bugfix Releases for Major Version 3.png) diff --git a/benchmark/results/v3/v3.3.0/PrimAITE v3.3.0 Benchmark Report.pdf b/benchmark/results/v3/v3.3.0/PrimAITE v3.3.0 Benchmark Report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..10a55a10d4f228093c0b3f47bd77b61ad47fbd5a GIT binary patch literal 210119 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 z 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

q--=WiTXm*z)gc=z1ox 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

D|usiINId8`rD>ISjA_Sxm8)1wOfB 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%0AoWuT#4y=m(c%zR6QJ_tj41nkBQjzp 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

VC3=1L^th7hy&SVqQ!hdA9A*B6Rqbsj=~Z;n-% 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 a<0r6pj_1*-ycjJA{K?5EO6N%F`~E-KEeDAJ literal 0 HcmV?d00001 diff --git a/benchmark/results/v3/v3.3.0/session_metadata/1.json b/benchmark/results/v3/v3.3.0/session_metadata/1.json new file mode 100644 index 00000000..836363b8 --- /dev/null +++ b/benchmark/results/v3/v3.3.0/session_metadata/1.json @@ -0,0 +1,1009 @@ +{ + "total_episodes": 1001, + "total_time_steps": 128000, + "total_s": 1507.500278, + "s_per_step": 0.0471093836875, + "s_per_100_steps_10_nodes": 4.71093836875, + "total_reward_per_episode": { + "1": -22.899999999999963, + "2": -11.84999999999998, + "3": -45.15000000000006, + "4": -11.449999999999983, + "5": -22.449999999999953, + "6": -14.549999999999981, + "7": -69.80000000000005, + "8": -23.149999999999963, + "9": -92.95, + "10": -1.6499999999999995, + "11": -41.85000000000005, + "12": -20.199999999999953, + "13": -2.049999999999983, + "14": -23.34999999999995, + "15": -66.40000000000009, + "16": -60.350000000000094, + "17": -12.69999999999998, + "18": -19.599999999999987, + "19": -13.349999999999982, + "20": -23.24999999999995, + "21": -14.399999999999986, + "22": -45.600000000000065, + "23": -49.10000000000007, + "24": -21.649999999999956, + "25": -95.7000000000001, + "26": -45.55000000000019, + "27": -21.749999999999957, + "28": -39.05, + "29": -42.900000000000105, + "30": -19.849999999999966, + "31": 7.00000000000002, + "32": -52.75000000000008, + "33": -28.799999999999976, + "34": -4.099999999999985, + "35": -34.749999999999986, + "36": -21.09999999999996, + "37": -37.00000000000011, + "38": -16.24999999999998, + "39": -15.299999999999986, + "40": -12.499999999999995, + "41": -83.54999999999981, + "42": -22.2, + "43": -84.75000000000009, + "44": -16.89999999999997, + "45": -25.49999999999999, + "46": -18.89999999999997, + "47": -11.349999999999987, + "48": -21.049999999999958, + "49": -22.99999999999995, + "50": -22.499999999999954, + "51": -70.44999999999999, + "52": -62.300000000000104, + "53": 3.049999999999968, + "54": -7.399999999999997, + "55": -16.799999999999972, + "56": -73.75, + "57": -33.30000000000002, + "58": -3.0000000000000067, + "59": -16.74999999999997, + "60": -21.699999999999957, + "61": -69.05000000000005, + "62": -98.54999999999998, + "63": -7.099999999999993, + "64": -3.749999999999984, + "65": -98.19999999999999, + "66": -60.90000000000017, + "67": -97.2, + "68": -22.199999999999953, + "69": -14.549999999999965, + "70": -20.999999999999957, + "71": -20.399999999999963, + "72": -5.599999999999977, + "73": -13.300000000000004, + "74": -14.649999999999979, + "75": -11.399999999999993, + "76": -6.699999999999988, + "77": -43.300000000000125, + "78": -30.449999999999992, + "79": -23.29999999999995, + "80": -75.85, + "81": 11.55, + "82": -37.24999999999999, + "83": -94.24999999999997, + "84": -18.74999999999999, + "85": -89.3, + "86": -27.350000000000026, + "87": -103.15000000000006, + "88": -73.15000000000002, + "89": -16.999999999999975, + "90": -31.54999999999993, + "91": -16.699999999999974, + "92": -22.699999999999953, + "93": -91.19999999999999, + "94": -18.949999999999967, + "95": -87.8, + "96": -17.89999999999997, + "97": -65.3, + "98": -16.24999999999998, + "99": -12.749999999999995, + "100": -2.199999999999976, + "101": -30.199999999999978, + "102": -69.74999999999997, + "103": -75.4, + "104": -63.35000000000011, + "105": -21.749999999999957, + "106": -15.04999999999998, + "107": -11.149999999999993, + "108": -95.4, + "109": -9.299999999999994, + "110": -7.399999999999994, + "111": -67.90000000000006, + "112": -66.00000000000001, + "113": -88.4, + "114": -14.949999999999976, + "115": 0.20000000000001994, + "116": -7.80000000000002, + "117": -10.3, + "118": 4.550000000000024, + "119": -42.250000000000114, + "120": -23.89999999999997, + "121": 8.499999999999986, + "122": -73.14999999999999, + "123": -18.749999999999968, + "124": -18.14999999999997, + "125": -2.8999999999999737, + "126": -6.199999999999982, + "127": -13.09999999999999, + "128": -11.849999999999987, + "129": 14.849999999999994, + "130": -14.749999999999977, + "131": -50.60000000000007, + "132": -39.65000000000005, + "133": 14.300000000000018, + "134": -9.399999999999993, + "135": -21.949999999999953, + "136": -16.69999999999997, + "137": 29.599999999999888, + "138": -19.99999999999996, + "139": 0.7500000000000469, + "140": 25.200000000000024, + "141": -18.399999999999967, + "142": -97.19999999999999, + "143": -90.15, + "144": 20.800000000000008, + "145": -7.900000000000008, + "146": -56.750000000000014, + "147": -81.70000000000005, + "148": -91.45, + "149": -31.10000000000001, + "150": -64.35, + "151": -59.49999999999999, + "152": -15.89999999999998, + "153": 8.65000000000002, + "154": -80.35000000000001, + "155": -84.64999999999996, + "156": -20.79999999999996, + "157": 1.900000000000028, + "158": -53.599999999999994, + "159": -86.80000000000001, + "160": -93.6, + "161": -92.14999999999995, + "162": -66.75000000000001, + "163": -78.65000000000002, + "164": -8.049999999999995, + "165": -87.99999999999997, + "166": 27.249999999999893, + "167": -35.30000000000001, + "168": -0.7999999999999727, + "169": -96.44999999999999, + "170": -53.09999999999996, + "171": -7.750000000000002, + "172": -1.2499999999999776, + "173": -63.39999999999997, + "174": -36.79999999999995, + "175": -10.09999999999999, + "176": -9.699999999999998, + "177": -48.2, + "178": -76.7, + "179": -73.59999999999995, + "180": -76.2, + "181": -88.39999999999999, + "182": -15.649999999999977, + "183": -91.14999999999998, + "184": -11.499999999999995, + "185": -21.949999999999953, + "186": -30.85000000000002, + "187": 40.64999999999981, + "188": 8.850000000000062, + "189": -77.00000000000004, + "190": -75.45, + "191": -0.8999999999999571, + "192": -47.25, + "193": -61.69999999999993, + "194": 7.100000000000066, + "195": -7.099999999999988, + "196": -4.050000000000007, + "197": -6.499999999999984, + "198": -82.9, + "199": 1.300000000000014, + "200": 9.849999999999971, + "201": -3.7499999999999805, + "202": 84.9000000000002, + "203": 8.45000000000005, + "204": -32.749999999999964, + "205": -36.44999999999997, + "206": -90.1, + "207": -84.05, + "208": -12.199999999999989, + "209": 13.94999999999997, + "210": -18.849999999999994, + "211": 16.80000000000005, + "212": 26.599999999999895, + "213": -22.84999999999995, + "214": -74.05, + "215": -8.149999999999993, + "216": -28.949999999999967, + "217": -61.29999999999995, + "218": -3.8000000000000043, + "219": -56.799999999999976, + "220": 25.85000000000001, + "221": -87.0, + "222": -64.14999999999999, + "223": -40.10000000000003, + "224": 5.250000000000007, + "225": -11.449999999999992, + "226": -0.39999999999999414, + "227": -65.19999999999999, + "228": -34.400000000000006, + "229": -5.9499999999999895, + "230": -19.349999999999966, + "231": 32.99999999999977, + "232": 6.500000000000082, + "233": -1.399999999999994, + "234": -46.099999999999966, + "235": 51.249999999999815, + "236": -68.25000000000001, + "237": -74.30000000000001, + "238": -4.049999999999976, + "239": -82.25, + "240": -28.799999999999937, + "241": 5.90000000000005, + "242": -1.949999999999961, + "243": -80.85, + "244": -12.649999999999988, + "245": -1.5999999999999868, + "246": -53.999999999999986, + "247": -65.85, + "248": -25.799999999999994, + "249": 0.8000000000000482, + "250": 8.250000000000032, + "251": 8.55000000000004, + "252": 7.000000000000038, + "253": -30.549999999999972, + "254": -49.400000000000034, + "255": 2.2000000000000446, + "256": 2.550000000000025, + "257": -17.399999999999984, + "258": -71.35, + "259": 13.550000000000004, + "260": -80.0, + "261": -10.74999999999999, + "262": 27.84999999999992, + "263": -10.95, + "264": -57.65000000000002, + "265": 25.99999999999989, + "266": 31.899999999999963, + "267": 2.4000000000000163, + "268": -71.5, + "269": -63.45000000000001, + "270": 78.64999999999993, + "271": -78.9, + "272": -13.149999999999956, + "273": -17.599999999999973, + "274": -14.24999999999999, + "275": -0.19999999999996576, + "276": -34.44999999999999, + "277": -1.999999999999969, + "278": -16.700000000000017, + "279": -55.699999999999996, + "280": -63.64999999999999, + "281": -0.04999999999998295, + "282": -35.45, + "283": -31.89999999999997, + "284": -69.44999999999997, + "285": -78.5, + "286": -1.1000000000000014, + "287": -74.20000000000002, + "288": -78.35000000000002, + "289": -81.80000000000001, + "290": -32.50000000000001, + "291": 8.750000000000028, + "292": -22.49999999999997, + "293": 6.8500000000000005, + "294": -91.6, + "295": 36.099999999999795, + "296": -81.25, + "297": 5.149999999999975, + "298": 7.249999999999992, + "299": -10.149999999999983, + "300": -68.54999999999993, + "301": -61.24999999999994, + "302": -13.749999999999988, + "303": -66.64999999999995, + "304": -72.1, + "305": -53.400000000000034, + "306": -41.95000000000002, + "307": 22.650000000000034, + "308": -78.69999999999999, + "309": -62.0, + "310": -72.04999999999997, + "311": -60.74999999999993, + "312": -77.45, + "313": -51.69999999999997, + "314": -78.50000000000001, + "315": -44.65000000000001, + "316": 15.80000000000004, + "317": 39.44999999999979, + "318": -43.999999999999964, + "319": -48.29999999999999, + "320": 42.99999999999991, + "321": -23.049999999999983, + "322": -4.899999999999984, + "323": 34.099999999999795, + "324": -62.24999999999992, + "325": -76.95, + "326": 7.3000000000000504, + "327": -101.30000000000013, + "328": -16.95000000000004, + "329": -50.199999999999996, + "330": -41.8, + "331": -60.84999999999993, + "332": 13.500000000000007, + "333": -53.04999999999998, + "334": 0.7500000000000511, + "335": 60.79999999999987, + "336": 6.50000000000005, + "337": 8.10000000000003, + "338": -63.7, + "339": -22.79999999999995, + "340": -82.69999999999999, + "341": -39.10000000000001, + "342": 39.599999999999795, + "343": -32.35000000000003, + "344": -65.24999999999994, + "345": 85.15000000000003, + "346": 18.34999999999998, + "347": -86.14999999999999, + "348": 30.99999999999976, + "349": -79.75, + "350": 43.44999999999984, + "351": -78.65000000000003, + "352": 34.799999999999834, + "353": -4.249999999999974, + "354": -39.35, + "355": -75.14999999999999, + "356": -67.94999999999999, + "357": -64.94999999999996, + "358": -54.19999999999996, + "359": -68.19999999999996, + "360": -38.10000000000001, + "361": 10.249999999999986, + "362": -2.0999999999999925, + "363": -10.299999999999955, + "364": -70.75, + "365": -59.25000000000002, + "366": -46.25000000000003, + "367": -61.64999999999998, + "368": 5.250000000000063, + "369": -24.54999999999994, + "370": -32.00000000000002, + "371": 25.10000000000001, + "372": -92.89999999999998, + "373": 26.450000000000102, + "374": -49.60000000000004, + "375": 13.300000000000011, + "376": -17.49999999999998, + "377": 7.600000000000042, + "378": -66.69999999999993, + "379": -25.049999999999994, + "380": -64.74999999999997, + "381": -64.34999999999998, + "382": -38.20000000000001, + "383": 59.04999999999991, + "384": 0.6000000000000636, + "385": 21.85000000000011, + "386": 14.049999999999986, + "387": -28.49999999999998, + "388": -65.89999999999996, + "389": 31.79999999999977, + "390": -54.74999999999997, + "391": -58.699999999999946, + "392": -73.99999999999999, + "393": 7.249999999999879, + "394": -62.55000000000001, + "395": -64.75000000000003, + "396": -64.69999999999992, + "397": -72.95, + "398": -57.300000000000026, + "399": 17.350000000000023, + "400": -77.60000000000005, + "401": 49.599999999999916, + "402": -78.75000000000009, + "403": -32.750000000000036, + "404": -13.849999999999985, + "405": -57.54999999999998, + "406": -67.64999999999996, + "407": -14.549999999999986, + "408": -38.69999999999999, + "409": -42.34999999999999, + "410": -75.05000000000001, + "411": -73.25000000000001, + "412": 36.849999999999795, + "413": -43.14999999999998, + "414": 50.84999999999989, + "415": -64.3999999999999, + "416": -17.599999999999984, + "417": -3.6999999999999673, + "418": -65.64999999999998, + "419": -11.450000000000015, + "420": -57.24999999999999, + "421": -65.54999999999995, + "422": -59.34999999999998, + "423": -64.79999999999997, + "424": -8.000000000000071, + "425": -12.900000000000041, + "426": -18.499999999999975, + "427": -24.499999999999975, + "428": -55.39999999999993, + "429": -30.89999999999997, + "430": -28.44999999999996, + "431": -12.949999999999976, + "432": -65.84999999999995, + "433": -50.99999999999996, + "434": -19.099999999999973, + "435": -68.4, + "436": -60.800000000000004, + "437": -3.9499999999999735, + "438": -10.999999999999922, + "439": -62.49999999999996, + "440": -57.299999999999976, + "441": -61.749999999999936, + "442": -46.04999999999999, + "443": -67.99999999999994, + "444": -62.64999999999992, + "445": 25.599999999999856, + "446": -55.09999999999995, + "447": -68.19999999999993, + "448": 3.499999999999991, + "449": -34.300000000000004, + "450": -29.700000000000006, + "451": 34.25000000000014, + "452": -12.100000000000064, + "453": -42.04999999999998, + "454": -29.10000000000001, + "455": -23.09999999999998, + "456": -26.79999999999995, + "457": -20.24999999999999, + "458": -52.2, + "459": -72.34999999999995, + "460": -65.34999999999991, + "461": -55.79999999999996, + "462": -41.65000000000001, + "463": -33.04999999999998, + "464": 22.450000000000095, + "465": 95.45000000000006, + "466": 41.64999999999985, + "467": -50.09999999999998, + "468": 6.800000000000042, + "469": 37.55, + "470": -13.75000000000001, + "471": 10.600000000000062, + "472": -62.24999999999993, + "473": -16.699999999999964, + "474": -56.79999999999995, + "475": -27.550000000000004, + "476": 84.70000000000005, + "477": -59.54999999999993, + "478": -74.04999999999998, + "479": -74.99999999999987, + "480": 28.04999999999995, + "481": -25.19999999999999, + "482": -96.60000000000001, + "483": -20.700000000000014, + "484": 77.85000000000011, + "485": -50.849999999999945, + "486": 28.700000000000042, + "487": -58.649999999999935, + "488": -35.949999999999974, + "489": -24.349999999999934, + "490": -54.0, + "491": -14.149999999999975, + "492": -44.8499999999999, + "493": -66.24999999999991, + "494": -10.149999999999965, + "495": 1.499999999999983, + "496": 26.350000000000072, + "497": -57.949999999999974, + "498": -54.799999999999955, + "499": 33.00000000000012, + "500": 7.250000000000083, + "501": 74.15000000000002, + "502": 21.699999999999974, + "503": -73.0999999999999, + "504": -15.34999999999998, + "505": 70.99999999999991, + "506": -66.84999999999991, + "507": -61.649999999999935, + "508": -58.94999999999998, + "509": -41.09999999999997, + "510": -26.349999999999994, + "511": -65.6999999999999, + "512": 44.44999999999985, + "513": -70.19999999999989, + "514": 65.74999999999986, + "515": -50.59999999999994, + "516": -66.84999999999997, + "517": -64.04999999999998, + "518": -25.099999999999998, + "519": -59.99999999999991, + "520": -67.19999999999997, + "521": -21.99999999999999, + "522": -49.89999999999998, + "523": -27.19999999999997, + "524": -51.04999999999998, + "525": -30.54999999999997, + "526": -38.25, + "527": 67.24999999999982, + "528": -63.899999999999935, + "529": -62.44999999999999, + "530": -36.05000000000003, + "531": -67.59999999999995, + "532": -67.89999999999992, + "533": -64.14999999999999, + "534": -22.099999999999984, + "535": -62.64999999999992, + "536": -52.49999999999997, + "537": -76.15000000000006, + "538": -15.750000000000046, + "539": -59.89999999999995, + "540": -1.1999999999999718, + "541": -63.65000000000005, + "542": -65.94999999999992, + "543": -5.55000000000003, + "544": -59.99999999999997, + "545": -66.7499999999999, + "546": 15.80000000000001, + "547": 87.35000000000007, + "548": -72.19999999999989, + "549": -64.09999999999992, + "550": -52.69999999999996, + "551": -9.40000000000001, + "552": -19.750000000000057, + "553": -62.94999999999993, + "554": -60.09999999999995, + "555": -39.7, + "556": 27.00000000000004, + "557": -52.04999999999994, + "558": -30.59999999999998, + "559": -86.75, + "560": -51.39999999999996, + "561": -61.20000000000003, + "562": 0.5499999999999772, + "563": -37.59999999999999, + "564": -18.650000000000027, + "565": -58.349999999999945, + "566": 55.750000000000014, + "567": -15.649999999999968, + "568": -27.250000000000007, + "569": -47.499999999999986, + "570": 100.40000000000032, + "571": -43.05, + "572": -62.24999999999993, + "573": 28.100000000000087, + "574": -65.99999999999996, + "575": 28.39999999999995, + "576": -2.0499999999999177, + "577": -58.399999999999935, + "578": -57.19999999999993, + "579": -24.6, + "580": -63.69999999999992, + "581": -4.249999999999938, + "582": 13.300000000000011, + "583": -51.749999999999964, + "584": -49.64999999999997, + "585": 50.100000000000136, + "586": 82.85000000000016, + "587": -34.00000000000001, + "588": -26.950000000000024, + "589": 102.25000000000016, + "590": -33.900000000000034, + "591": -1.549999999999984, + "592": -61.99999999999995, + "593": -56.95, + "594": 14.499999999999964, + "595": -66.7499999999999, + "596": 52.29999999999995, + "597": -50.99999999999997, + "598": 88.75, + "599": -23.750000000000014, + "600": 68.1499999999999, + "601": -47.39999999999999, + "602": -68.29999999999997, + "603": 62.750000000000156, + "604": -65.84999999999991, + "605": -3.4000000000000314, + "606": -23.75000000000003, + "607": 3.1499999999999764, + "608": -52.29999999999997, + "609": -13.599999999999982, + "610": -51.59999999999997, + "611": -37.8, + "612": -19.049999999999997, + "613": -55.84999999999996, + "614": -7.299999999999946, + "615": -79.05000000000001, + "616": 29.05000000000002, + "617": 6.500000000000016, + "618": -26.70000000000005, + "619": 79.24999999999993, + "620": -34.80000000000003, + "621": 47.85000000000002, + "622": 32.150000000000006, + "623": 88.59999999999998, + "624": -19.449999999999946, + "625": 49.79999999999995, + "626": 15.09999999999998, + "627": 38.949999999999996, + "628": 19.950000000000063, + "629": -12.799999999999974, + "630": 10.050000000000054, + "631": 67.65000000000006, + "632": -1.949999999999986, + "633": 21.60000000000012, + "634": 92.8000000000001, + "635": 25.64999999999996, + "636": 73.35000000000002, + "637": 3.9999999999999902, + "638": 42.89999999999986, + "639": -49.499999999999964, + "640": -18.200000000000045, + "641": 63.14999999999993, + "642": -16.550000000000015, + "643": 64.95000000000006, + "644": -41.099999999999966, + "645": 24.10000000000002, + "646": 34.84999999999997, + "647": 42.84999999999999, + "648": 62.49999999999998, + "649": 45.649999999999906, + "650": 72.89999999999999, + "651": 32.30000000000004, + "652": -26.04999999999997, + "653": 68.10000000000008, + "654": 70.24999999999977, + "655": 90.7000000000001, + "656": 88.55000000000003, + "657": 24.04999999999996, + "658": 57.899999999999956, + "659": 33.700000000000045, + "660": 59.29999999999987, + "661": 101.15000000000005, + "662": 41.899999999999935, + "663": 36.14999999999995, + "664": -51.19999999999997, + "665": 81.8500000000001, + "666": 88.4000000000001, + "667": 61.69999999999994, + "668": 19.299999999999983, + "669": 70.64999999999995, + "670": 46.49999999999997, + "671": 40.69999999999995, + "672": -27.34999999999998, + "673": 107.95, + "674": 44.99999999999982, + "675": 11.40000000000002, + "676": 90.50000000000016, + "677": 38.84999999999977, + "678": 56.59999999999999, + "679": 93.05000000000005, + "680": 57.399999999999956, + "681": 41.05000000000001, + "682": 90.94999999999996, + "683": 64.69999999999997, + "684": -54.09999999999994, + "685": 101.75000000000003, + "686": 53.74999999999992, + "687": 100.40000000000002, + "688": 35.8999999999998, + "689": 47.50000000000003, + "690": 32.59999999999986, + "691": 42.99999999999987, + "692": 76.00000000000003, + "693": -5.800000000000042, + "694": 3.199999999999882, + "695": 24.200000000000006, + "696": 43.40000000000005, + "697": 91.05000000000003, + "698": 84.25000000000014, + "699": 37.04999999999994, + "700": 30.149999999999984, + "701": 94.55000000000007, + "702": 94.60000000000008, + "703": 24.45, + "704": 30.49999999999995, + "705": -24.300000000000033, + "706": 82.0, + "707": 55.3499999999999, + "708": 76.55000000000014, + "709": 40.09999999999989, + "710": -10.999999999999964, + "711": 75.35000000000007, + "712": 62.09999999999993, + "713": 82.65000000000018, + "714": 8.700000000000028, + "715": 87.75000000000017, + "716": 84.55000000000001, + "717": 12.949999999999957, + "718": 73.14999999999998, + "719": 50.79999999999997, + "720": 60.599999999999994, + "721": 91.55000000000008, + "722": 93.15000000000006, + "723": 42.74999999999994, + "724": 77.49999999999997, + "725": 86.10000000000015, + "726": 69.45000000000003, + "727": 63.299999999999926, + "728": 86.40000000000002, + "729": 78.8000000000001, + "730": 92.50000000000004, + "731": 75.10000000000008, + "732": 50.99999999999997, + "733": 91.25000000000016, + "734": 85.25000000000003, + "735": 93.4500000000001, + "736": 65.05, + "737": 76.20000000000003, + "738": 57.95000000000003, + "739": 48.85, + "740": 66.79999999999995, + "741": 66.65000000000003, + "742": 76.25000000000011, + "743": 73.75000000000004, + "744": 76.15000000000006, + "745": 5.349999999999966, + "746": 45.9500000000001, + "747": 72.94999999999999, + "748": 104.60000000000005, + "749": 78.95000000000002, + "750": 67.34999999999998, + "751": 32.549999999999926, + "752": 48.449999999999825, + "753": 84.25000000000004, + "754": 53.54999999999998, + "755": 79.40000000000008, + "756": 103.10000000000002, + "757": 83.95, + "758": 92.45000000000007, + "759": 100.00000000000006, + "760": 85.30000000000001, + "761": -24.09999999999999, + "762": 53.000000000000014, + "763": 42.849999999999916, + "764": 85.10000000000004, + "765": 72.24999999999999, + "766": -34.849999999999994, + "767": 61.199999999999974, + "768": 90.8000000000001, + "769": 61.14999999999984, + "770": 81.09999999999995, + "771": 53.55000000000009, + "772": 60.849999999999895, + "773": 63.05000000000005, + "774": 53.400000000000055, + "775": 77.84999999999997, + "776": 94.4, + "777": 66.94999999999996, + "778": 67.34999999999995, + "779": 52.44999999999994, + "780": 101.69999999999999, + "781": 78.05000000000007, + "782": 46.29999999999982, + "783": 100.85000000000001, + "784": 73.85000000000004, + "785": 53.25, + "786": 84.30000000000004, + "787": 76.89999999999998, + "788": 77.30000000000008, + "789": 68.04999999999997, + "790": 80.60000000000011, + "791": 86.50000000000018, + "792": 52.39999999999994, + "793": 95.65000000000006, + "794": 88.14999999999999, + "795": 87.40000000000009, + "796": 56.29999999999998, + "797": 93.30000000000011, + "798": 85.0500000000001, + "799": 85.30000000000011, + "800": 72.05000000000001, + "801": 69.79999999999998, + "802": 76.30000000000007, + "803": 56.150000000000006, + "804": 65.74999999999997, + "805": 73.30000000000004, + "806": 76.89999999999998, + "807": 86.79999999999986, + "808": 84.99999999999997, + "809": 76.80000000000005, + "810": 86.0, + "811": 62.39999999999998, + "812": 88.30000000000003, + "813": 91.55000000000001, + "814": 75.59999999999994, + "815": 76.5, + "816": 65.29999999999993, + "817": 29.899999999999984, + "818": 77.55000000000007, + "819": 90.95000000000009, + "820": 73.30000000000004, + "821": 58.69999999999999, + "822": 87.59999999999997, + "823": 89.94999999999996, + "824": 68.29999999999997, + "825": 91.89999999999998, + "826": 74.89999999999995, + "827": 71.24999999999996, + "828": 70.69999999999999, + "829": 93.04999999999998, + "830": 88.30000000000003, + "831": 102.65000000000009, + "832": 23.799999999999955, + "833": 96.55000000000001, + "834": 89.35000000000002, + "835": 74.05000000000005, + "836": 90.3000000000001, + "837": 75.65, + "838": 81.5, + "839": 29.04999999999999, + "840": 78.9, + "841": 61.69999999999996, + "842": 46.19999999999999, + "843": 65.54999999999998, + "844": 60.95000000000003, + "845": 100.65000000000019, + "846": 73.50000000000003, + "847": 96.75000000000001, + "848": 57.24999999999997, + "849": 64.3, + "850": 59.04999999999996, + "851": 103.14999999999996, + "852": 86.50000000000007, + "853": 63.150000000000034, + "854": 67.30000000000008, + "855": 69.74999999999997, + "856": 89.69999999999999, + "857": 73.50000000000014, + "858": 58.80000000000003, + "859": 93.35000000000008, + "860": 98.75000000000001, + "861": 80.49999999999999, + "862": 78.50000000000006, + "863": 68.25000000000003, + "864": 102.9000000000001, + "865": 94.05000000000001, + "866": 46.65000000000003, + "867": 96.39999999999999, + "868": 100.6000000000001, + "869": 48.44999999999997, + "870": 88.05, + "871": 68.70000000000006, + "872": 75.75000000000001, + "873": 100.00000000000003, + "874": 102.50000000000006, + "875": 85.50000000000001, + "876": 21.64999999999999, + "877": 59.69999999999999, + "878": 70.19999999999999, + "879": 85.15000000000003, + "880": 88.3, + "881": 70.00000000000009, + "882": 92.64999999999999, + "883": 96.00000000000004, + "884": 86.60000000000002, + "885": 70.70000000000005, + "886": 53.69999999999994, + "887": 104.5, + "888": 63.85000000000002, + "889": 86.85000000000004, + "890": 81.45000000000003, + "891": 73.30000000000003, + "892": 94.95000000000003, + "893": 42.05, + "894": 93.99999999999999, + "895": 94.80000000000018, + "896": 91.7, + "897": 62.349999999999945, + "898": 66.35000000000001, + "899": 86.85000000000002, + "900": 37.30000000000004, + "901": 74.94999999999997, + "902": 92.05000000000008, + "903": 92.34999999999998, + "904": 61.80000000000008, + "905": 85.14999999999999, + "906": 84.49999999999993, + "907": 66.30000000000004, + "908": 88.05000000000001, + "909": 81.55000000000001, + "910": 99.35000000000001, + "911": 71.79999999999994, + "912": 87.15, + "913": 82.39999999999998, + "914": 38.949999999999974, + "915": 91.35000000000002, + "916": 69.45000000000007, + "917": 73.04999999999998, + "918": 72.00000000000003, + "919": 62.45000000000006, + "920": 46.89999999999998, + "921": 66.95000000000003, + "922": 77.94999999999997, + "923": 84.45, + "924": 75.39999999999998, + "925": 91.70000000000013, + "926": 80.74999999999997, + "927": 77.20000000000005, + "928": 79.20000000000005, + "929": 59.05, + "930": 66.14999999999992, + "931": 47.899999999999935, + "932": 89.64999999999996, + "933": 78.3499999999999, + "934": 91.60000000000005, + "935": 70.89999999999996, + "936": 85.45, + "937": 84.65000000000003, + "938": 82.84999999999997, + "939": 102.19999999999999, + "940": 53.80000000000001, + "941": 50.199999999999974, + "942": 72.7, + "943": 63.90000000000002, + "944": 80.15000000000003, + "945": 92.15, + "946": 13.999999999999988, + "947": 62.400000000000034, + "948": 73.60000000000005, + "949": 56.29999999999998, + "950": 84.25000000000003, + "951": 80.85000000000001, + "952": 84.45000000000005, + "953": 86.70000000000002, + "954": 87.04999999999995, + "955": 30.700000000000024, + "956": 82.05, + "957": 78.55000000000007, + "958": 83.95000000000006, + "959": 57.44999999999996, + "960": 83.45000000000006, + "961": 72.25000000000001, + "962": 73.05000000000001, + "963": 79.30000000000001, + "964": 81.55, + "965": 69.99999999999997, + "966": 67.20000000000003, + "967": 92.80000000000003, + "968": 72.10000000000002, + "969": 48.64999999999985, + "970": 71.94999999999997, + "971": 15.949999999999934, + "972": 61.44999999999984, + "973": 90.85000000000004, + "974": 96.55000000000003, + "975": 78.15000000000003, + "976": 84.40000000000009, + "977": 84.75000000000003, + "978": 52.95000000000003, + "979": 84.84999999999995, + "980": 52.20000000000008, + "981": 67.1, + "982": 84.00000000000001, + "983": 87.8500000000001, + "984": 76.8000000000001, + "985": 91.4499999999999, + "986": 80.74999999999999, + "987": 83.09999999999998, + "988": 92.9000000000001, + "989": 63.34999999999997, + "990": 66.49999999999997, + "991": 96.65000000000002, + "992": 101.85000000000002, + "993": 84.79999999999993, + "994": 91.65000000000003, + "995": 77.25000000000009, + "996": 64.0, + "997": 59.04999999999998, + "998": 72.10000000000002, + "999": 85.40000000000005, + "1000": 38.94999999999991 + } +} \ No newline at end of file diff --git a/benchmark/results/v3/v3.3.0/session_metadata/2.json b/benchmark/results/v3/v3.3.0/session_metadata/2.json new file mode 100644 index 00000000..62f351cb --- /dev/null +++ b/benchmark/results/v3/v3.3.0/session_metadata/2.json @@ -0,0 +1,1009 @@ +{ + "total_episodes": 1001, + "total_time_steps": 128000, + "total_s": 1437.777365, + "s_per_step": 0.044930542656249996, + "s_per_100_steps_10_nodes": 4.493054265625, + "total_reward_per_episode": { + "1": -11.099999999999989, + "2": -32.05000000000004, + "3": -58.200000000000095, + "4": -8.599999999999987, + "5": -81.89999999999999, + "6": -63.89999999999999, + "7": 2.050000000000006, + "8": -25.199999999999996, + "9": -21.249999999999957, + "10": -31.65000000000001, + "11": -65.34999999999998, + "12": -19.39999999999996, + "13": -81.10000000000001, + "14": -12.099999999999989, + "15": -27.799999999999933, + "16": -97.5, + "17": -13.399999999999984, + "18": -66.80000000000008, + "19": -18.29999999999997, + "20": -11.59999999999998, + "21": -71.05000000000005, + "22": -15.149999999999983, + "23": -18.54999999999997, + "24": -51.90000000000001, + "25": -19.54999999999996, + "26": -64.8500000000001, + "27": -78.94999999999996, + "28": -24.649999999999935, + "29": -63.800000000000104, + "30": -15.949999999999978, + "31": -0.24999999999996536, + "32": -7.449999999999997, + "33": -13.29999999999999, + "34": -18.64999999999997, + "35": -22.499999999999954, + "36": -36.20000000000002, + "37": -15.999999999999979, + "38": -23.04999999999995, + "39": -20.099999999999966, + "40": -14.149999999999977, + "41": -13.849999999999989, + "42": -20.69999999999996, + "43": -15.349999999999977, + "44": -11.650000000000004, + "45": -19.74999999999996, + "46": -11.849999999999993, + "47": -10.049999999999992, + "48": -78.7999999999999, + "49": -23.29999999999995, + "50": -16.199999999999967, + "51": -22.399999999999952, + "52": -12.14999999999999, + "53": -20.849999999999962, + "54": -46.05000000000007, + "55": -19.199999999999964, + "56": -17.249999999999975, + "57": -19.649999999999963, + "58": -10.7, + "59": -41.35000000000013, + "60": -35.35000000000003, + "61": -19.899999999999963, + "62": -18.949999999999964, + "63": -1.7999999999999938, + "64": -18.19999999999997, + "65": -7.05000000000001, + "66": -5.949999999999997, + "67": -2.649999999999964, + "68": -14.55, + "69": -33.54999999999995, + "70": -104.4, + "71": -62.25000000000008, + "72": -14.099999999999989, + "73": -8.1, + "74": -15.299999999999986, + "75": -7.699999999999998, + "76": -14.649999999999984, + "77": 0.20000000000002705, + "78": -4.3999999999999995, + "79": -8.850000000000009, + "80": -1.399999999999962, + "81": -94.55, + "82": -26.200000000000006, + "83": -5.899999999999989, + "84": -10.299999999999997, + "85": 14.200000000000006, + "86": -67.09999999999997, + "87": -23.849999999999948, + "88": -19.74999999999996, + "89": -19.899999999999963, + "90": 2.4999999999999614, + "91": -15.899999999999983, + "92": -21.899999999999956, + "93": 8.400000000000063, + "94": -47.25000000000005, + "95": -11.949999999999987, + "96": -3.649999999999981, + "97": 3.550000000000037, + "98": -10.849999999999996, + "99": -17.74999999999997, + "100": -17.89999999999997, + "101": -6.999999999999993, + "102": -14.49999999999999, + "103": -31.800000000000008, + "104": -21.199999999999957, + "105": -14.39999999999998, + "106": -5.749999999999986, + "107": -2.4499999999999744, + "108": -25.14999999999999, + "109": 2.0000000000000373, + "110": -28.29999999999995, + "111": -14.14999999999999, + "112": -83.15, + "113": -1.4000000000000008, + "114": -2.14999999999997, + "115": -49.30000000000006, + "116": -9.449999999999987, + "117": 9.500000000000043, + "118": 13.65000000000003, + "119": -5.350000000000008, + "120": -10.849999999999982, + "121": -6.64999999999998, + "122": -18.74999999999999, + "123": 0.9500000000000433, + "124": -7.499999999999983, + "125": -18.09999999999997, + "126": -22.499999999999975, + "127": 7.350000000000016, + "128": 6.75000000000004, + "129": 14.700000000000049, + "130": 16.899999999999995, + "131": -52.54999999999996, + "132": -89.35, + "133": -17.34999999999997, + "134": 33.99999999999979, + "135": 8.900000000000048, + "136": 0.5499999999999989, + "137": -11.349999999999998, + "138": 14.650000000000023, + "139": -5.5000000000000036, + "140": -9.500000000000004, + "141": -40.30000000000011, + "142": 20.849999999999973, + "143": -2.049999999999981, + "144": 39.899999999999736, + "145": -87.6, + "146": 37.74999999999996, + "147": 14.400000000000034, + "148": 9.50000000000004, + "149": 10.95000000000001, + "150": -2.549999999999983, + "151": -0.8499999999999777, + "152": -8.100000000000007, + "153": 23.649999999999913, + "154": -4.599999999999987, + "155": -70.4, + "156": 39.649999999999956, + "157": -80.55000000000001, + "158": 8.550000000000013, + "159": 41.49999999999975, + "160": -28.099999999999977, + "161": -17.599999999999973, + "162": 42.6499999999998, + "163": -36.35, + "164": -41.80000000000015, + "165": -4.450000000000005, + "166": 6.150000000000029, + "167": 23.65000000000003, + "168": 36.250000000000014, + "169": 16.650000000000045, + "170": 15.200000000000077, + "171": 33.14999999999989, + "172": 63.14999999999998, + "173": -10.550000000000002, + "174": -23.29999999999995, + "175": 16.749999999999893, + "176": -74.75000000000003, + "177": 31.75000000000006, + "178": 14.049999999999985, + "179": 61.94999999999975, + "180": 20.499999999999943, + "181": 39.69999999999988, + "182": 6.100000000000064, + "183": -7.250000000000073, + "184": -6.950000000000007, + "185": -69.10000000000001, + "186": 29.150000000000073, + "187": -76.60000000000002, + "188": 45.299999999999905, + "189": -50.74999999999996, + "190": -48.10000000000014, + "191": 43.74999999999974, + "192": 10.300000000000058, + "193": 54.9499999999999, + "194": 38.9, + "195": 8.150000000000055, + "196": 7.00000000000001, + "197": 44.59999999999982, + "198": 72.34999999999984, + "199": -47.9, + "200": -49.45000000000003, + "201": 46.29999999999976, + "202": -46.099999999999994, + "203": -2.8499999999999783, + "204": -9.450000000000045, + "205": 2.600000000000059, + "206": 31.550000000000026, + "207": -65.50000000000004, + "208": 55.29999999999975, + "209": -39.000000000000014, + "210": 72.29999999999986, + "211": 64.34999999999982, + "212": 42.44999999999975, + "213": 13.750000000000027, + "214": -21.300000000000033, + "215": 21.99999999999996, + "216": -12.299999999999985, + "217": 12.149999999999999, + "218": -67.85000000000007, + "219": 9.400000000000013, + "220": 50.24999999999981, + "221": -7.300000000000061, + "222": 99.84999999999995, + "223": 53.84999999999977, + "224": 27.100000000000044, + "225": -50.69999999999999, + "226": 17.0, + "227": 62.94999999999987, + "228": 61.14999999999988, + "229": -33.30000000000001, + "230": -56.850000000000016, + "231": 7.650000000000029, + "232": 75.10000000000004, + "233": 10.900000000000059, + "234": 41.2, + "235": 20.80000000000005, + "236": 65.34999999999977, + "237": 92.25000000000003, + "238": -34.149999999999984, + "239": 55.24999999999974, + "240": 24.999999999999925, + "241": 50.74999999999988, + "242": 59.09999999999977, + "243": -67.4, + "244": 66.49999999999979, + "245": 10.300000000000068, + "246": 69.09999999999977, + "247": 98.94999999999973, + "248": -65.04999999999994, + "249": -79.70000000000003, + "250": 104.89999999999986, + "251": 71.6999999999999, + "252": 87.69999999999986, + "253": -50.74999999999998, + "254": -56.29999999999996, + "255": 91.54999999999977, + "256": 48.89999999999978, + "257": 34.55000000000007, + "258": 20.249999999999936, + "259": 68.99999999999976, + "260": 46.94999999999985, + "261": 68.79999999999974, + "262": 38.44999999999996, + "263": 84.59999999999978, + "264": -74.45000000000006, + "265": 44.349999999999866, + "266": 70.54999999999973, + "267": 29.450000000000028, + "268": 83.2499999999998, + "269": 3.2499999999999343, + "270": -70.75, + "271": -6.750000000000014, + "272": 66.94999999999982, + "273": 59.899999999999835, + "274": 83.99999999999979, + "275": -65.85000000000002, + "276": 40.94999999999991, + "277": 81.09999999999972, + "278": 7.450000000000036, + "279": 28.399999999999917, + "280": -59.750000000000064, + "281": 58.849999999999795, + "282": 68.55, + "283": 22.59999999999995, + "284": 0.4000000000000341, + "285": -93.34999999999998, + "286": -1.4999999999999711, + "287": 22.900000000000023, + "288": 11.349999999999937, + "289": 79.09999999999978, + "290": 91.54999999999995, + "291": 58.19999999999978, + "292": 36.849999999999994, + "293": 78.14999999999985, + "294": 15.799999999999962, + "295": 58.599999999999774, + "296": 7.149999999999958, + "297": 39.99999999999988, + "298": 34.80000000000001, + "299": 86.79999999999978, + "300": 54.09999999999981, + "301": 91.29999999999973, + "302": 61.09999999999973, + "303": -11.449999999999982, + "304": 75.79999999999986, + "305": 33.04999999999986, + "306": -17.800000000000043, + "307": 89.59999999999977, + "308": 68.39999999999988, + "309": -55.85000000000005, + "310": 69.39999999999975, + "311": 88.19999999999987, + "312": 57.09999999999975, + "313": 23.20000000000005, + "314": 94.19999999999975, + "315": 91.14999999999979, + "316": 33.54999999999974, + "317": 94.79999999999976, + "318": 98.44999999999976, + "319": 53.449999999999726, + "320": 81.09999999999974, + "321": -12.450000000000038, + "322": 95.29999999999973, + "323": -6.65000000000002, + "324": 88.59999999999977, + "325": 101.29999999999987, + "326": 107.70000000000005, + "327": 101.29999999999995, + "328": 102.39999999999979, + "329": 15.799999999999955, + "330": 38.05000000000004, + "331": 67.99999999999989, + "332": 74.34999999999978, + "333": -19.399999999999967, + "334": 96.14999999999979, + "335": -5.7500000000000036, + "336": -9.849999999999985, + "337": 87.19999999999975, + "338": 97.5499999999998, + "339": 27.20000000000004, + "340": 43.799999999999976, + "341": 92.39999999999976, + "342": 92.79999999999976, + "343": 90.64999999999978, + "344": 90.10000000000004, + "345": 20.650000000000023, + "346": 96.4999999999999, + "347": -85.49999999999997, + "348": 38.299999999999955, + "349": 99.84999999999987, + "350": 93.09999999999981, + "351": 59.24999999999997, + "352": 66.74999999999984, + "353": 89.54999999999976, + "354": 60.39999999999989, + "355": 13.699999999999973, + "356": 99.69999999999985, + "357": 25.949999999999886, + "358": 79.24999999999976, + "359": -9.149999999999986, + "360": 94.29999999999974, + "361": 103.09999999999992, + "362": 99.3499999999999, + "363": 95.34999999999974, + "364": -43.89999999999998, + "365": 103.39999999999976, + "366": 102.34999999999978, + "367": 106.49999999999972, + "368": 101.34999999999975, + "369": 103.99999999999991, + "370": -72.85000000000001, + "371": 86.74999999999973, + "372": -9.499999999999982, + "373": 97.89999999999976, + "374": 100.44999999999976, + "375": -84.24999999999997, + "376": 101.34999999999975, + "377": 78.59999999999984, + "378": 100.59999999999978, + "379": -28.049999999999972, + "380": 9.80000000000001, + "381": 104.94999999999978, + "382": 102.79999999999977, + "383": 93.59999999999994, + "384": 64.25000000000009, + "385": 77.09999999999992, + "386": 92.24999999999979, + "387": 98.04999999999973, + "388": -76.55, + "389": 94.49999999999979, + "390": 89.34999999999977, + "391": 26.050000000000026, + "392": 27.999999999999975, + "393": -24.05000000000006, + "394": 106.04999999999976, + "395": 105.99999999999974, + "396": 102.39999999999975, + "397": 59.6499999999999, + "398": 97.99999999999977, + "399": 101.49999999999973, + "400": -18.7, + "401": 105.6000000000001, + "402": 95.99999999999977, + "403": 103.69999999999982, + "404": 90.14999999999976, + "405": 96.34999999999987, + "406": 87.99999999999982, + "407": 93.29999999999971, + "408": 98.89999999999986, + "409": 104.39999999999972, + "410": 97.2499999999999, + "411": 100.04999999999974, + "412": 86.5499999999998, + "413": -60.74999999999996, + "414": 99.79999999999977, + "415": 82.84999999999978, + "416": 101.19999999999975, + "417": 1.5000000000000357, + "418": 102.49999999999976, + "419": 65.89999999999989, + "420": 103.89999999999974, + "421": 96.84999999999974, + "422": 101.39999999999976, + "423": 102.14999999999976, + "424": 101.99999999999972, + "425": 101.74999999999976, + "426": 102.39999999999976, + "427": 106.99999999999977, + "428": -73.45, + "429": 104.14999999999974, + "430": 100.09999999999984, + "431": 102.49999999999979, + "432": 101.19999999999975, + "433": 101.24999999999973, + "434": 102.44999999999976, + "435": 102.59999999999977, + "436": 98.84999999999977, + "437": 85.04999999999976, + "438": -77.7, + "439": -89.75, + "440": 33.79999999999973, + "441": 94.74999999999979, + "442": 99.84999999999975, + "443": 99.64999999999978, + "444": 103.6, + "445": 101.64999999999976, + "446": 52.39999999999978, + "447": 100.19999999999976, + "448": 80.09999999999977, + "449": 103.1999999999998, + "450": 97.54999999999977, + "451": 87.94999999999976, + "452": 103.49999999999974, + "453": 75.04999999999977, + "454": 94.59999999999977, + "455": 84.64999999999982, + "456": 99.49999999999977, + "457": -0.9500000000000004, + "458": 82.89999999999972, + "459": 103.79999999999977, + "460": 102.39999999999974, + "461": 106.64999999999976, + "462": 95.24999999999979, + "463": 97.79999999999977, + "464": 84.49999999999982, + "465": -11.800000000000033, + "466": 101.04999999999978, + "467": 106.29999999999974, + "468": 18.449999999999903, + "469": 105.19999999999975, + "470": 105.59999999999972, + "471": 82.29999999999977, + "472": 103.44999999999976, + "473": 104.19999999999978, + "474": 104.94999999999975, + "475": 106.19999999999972, + "476": 101.19999999999976, + "477": 106.44999999999973, + "478": -66.74999999999999, + "479": 98.14999999999978, + "480": 102.29999999999976, + "481": 102.44999999999976, + "482": 85.79999999999973, + "483": -77.75, + "484": 95.94999999999976, + "485": 101.19999999999976, + "486": 97.69999999999975, + "487": 104.59999999999975, + "488": 102.24999999999977, + "489": 103.8499999999998, + "490": 103.74999999999977, + "491": 104.39999999999971, + "492": 100.64999999999974, + "493": 105.04999999999976, + "494": -41.75000000000008, + "495": 105.84999999999972, + "496": 106.59999999999972, + "497": 99.04999999999977, + "498": 86.34999999999974, + "499": 104.54999999999976, + "500": 102.44999999999978, + "501": 104.69999999999979, + "502": 104.39999999999976, + "503": 107.34999999999974, + "504": 94.84999999999981, + "505": 104.34999999999977, + "506": 100.34999999999975, + "507": 104.14999999999976, + "508": 81.09999999999985, + "509": 97.69999999999976, + "510": -71.14999999999999, + "511": 101.94999999999973, + "512": 98.79999999999978, + "513": 104.79999999999976, + "514": 103.84999999999977, + "515": 103.94999999999973, + "516": 100.04999999999976, + "517": 104.74999999999974, + "518": 101.99999999999977, + "519": 105.14999999999975, + "520": 106.69999999999973, + "521": -84.45, + "522": 101.99999999999974, + "523": 60.84999999999993, + "524": 68.99999999999977, + "525": 84.59999999999974, + "526": 97.84999999999977, + "527": 104.34999999999977, + "528": 104.64999999999975, + "529": 104.89999999999975, + "530": 104.09999999999977, + "531": 103.44999999999976, + "532": 105.94999999999986, + "533": 104.24999999999977, + "534": 73.69999999999986, + "535": 106.49999999999973, + "536": 107.44999999999973, + "537": 85.34999999999978, + "538": 97.04999999999977, + "539": 103.79999999999977, + "540": 97.24999999999976, + "541": 42.84999999999979, + "542": 54.34999999999977, + "543": 67.29999999999974, + "544": 80.19999999999973, + "545": 19.350000000000026, + "546": 90.84999999999975, + "547": 49.69999999999974, + "548": 68.64999999999976, + "549": 82.89999999999972, + "550": 105.49999999999973, + "551": 4.50000000000003, + "552": 103.19999999999978, + "553": 98.44999999999976, + "554": 48.04999999999981, + "555": 58.39999999999973, + "556": 105.39999999999974, + "557": 84.39999999999976, + "558": 55.44999999999979, + "559": -74.25, + "560": 7.249999999999989, + "561": 103.24999999999976, + "562": 101.64999999999986, + "563": 105.40000000000003, + "564": -83.85000000000001, + "565": 20.699999999999964, + "566": 61.54999999999973, + "567": 108.19999999999976, + "568": 70.19999999999975, + "569": 40.29999999999995, + "570": 69.89999999999972, + "571": 35.2, + "572": 72.19999999999983, + "573": 112.84999999999992, + "574": 100.04999999999973, + "575": 30.000000000000053, + "576": 102.49999999999977, + "577": 103.89999999999976, + "578": 51.749999999999716, + "579": 74.24999999999977, + "580": 49.34999999999983, + "581": 1.2000000000000497, + "582": 103.49999999999976, + "583": 79.14999999999988, + "584": 36.14999999999989, + "585": 104.04999999999973, + "586": -4.849999999999975, + "587": 106.94999999999973, + "588": 48.39999999999986, + "589": 73.79999999999973, + "590": 71.19999999999976, + "591": 106.14999999999974, + "592": 90.19999999999982, + "593": 102.44999999999975, + "594": -26.200000000000017, + "595": 104.79999999999973, + "596": 54.59999999999989, + "597": 75.1999999999998, + "598": 88.89999999999976, + "599": 100.14999999999976, + "600": 99.24999999999977, + "601": 55.299999999999756, + "602": 68.29999999999973, + "603": 102.04999999999977, + "604": 101.69999999999978, + "605": 76.04999999999977, + "606": 105.39999999999972, + "607": 102.49999999999977, + "608": 102.59999999999977, + "609": 102.14999999999976, + "610": 105.94999999999972, + "611": 65.59999999999975, + "612": 104.44999999999975, + "613": 107.2499999999998, + "614": -82.45, + "615": -5.00000000000005, + "616": 80.24999999999972, + "617": 98.04999999999977, + "618": 67.89999999999984, + "619": 99.74999999999976, + "620": 103.09999999999977, + "621": 103.19999999999973, + "622": -49.15000000000008, + "623": 98.69999999999976, + "624": 56.09999999999976, + "625": 107.44999999999975, + "626": 103.59999999999977, + "627": 38.049999999999756, + "628": -41.949999999999996, + "629": -88.2, + "630": 104.7999999999998, + "631": 107.59999999999972, + "632": -9.949999999999976, + "633": 86.69999999999972, + "634": 104.49999999999977, + "635": 86.89999999999984, + "636": 61.24999999999979, + "637": 73.19999999999973, + "638": -31.000000000000007, + "639": 76.99999999999979, + "640": 80.19999999999976, + "641": 74.8999999999998, + "642": 103.79999999999976, + "643": 97.39999999999974, + "644": 107.44999999999976, + "645": 97.94999999999979, + "646": 104.74999999999976, + "647": 102.64999999999972, + "648": 104.89999999999972, + "649": 104.59999999999974, + "650": 102.74999999999976, + "651": 102.89999999999976, + "652": 105.34999999999972, + "653": 105.59999999999975, + "654": 101.99999999999977, + "655": 101.19999999999978, + "656": 106.59999999999972, + "657": 105.04999999999974, + "658": 76.14999999999978, + "659": 104.69999999999976, + "660": 103.04999999999977, + "661": -3.800000000000068, + "662": 103.94999999999976, + "663": 103.99999999999976, + "664": 101.04999999999976, + "665": 103.44999999999976, + "666": 98.09999999999977, + "667": 90.65, + "668": 69.89999999999976, + "669": 103.59999999999977, + "670": 105.09999999999975, + "671": 104.19999999999976, + "672": 104.79999999999974, + "673": 66.19999999999978, + "674": -6.449999999999992, + "675": 104.34999999999977, + "676": 79.89999999999976, + "677": 97.49999999999977, + "678": 81.64999999999975, + "679": 48.19999999999988, + "680": 89.09999999999975, + "681": 108.29999999999974, + "682": 105.74999999999973, + "683": 102.54999999999977, + "684": 38.79999999999977, + "685": 103.69999999999976, + "686": 80.2999999999998, + "687": 103.49999999999977, + "688": 107.7999999999998, + "689": 104.84999999999975, + "690": 100.39999999999976, + "691": -71.64999999999999, + "692": 104.24999999999976, + "693": 102.64999999999976, + "694": 104.09999999999977, + "695": 105.09999999999978, + "696": 93.24999999999976, + "697": 70.94999999999972, + "698": 104.84999999999975, + "699": 65.79999999999981, + "700": 108.39999999999974, + "701": 100.54999999999971, + "702": 104.79999999999976, + "703": 102.84999999999977, + "704": 103.49999999999977, + "705": 104.89999999999974, + "706": 101.14999999999975, + "707": 104.89999999999972, + "708": 103.94999999999975, + "709": 102.49999999999977, + "710": 62.44999999999977, + "711": 102.39999999999976, + "712": 105.99999999999973, + "713": 104.49999999999974, + "714": 105.34999999999974, + "715": 106.69999999999972, + "716": 38.44999999999985, + "717": 103.64999999999976, + "718": 103.09999999999977, + "719": 102.89999999999978, + "720": 35.2499999999998, + "721": 103.99999999999976, + "722": 105.04999999999974, + "723": 103.39999999999976, + "724": 104.54999999999977, + "725": -81.7, + "726": 104.54999999999976, + "727": 100.89999999999975, + "728": 105.44999999999975, + "729": 111.64999999999979, + "730": 104.69999999999976, + "731": 99.89999999999978, + "732": 2.8999999999999346, + "733": 104.39999999999976, + "734": 103.14999999999976, + "735": 102.99999999999977, + "736": 103.39999999999976, + "737": 105.69999999999975, + "738": -85.25, + "739": 41.99999999999972, + "740": 103.99999999999976, + "741": 17.600000000000016, + "742": 65.44999999999976, + "743": 102.24999999999977, + "744": 102.49999999999977, + "745": 105.89999999999972, + "746": 102.64999999999978, + "747": 104.69999999999976, + "748": 102.79999999999977, + "749": 102.19999999999978, + "750": 104.49999999999973, + "751": 102.64999999999978, + "752": 104.74999999999977, + "753": 104.54999999999976, + "754": 99.79999999999978, + "755": 103.94999999999976, + "756": 66.09999999999991, + "757": 103.99999999999976, + "758": -85.1, + "759": 103.29999999999977, + "760": 106.04999999999974, + "761": 99.29999999999973, + "762": 104.89999999999975, + "763": 104.34999999999977, + "764": 103.69999999999976, + "765": 102.14999999999978, + "766": 104.84999999999974, + "767": 103.09999999999977, + "768": 104.04999999999974, + "769": 104.69999999999975, + "770": 104.49999999999976, + "771": 108.84999999999974, + "772": 101.49999999999976, + "773": 103.69999999999976, + "774": 60.79999999999977, + "775": 103.29999999999977, + "776": 104.84999999999975, + "777": 104.29999999999976, + "778": 102.84999999999977, + "779": 103.89999999999976, + "780": 104.54999999999977, + "781": 103.79999999999976, + "782": 105.59999999999974, + "783": 102.84999999999977, + "784": 104.69999999999976, + "785": 101.59999999999977, + "786": 96.09999999999974, + "787": 105.99999999999972, + "788": 104.34999999999977, + "789": 103.79999999999977, + "790": 103.24999999999977, + "791": 102.89999999999976, + "792": 96.19999999999976, + "793": 105.09999999999978, + "794": 52.8499999999999, + "795": 105.24999999999974, + "796": 107.49999999999972, + "797": 111.64999999999986, + "798": 104.59999999999975, + "799": 73.74999999999973, + "800": 104.69999999999975, + "801": 105.49999999999974, + "802": -69.5, + "803": 105.69999999999975, + "804": 103.89999999999976, + "805": 105.19999999999973, + "806": 103.89999999999976, + "807": 107.24999999999974, + "808": 105.39999999999974, + "809": 106.69999999999972, + "810": 104.59999999999975, + "811": 81.64999999999984, + "812": 103.84999999999977, + "813": -63.90000000000002, + "814": 106.59999999999972, + "815": -68.5, + "816": 103.59999999999977, + "817": 104.99999999999974, + "818": 104.29999999999977, + "819": -9.799999999999994, + "820": 104.19999999999976, + "821": 109.09999999999977, + "822": 103.04999999999977, + "823": 108.49999999999974, + "824": 105.24999999999972, + "825": 103.94999999999976, + "826": 107.69999999999972, + "827": 103.49999999999977, + "828": 59.39999999999974, + "829": -74.35000000000001, + "830": 103.84999999999977, + "831": 91.04999999999978, + "832": 103.54999999999977, + "833": 105.19999999999979, + "834": 102.84999999999974, + "835": 106.09999999999972, + "836": 104.04999999999976, + "837": 104.59999999999977, + "838": 109.09999999999977, + "839": 103.29999999999977, + "840": 104.14999999999976, + "841": 103.34999999999977, + "842": 106.19999999999972, + "843": 103.59999999999977, + "844": 100.54999999999977, + "845": 103.84999999999977, + "846": 104.44999999999976, + "847": 103.89999999999978, + "848": 105.84999999999974, + "849": -61.300000000000004, + "850": 103.79999999999976, + "851": 105.59999999999974, + "852": 103.64999999999976, + "853": 105.74999999999974, + "854": 106.0999999999998, + "855": 109.14999999999975, + "856": 106.79999999999971, + "857": 105.39999999999975, + "858": 101.14999999999976, + "859": 104.24999999999973, + "860": 104.19999999999976, + "861": 106.94999999999973, + "862": 102.94999999999978, + "863": 104.84999999999975, + "864": 103.49999999999976, + "865": 103.04999999999977, + "866": 105.94999999999973, + "867": 102.34999999999978, + "868": 107.29999999999974, + "869": 104.14999999999976, + "870": 103.34999999999977, + "871": 103.89999999999974, + "872": -77.69999999999999, + "873": -86.14999999999999, + "874": 103.19999999999976, + "875": 108.6499999999998, + "876": 105.44999999999975, + "877": 105.89999999999974, + "878": 105.14999999999972, + "879": 103.64999999999976, + "880": 70.64999999999974, + "881": 103.09999999999977, + "882": 105.24999999999984, + "883": 103.69999999999976, + "884": 107.29999999999973, + "885": 103.59999999999975, + "886": 105.59999999999974, + "887": 104.69999999999978, + "888": 102.34999999999978, + "889": 102.99999999999977, + "890": 107.69999999999972, + "891": 104.24999999999976, + "892": 100.89999999999978, + "893": 103.69999999999978, + "894": 106.34999999999972, + "895": 107.39999999999974, + "896": 103.44999999999978, + "897": 103.54999999999977, + "898": 101.14999999999975, + "899": 104.14999999999976, + "900": 105.84999999999972, + "901": 69.94999999999983, + "902": -37.80000000000014, + "903": 9.05000000000001, + "904": -22.399999999999988, + "905": 49.749999999999915, + "906": 22.449999999999854, + "907": 66.74999999999989, + "908": 69.29999999999987, + "909": 30.299999999999937, + "910": 83.39999999999984, + "911": 23.899999999999878, + "912": -70.00000000000003, + "913": 43.499999999999865, + "914": 51.34999999999983, + "915": 40.50000000000001, + "916": 55.599999999999795, + "917": -5.299999999999992, + "918": 99.69999999999979, + "919": 24.89999999999985, + "920": 32.19999999999985, + "921": 94.69999999999978, + "922": 18.75000000000001, + "923": -1.2500000000000309, + "924": 49.799999999999876, + "925": 6.649999999999977, + "926": 92.04999999999981, + "927": 38.100000000000016, + "928": 52.099999999999895, + "929": 61.399999999999984, + "930": 53.399999999999935, + "931": 79.69999999999986, + "932": 66.04999999999977, + "933": -14.500000000000021, + "934": 73.94999999999979, + "935": 71.44999999999979, + "936": 104.69999999999982, + "937": 93.74999999999982, + "938": 21.799999999999986, + "939": 107.49999999999973, + "940": 83.3499999999999, + "941": 77.09999999999995, + "942": 92.24999999999986, + "943": 103.34999999999977, + "944": 104.64999999999979, + "945": 103.59999999999975, + "946": -20.79999999999999, + "947": 64.84999999999978, + "948": 104.14999999999976, + "949": 55.599999999999916, + "950": 97.54999999999976, + "951": 103.24999999999976, + "952": 107.04999999999974, + "953": 104.79999999999976, + "954": 103.04999999999977, + "955": 89.69999999999976, + "956": 86.39999999999988, + "957": 104.04999999999977, + "958": 103.89999999999976, + "959": 87.29999999999978, + "960": 95.09999999999981, + "961": 104.09999999999975, + "962": 103.49999999999977, + "963": 87.14999999999976, + "964": 101.9999999999998, + "965": 103.49999999999977, + "966": 82.94999999999978, + "967": 108.14999999999974, + "968": 77.59999999999977, + "969": 103.89999999999976, + "970": 109.74999999999976, + "971": 108.89999999999976, + "972": 103.59999999999977, + "973": 108.09999999999974, + "974": 103.24999999999977, + "975": 105.39999999999975, + "976": 105.04999999999976, + "977": 107.74999999999977, + "978": 103.74999999999977, + "979": 103.49999999999976, + "980": -77.8, + "981": 108.69999999999973, + "982": 105.54999999999973, + "983": 103.49999999999976, + "984": 106.99999999999973, + "985": 103.89999999999976, + "986": -63.9, + "987": 102.89999999999978, + "988": 109.24999999999977, + "989": 111.94999999999995, + "990": 106.79999999999974, + "991": -64.75000000000001, + "992": 107.59999999999972, + "993": 98.29999999999976, + "994": 103.39999999999976, + "995": 104.49999999999976, + "996": 88.94999999999982, + "997": 103.24999999999977, + "998": -62.95, + "999": -70.9, + "1000": 103.34999999999977 + } +} \ No newline at end of file diff --git a/benchmark/results/v3/v3.3.0/session_metadata/3.json b/benchmark/results/v3/v3.3.0/session_metadata/3.json new file mode 100644 index 00000000..7b4fd0a2 --- /dev/null +++ b/benchmark/results/v3/v3.3.0/session_metadata/3.json @@ -0,0 +1,1009 @@ +{ + "total_episodes": 1001, + "total_time_steps": 128000, + "total_s": 1478.051265, + "s_per_step": 0.04618910203125, + "s_per_100_steps_10_nodes": 4.618910203125, + "total_reward_per_episode": { + "1": -64.2500000000001, + "2": -10.899999999999991, + "3": -30.800000000000004, + "4": -14.649999999999977, + "5": -75.69999999999999, + "6": -60.350000000000094, + "7": -21.8, + "8": -93.69999999999996, + "9": -19.499999999999964, + "10": -34.64999999999998, + "11": -17.999999999999968, + "12": -38.15000000000004, + "13": -15.749999999999979, + "14": -15.34999999999998, + "15": -21.599999999999955, + "16": -55.05000000000011, + "17": -10.049999999999995, + "18": -20.949999999999957, + "19": -53.30000000000008, + "20": -13.199999999999989, + "21": -19.29999999999997, + "22": -10.65000000000001, + "23": -9.000000000000002, + "24": -103.89999999999996, + "25": -12.64999999999999, + "26": -1.8999999999999888, + "27": -26.54999999999997, + "28": -34.600000000000044, + "29": -29.650000000000013, + "30": -64.30000000000015, + "31": -43.50000000000005, + "32": -29.600000000000023, + "33": -18.999999999999993, + "34": -101.0, + "35": -21.499999999999957, + "36": -21.499999999999957, + "37": -8.699999999999983, + "38": -6.550000000000001, + "39": -20.74999999999996, + "40": -17.999999999999968, + "41": -64.0500000000001, + "42": -17.349999999999977, + "43": -17.099999999999973, + "44": -14.899999999999965, + "45": -10.499999999999995, + "46": -13.849999999999985, + "47": -54.05000000000008, + "48": -16.79999999999998, + "49": -16.849999999999973, + "50": -61.650000000000155, + "51": -15.699999999999987, + "52": -47.80000000000007, + "53": -75.5, + "54": -25.049999999999944, + "55": -95.6, + "56": -7.65, + "57": -3.150000000000033, + "58": -16.649999999999977, + "59": -15.199999999999985, + "60": -17.099999999999977, + "61": -1.149999999999972, + "62": -93.65, + "63": -20.349999999999962, + "64": -7.749999999999991, + "65": -21.049999999999958, + "66": -23.19999999999995, + "67": -40.60000000000015, + "68": -18.699999999999967, + "69": -76.6999999999999, + "70": 5.15000000000003, + "71": -14.299999999999981, + "72": -8.399999999999997, + "73": -23.29999999999995, + "74": -21.550000000000004, + "75": -11.699999999999982, + "76": -66.05000000000005, + "77": -93.85, + "78": -15.749999999999982, + "79": -101.05000000000001, + "80": -11.600000000000007, + "81": -85.0000000000001, + "82": -6.999999999999995, + "83": 22.04999999999996, + "84": -47.15000000000007, + "85": -3.4999999999999805, + "86": -18.049999999999972, + "87": -97.4, + "88": -77.79999999999995, + "89": 9.00000000000001, + "90": -15.049999999999983, + "91": -4.350000000000004, + "92": -21.499999999999954, + "93": -3.6999999999999797, + "94": -39.69999999999998, + "95": -57.45000000000009, + "96": -17.349999999999973, + "97": -7.249999999999995, + "98": -14.199999999999978, + "99": -11.699999999999987, + "100": 2.5000000000000444, + "101": -12.649999999999984, + "102": -3.750000000000001, + "103": -20.349999999999962, + "104": -90.05, + "105": -18.299999999999972, + "106": -0.9000000000000015, + "107": -57.05, + "108": -2.399999999999965, + "109": -49.15000000000007, + "110": -20.49999999999996, + "111": -8.749999999999996, + "112": -79.10000000000001, + "113": -17.14999999999997, + "114": -3.0499999999999785, + "115": -64.35, + "116": -47.39999999999996, + "117": -10.999999999999996, + "118": -12.199999999999989, + "119": -16.89999999999998, + "120": -64.85000000000001, + "121": -6.749999999999996, + "122": 7.750000000000069, + "123": 13.75, + "124": -3.0999999999999863, + "125": -27.09999999999994, + "126": -16.649999999999977, + "127": 19.349999999999955, + "128": -49.350000000000044, + "129": -21.2, + "130": -39.49999999999999, + "131": -74.44999999999999, + "132": -5.449999999999989, + "133": -0.3499999999999986, + "134": -14.499999999999979, + "135": -21.699999999999953, + "136": -1.7499999999999736, + "137": -12.149999999999993, + "138": 23.949999999999946, + "139": -48.3, + "140": -11.49999999999999, + "141": -43.150000000000006, + "142": -11.04999999999999, + "143": -18.09999999999997, + "144": -11.1, + "145": 19.249999999999986, + "146": -90.4, + "147": 35.69999999999979, + "148": -78.85, + "149": -39.95000000000009, + "150": -6.799999999999987, + "151": -10.35, + "152": 16.45000000000007, + "153": 8.500000000000078, + "154": -18.199999999999967, + "155": -1.0999999999999819, + "156": 12.350000000000023, + "157": -36.69999999999998, + "158": 14.750000000000039, + "159": -13.999999999999991, + "160": -2.399999999999996, + "161": 14.250000000000043, + "162": -80.15000000000002, + "163": -19.499999999999964, + "164": 18.00000000000006, + "165": -41.499999999999964, + "166": 6.550000000000042, + "167": 5.700000000000033, + "168": -15.95000000000001, + "169": -10.549999999999978, + "170": -89.14999999999996, + "171": -0.2999999999999714, + "172": -17.70000000000004, + "173": -9.450000000000001, + "174": 14.849999999999959, + "175": -90.44999999999999, + "176": -11.799999999999978, + "177": -56.5, + "178": -13.249999999999984, + "179": -55.35, + "180": -17.699999999999974, + "181": -17.85000000000002, + "182": -7.799999999999989, + "183": -49.900000000000006, + "184": 27.400000000000055, + "185": 31.449999999999942, + "186": -49.59999999999996, + "187": 16.20000000000001, + "188": 2.5500000000000336, + "189": 27.44999999999993, + "190": -3.049999999999991, + "191": -60.84999999999995, + "192": 5.850000000000024, + "193": -7.199999999999984, + "194": -48.800000000000004, + "195": -69.60000000000004, + "196": 25.200000000000067, + "197": -37.649999999999956, + "198": -64.1500000000001, + "199": -48.59999999999997, + "200": -71.94999999999993, + "201": -18.249999999999968, + "202": -14.450000000000003, + "203": 4.750000000000047, + "204": 30.049999999999923, + "205": -5.549999999999984, + "206": -32.64999999999997, + "207": 16.450000000000045, + "208": -46.25, + "209": 11.549999999999937, + "210": 15.100000000000076, + "211": 23.450000000000063, + "212": -6.50000000000001, + "213": -35.00000000000002, + "214": 16.199999999999992, + "215": 46.099999999999845, + "216": -11.49999999999999, + "217": 5.550000000000029, + "218": 23.749999999999908, + "219": -56.75000000000003, + "220": 2.400000000000005, + "221": -9.299999999999951, + "222": 83.19999999999989, + "223": 46.249999999999915, + "224": 16.449999999999932, + "225": 34.49999999999993, + "226": -86.15, + "227": -8.049999999999992, + "228": -39.1, + "229": 15.749999999999899, + "230": -53.80000000000006, + "231": -24.649999999999956, + "232": 6.149999999999947, + "233": -27.50000000000003, + "234": 10.249999999999982, + "235": -9.850000000000056, + "236": -49.05, + "237": -25.099999999999987, + "238": 1.4500000000000328, + "239": 44.749999999999794, + "240": -23.800000000000022, + "241": 49.34999999999976, + "242": 26.250000000000018, + "243": 12.250000000000032, + "244": -5.773159728050814e-15, + "245": -15.94999999999996, + "246": 5.600000000000033, + "247": -12.049999999999978, + "248": 36.699999999999775, + "249": 27.94999999999998, + "250": -0.34999999999997033, + "251": -46.449999999999996, + "252": -21.749999999999957, + "253": 35.649999999999984, + "254": 47.79999999999981, + "255": 2.3000000000000114, + "256": 49.75000000000003, + "257": 48.54999999999982, + "258": 18.55000000000003, + "259": 25.85000000000007, + "260": -0.9500000000000135, + "261": 35.8999999999999, + "262": 62.64999999999988, + "263": -6.200000000000021, + "264": 41.94999999999994, + "265": 49.94999999999991, + "266": 49.49999999999995, + "267": -13.349999999999987, + "268": 67.94999999999983, + "269": 41.39999999999988, + "270": 15.000000000000068, + "271": -47.39999999999999, + "272": -82.35, + "273": 13.600000000000065, + "274": 43.84999999999982, + "275": 36.19999999999991, + "276": 39.64999999999994, + "277": 40.99999999999974, + "278": 11.800000000000047, + "279": 32.94999999999998, + "280": 81.80000000000007, + "281": 58.499999999999936, + "282": -15.399999999999983, + "283": 8.40000000000001, + "284": 30.95, + "285": 14.400000000000006, + "286": -10.149999999999995, + "287": 44.84999999999989, + "288": 49.5999999999999, + "289": 69.59999999999988, + "290": 63.049999999999784, + "291": 86.50000000000001, + "292": 47.64999999999981, + "293": 71.1499999999998, + "294": -7.049999999999991, + "295": 47.34999999999976, + "296": 102.65000000000008, + "297": 66.04999999999983, + "298": 63.899999999999935, + "299": 1.5000000000000955, + "300": 24.95000000000004, + "301": 54.74999999999998, + "302": -13.150000000000004, + "303": 52.64999999999996, + "304": 40.2999999999998, + "305": 83.10000000000001, + "306": -0.29999999999999305, + "307": -7.599999999999988, + "308": 58.74999999999989, + "309": 47.24999999999983, + "310": 70.59999999999985, + "311": 26.299999999999976, + "312": 38.4999999999999, + "313": 0.2999999999999834, + "314": 41.84999999999984, + "315": 91.40000000000015, + "316": -50.15000000000002, + "317": 56.24999999999983, + "318": 38.24999999999996, + "319": 5.849999999999965, + "320": 32.30000000000001, + "321": 47.35000000000001, + "322": 58.45000000000001, + "323": 11.04999999999999, + "324": -0.04999999999999771, + "325": 53.2999999999998, + "326": 84.10000000000014, + "327": 18.20000000000004, + "328": 68.14999999999982, + "329": 96.35000000000022, + "330": 64.09999999999994, + "331": 56.850000000000044, + "332": 95.80000000000014, + "333": 64.24999999999976, + "334": 13.299999999999962, + "335": 78.4499999999999, + "336": 55.099999999999945, + "337": 93.25, + "338": -9.449999999999983, + "339": 46.64999999999997, + "340": 82.04999999999998, + "341": 41.94999999999985, + "342": 94.45000000000003, + "343": 28.599999999999973, + "344": -11.29999999999999, + "345": 83.59999999999975, + "346": 12.250000000000037, + "347": 43.54999999999998, + "348": 85.2000000000001, + "349": 46.2999999999999, + "350": 48.49999999999998, + "351": 75.39999999999988, + "352": -18.69999999999997, + "353": 55.399999999999935, + "354": 97.35000000000015, + "355": 29.99999999999998, + "356": 87.15000000000005, + "357": 103.3500000000002, + "358": 16.800000000000047, + "359": 88.55000000000007, + "360": 36.15, + "361": 11.800000000000036, + "362": 58.44999999999989, + "363": 69.04999999999995, + "364": 20.099999999999994, + "365": 44.09999999999997, + "366": 82.40000000000019, + "367": 99.25000000000024, + "368": 74.4, + "369": 71.5000000000001, + "370": 105.35000000000024, + "371": 99.60000000000014, + "372": 66.64999999999998, + "373": 84.60000000000004, + "374": 81.05000000000011, + "375": 80.60000000000004, + "376": 59.999999999999915, + "377": 48.59999999999975, + "378": 63.6999999999998, + "379": 83.6, + "380": 82.09999999999994, + "381": -15.900000000000022, + "382": 59.14999999999999, + "383": 38.09999999999995, + "384": 98.75000000000016, + "385": 15.499999999999963, + "386": 102.85000000000022, + "387": 55.10000000000002, + "388": 68.54999999999988, + "389": 38.649999999999864, + "390": 105.55000000000022, + "391": 58.999999999999915, + "392": 67.6999999999999, + "393": 57.949999999999946, + "394": 94.20000000000017, + "395": 104.05000000000017, + "396": 96.35000000000018, + "397": 51.54999999999997, + "398": 105.35000000000015, + "399": 1.1499999999999722, + "400": 79.45000000000003, + "401": 101.05000000000004, + "402": 100.25000000000023, + "403": 76.55000000000001, + "404": 109.10000000000022, + "405": 65.04999999999995, + "406": 23.99999999999995, + "407": 52.29999999999998, + "408": 63.89999999999994, + "409": 97.10000000000015, + "410": 96.30000000000014, + "411": 54.949999999999825, + "412": 102.79999999999993, + "413": 60.199999999999996, + "414": 112.80000000000018, + "415": 41.849999999999945, + "416": 101.45, + "417": 61.75000000000006, + "418": 95.55000000000017, + "419": 98.70000000000019, + "420": 27.899999999999984, + "421": 86.70000000000005, + "422": 54.19999999999976, + "423": 95.19999999999978, + "424": 104.40000000000023, + "425": 102.59999999999984, + "426": 31.499999999999872, + "427": 12.299999999999995, + "428": 86.5000000000001, + "429": 22.599999999999987, + "430": 80.25000000000006, + "431": 101.30000000000011, + "432": 90.4999999999998, + "433": 98.25000000000006, + "434": 36.59999999999995, + "435": 56.649999999999906, + "436": 3.4499999999999584, + "437": -12.400000000000013, + "438": 80.20000000000003, + "439": 78.24999999999987, + "440": 85.50000000000007, + "441": 69.74999999999997, + "442": 108.8000000000003, + "443": 97.45000000000016, + "444": 90.2000000000002, + "445": 92.35000000000018, + "446": 50.95000000000005, + "447": 91.25000000000017, + "448": 82.90000000000016, + "449": 102.20000000000023, + "450": 59.39999999999996, + "451": 95.95000000000019, + "452": 29.04999999999998, + "453": 90.85000000000004, + "454": 78.85000000000001, + "455": 65.79999999999993, + "456": 52.50000000000005, + "457": 105.95000000000009, + "458": 91.10000000000024, + "459": 72.14999999999995, + "460": 97.20000000000013, + "461": 95.50000000000003, + "462": 102.59999999999997, + "463": 84.1499999999998, + "464": 35.199999999999925, + "465": 92.90000000000018, + "466": 60.79999999999991, + "467": 55.84999999999985, + "468": 81.05000000000011, + "469": 70.69999999999986, + "470": 100.45000000000017, + "471": 74.04999999999991, + "472": 104.45000000000017, + "473": 62.149999999999984, + "474": 54.949999999999996, + "475": 93.70000000000016, + "476": 100.90000000000025, + "477": 17.750000000000092, + "478": 59.64999999999989, + "479": 73.59999999999997, + "480": 65.99999999999987, + "481": 38.74999999999993, + "482": 102.6500000000002, + "483": 46.249999999999886, + "484": 63.749999999999936, + "485": 55.399999999999956, + "486": 109.40000000000022, + "487": 29.250000000000014, + "488": 58.700000000000045, + "489": 104.35000000000022, + "490": 59.49999999999989, + "491": 101.25000000000007, + "492": 53.249999999999915, + "493": 53.24999999999991, + "494": 79.4000000000001, + "495": 88.95000000000007, + "496": 20.14999999999995, + "497": 88.15000000000012, + "498": 66.89999999999999, + "499": 97.7000000000002, + "500": 94.10000000000011, + "501": 105.90000000000026, + "502": 41.849999999999945, + "503": 51.449999999999925, + "504": 50.84999999999991, + "505": 105.50000000000021, + "506": 67.54999999999993, + "507": 103.3500000000002, + "508": 97.4500000000002, + "509": 61.2000000000001, + "510": 69.74999999999993, + "511": 70.64999999999992, + "512": 96.05000000000014, + "513": 53.84999999999992, + "514": 63.29999999999977, + "515": -5.150000000000013, + "516": 102.50000000000018, + "517": 73.14999999999993, + "518": 74.95000000000002, + "519": 101.80000000000008, + "520": 102.05000000000004, + "521": 32.34999999999997, + "522": 47.699999999999946, + "523": 47.24999999999991, + "524": 59.1999999999999, + "525": 51.69999999999993, + "526": 38.35000000000001, + "527": 58.29999999999991, + "528": 28.94999999999998, + "529": 42.69999999999996, + "530": 34.19999999999997, + "531": 66.7999999999999, + "532": 105.80000000000021, + "533": 112.15000000000025, + "534": 103.3000000000002, + "535": 108.55000000000024, + "536": 80.05000000000005, + "537": 72.74999999999999, + "538": 54.64999999999994, + "539": 96.65000000000012, + "540": 63.64999999999992, + "541": 44.54999999999993, + "542": 104.45000000000023, + "543": 28.499999999999957, + "544": 82.9, + "545": 75.54999999999997, + "546": 96.45000000000013, + "547": 93.70000000000014, + "548": 97.45000000000013, + "549": 34.199999999999996, + "550": 112.20000000000017, + "551": 50.54999999999987, + "552": 108.80000000000024, + "553": 91.20000000000006, + "554": 4.450000000000015, + "555": 101.75000000000018, + "556": 53.84999999999991, + "557": 75.0, + "558": 100.8000000000002, + "559": 23.44999999999999, + "560": 12.899999999999986, + "561": 40.34999999999995, + "562": 95.30000000000011, + "563": 84.00000000000014, + "564": 96.35000000000014, + "565": 97.75000000000014, + "566": 97.79999999999995, + "567": 81.44999999999987, + "568": 94.65, + "569": 59.7499999999999, + "570": 71.39999999999993, + "571": 22.75, + "572": -5.800000000000004, + "573": 36.89999999999998, + "574": 63.29999999999989, + "575": 22.34999999999997, + "576": 70.19999999999992, + "577": 81.7499999999999, + "578": 61.94999999999994, + "579": 106.95000000000016, + "580": 29.20000000000001, + "581": 55.499999999999936, + "582": 79.25000000000004, + "583": 36.849999999999916, + "584": 32.69999999999993, + "585": 4.449999999999999, + "586": 38.7499999999999, + "587": 51.69999999999991, + "588": -0.6000000000000152, + "589": 60.84999999999991, + "590": 51.749999999999886, + "591": 66.49999999999993, + "592": 94.25000000000007, + "593": 91.25000000000014, + "594": 96.19999999999993, + "595": 64.29999999999988, + "596": 104.9000000000002, + "597": 59.299999999999955, + "598": 80.25, + "599": 68.84999999999981, + "600": 101.30000000000014, + "601": 98.95000000000012, + "602": 101.20000000000014, + "603": 93.45000000000005, + "604": 43.89999999999987, + "605": 52.349999999999945, + "606": 101.3500000000002, + "607": 98.20000000000019, + "608": 99.45000000000022, + "609": 91.50000000000013, + "610": 22.7, + "611": 103.40000000000013, + "612": 101.95000000000016, + "613": 84.0500000000001, + "614": 92.95000000000012, + "615": 38.39999999999995, + "616": -16.799999999999983, + "617": 80.15000000000002, + "618": 93.05000000000014, + "619": 98.45000000000016, + "620": 100.30000000000017, + "621": 95.14999999999998, + "622": 69.69999999999993, + "623": 60.04999999999989, + "624": 98.75000000000018, + "625": 108.40000000000026, + "626": 103.45000000000017, + "627": 89.34999999999988, + "628": 92.7000000000001, + "629": 19.199999999999925, + "630": 100.40000000000019, + "631": 89.89999999999999, + "632": 87.00000000000013, + "633": 102.20000000000017, + "634": 54.24999999999986, + "635": 41.19999999999994, + "636": 25.700000000000006, + "637": 79.35000000000005, + "638": 109.90000000000006, + "639": 103.00000000000016, + "640": 83.40000000000008, + "641": 110.35000000000025, + "642": 8.400000000000011, + "643": 88.65000000000009, + "644": 108.50000000000023, + "645": 109.2500000000002, + "646": 28.749999999999982, + "647": 71.59999999999991, + "648": 103.80000000000018, + "649": 115.35000000000026, + "650": 91.30000000000011, + "651": 62.799999999999926, + "652": 102.5000000000002, + "653": 100.7500000000001, + "654": 24.099999999999888, + "655": 107.95000000000019, + "656": 61.89999999999989, + "657": 105.65000000000018, + "658": 106.8000000000002, + "659": 104.90000000000023, + "660": 92.70000000000013, + "661": 101.45000000000024, + "662": 70.69999999999997, + "663": 24.700000000000003, + "664": 88.95000000000003, + "665": 91.95000000000012, + "666": 15.100000000000007, + "667": 52.64999999999994, + "668": 103.85000000000014, + "669": 56.999999999999936, + "670": 37.09999999999996, + "671": 101.85000000000021, + "672": 100.30000000000014, + "673": 100.15000000000013, + "674": 71.89999999999995, + "675": 77.95000000000006, + "676": 103.20000000000019, + "677": -4.400000000000001, + "678": 73.95, + "679": 68.2999999999999, + "680": 102.7000000000002, + "681": 106.95000000000019, + "682": 109.4500000000001, + "683": 74.64999999999996, + "684": 113.95000000000024, + "685": 102.95000000000017, + "686": 100.69999999999996, + "687": 90.15000000000008, + "688": 102.20000000000019, + "689": 78.3, + "690": 51.59999999999995, + "691": 76.60000000000001, + "692": 105.4000000000001, + "693": 77.90000000000003, + "694": 54.34999999999986, + "695": 108.60000000000022, + "696": 65.49999999999993, + "697": 45.899999999999956, + "698": 101.00000000000016, + "699": 105.85000000000022, + "700": 108.15000000000025, + "701": 35.54999999999997, + "702": 13.60000000000002, + "703": 112.25000000000024, + "704": 88.1, + "705": 102.3500000000002, + "706": 107.4500000000002, + "707": 36.5999999999999, + "708": 35.34999999999992, + "709": 63.49999999999995, + "710": 50.199999999999946, + "711": 108.15000000000015, + "712": 49.24999999999996, + "713": 47.39999999999993, + "714": 87.30000000000008, + "715": 101.80000000000017, + "716": 104.0000000000002, + "717": 97.80000000000007, + "718": 105.10000000000024, + "719": 109.20000000000024, + "720": 99.25000000000023, + "721": 98.30000000000001, + "722": 57.199999999999946, + "723": -32.70000000000001, + "724": 23.69999999999999, + "725": 101.44999999999997, + "726": 70.14999999999998, + "727": 102.90000000000022, + "728": 102.10000000000011, + "729": 104.35000000000022, + "730": 36.10000000000001, + "731": 91.05000000000008, + "732": 79.79999999999995, + "733": 92.29999999999995, + "734": 30.250000000000036, + "735": 89.5499999999999, + "736": 65.69999999999995, + "737": 102.5000000000002, + "738": 76.39999999999999, + "739": 63.44999999999994, + "740": 46.549999999999955, + "741": 37.09999999999995, + "742": 106.40000000000013, + "743": 64.94999999999993, + "744": 83.25000000000004, + "745": 99.8000000000001, + "746": 56.99999999999983, + "747": 94.70000000000017, + "748": 50.199999999999946, + "749": 100.70000000000024, + "750": 105.55000000000021, + "751": 50.64999999999995, + "752": 18.3, + "753": 36.55, + "754": 78.45000000000003, + "755": 18.149999999999995, + "756": 60.099999999999966, + "757": 82.99999999999997, + "758": 98.75000000000007, + "759": 51.099999999999945, + "760": 98.75000000000017, + "761": 42.049999999999955, + "762": 110.5500000000003, + "763": 105.80000000000021, + "764": 92.55000000000001, + "765": 101.35000000000015, + "766": 60.899999999999935, + "767": 10.500000000000057, + "768": 8.450000000000008, + "769": 110.70000000000024, + "770": 60.09999999999993, + "771": 51.69999999999993, + "772": 28.699999999999974, + "773": 110.35000000000022, + "774": 107.55000000000024, + "775": 62.44999999999991, + "776": 94.85000000000012, + "777": 73.54999999999998, + "778": 17.700000000000067, + "779": 109.95000000000007, + "780": 19.799999999999972, + "781": 35.35000000000003, + "782": 105.30000000000024, + "783": 75.94999999999999, + "784": 34.59999999999997, + "785": 88.55000000000004, + "786": 57.64999999999992, + "787": 34.850000000000115, + "788": 59.749999999999794, + "789": 67.45, + "790": 66.25, + "791": 55.449999999999925, + "792": 99.69999999999993, + "793": 80.75000000000009, + "794": 36.849999999999945, + "795": 62.74999999999996, + "796": 82.40000000000008, + "797": 88.10000000000005, + "798": 67.79999999999998, + "799": 58.04999999999991, + "800": 96.19999999999999, + "801": 49.09999999999993, + "802": 58.85000000000005, + "803": 101.30000000000005, + "804": 83.24999999999996, + "805": 58.04999999999985, + "806": 97.40000000000013, + "807": 60.15000000000003, + "808": -56.99999999999997, + "809": 99.75000000000014, + "810": 94.50000000000017, + "811": 95.45000000000016, + "812": 99.60000000000007, + "813": 100.25000000000016, + "814": 93.60000000000012, + "815": 93.95000000000016, + "816": 62.64999999999991, + "817": 58.64999999999985, + "818": 28.59999999999999, + "819": 82.50000000000004, + "820": 84.30000000000005, + "821": 75.60000000000001, + "822": 90.90000000000005, + "823": 95.15000000000015, + "824": 92.60000000000016, + "825": 78.80000000000008, + "826": 30.89999999999997, + "827": 93.09999999999997, + "828": 87.70000000000007, + "829": 105.30000000000027, + "830": 107.85000000000022, + "831": 94.24999999999984, + "832": 76.39999999999998, + "833": 96.20000000000017, + "834": 10.149999999999993, + "835": 94.25000000000001, + "836": 94.1500000000001, + "837": 69.84999999999997, + "838": 37.799999999999955, + "839": 101.1000000000002, + "840": 17.549999999999983, + "841": 78.10000000000001, + "842": 83.4999999999998, + "843": 79.54999999999986, + "844": 32.15, + "845": 51.249999999999915, + "846": 78.75000000000003, + "847": 91.60000000000011, + "848": 80.65000000000008, + "849": 88.9000000000001, + "850": 73.89999999999996, + "851": 109.00000000000018, + "852": 91.94999999999992, + "853": 107.10000000000028, + "854": 90.10000000000014, + "855": 88.9500000000001, + "856": 62.399999999999935, + "857": 61.299999999999905, + "858": 58.099999999999824, + "859": 99.55000000000021, + "860": 98.74999999999979, + "861": 106.45000000000005, + "862": 28.99999999999993, + "863": 59.599999999999866, + "864": -28.099999999999998, + "865": 73.35000000000002, + "866": 94.64999999999974, + "867": 52.94999999999982, + "868": 73.04999999999986, + "869": 82.5, + "870": 88.90000000000008, + "871": 104.40000000000013, + "872": 84.2, + "873": 7.800000000000001, + "874": 55.79999999999995, + "875": 88.45000000000012, + "876": -12.30000000000002, + "877": 48.399999999999885, + "878": 81.39999999999979, + "879": 102.65000000000012, + "880": 72.39999999999986, + "881": 92.04999999999976, + "882": 29.199999999999967, + "883": 98.70000000000014, + "884": 23.949999999999985, + "885": 10.499999999999943, + "886": 73.0, + "887": 67.35000000000001, + "888": 63.29999999999993, + "889": 106.95000000000012, + "890": 47.49999999999989, + "891": 66.39999999999988, + "892": 78.29999999999978, + "893": 96.19999999999997, + "894": 98.85000000000016, + "895": 44.44999999999992, + "896": 103.10000000000024, + "897": 97.55000000000008, + "898": 30.54999999999996, + "899": 88.09999999999991, + "900": 77.29999999999995, + "901": 94.39999999999988, + "902": 6.749999999999973, + "903": 64.29999999999995, + "904": 91.94999999999978, + "905": 10.450000000000053, + "906": 72.39999999999985, + "907": 96.35000000000005, + "908": 97.50000000000006, + "909": 60.69999999999993, + "910": -19.55, + "911": 80.24999999999983, + "912": 43.44999999999997, + "913": 82.79999999999981, + "914": 46.99999999999979, + "915": 92.09999999999978, + "916": 77.7999999999999, + "917": 98.40000000000003, + "918": 98.70000000000009, + "919": 62.74999999999975, + "920": 49.949999999999754, + "921": 21.599999999999998, + "922": 80.09999999999981, + "923": 70.69999999999979, + "924": 86.4000000000001, + "925": 95.00000000000009, + "926": 68.14999999999975, + "927": 63.04999999999991, + "928": 102.95000000000005, + "929": 78.94999999999983, + "930": 36.20000000000001, + "931": 73.89999999999999, + "932": 49.39999999999978, + "933": 77.75000000000007, + "934": 80.99999999999997, + "935": 77.85000000000004, + "936": 101.80000000000021, + "937": 69.29999999999987, + "938": 67.29999999999994, + "939": 90.7999999999999, + "940": 99.30000000000014, + "941": 40.79999999999979, + "942": 63.2499999999999, + "943": 96.79999999999977, + "944": 99.85000000000015, + "945": 62.499999999999886, + "946": 98.1000000000001, + "947": 87.44999999999999, + "948": 101.54999999999977, + "949": 81.39999999999984, + "950": 53.09999999999992, + "951": 80.09999999999975, + "952": 94.94999999999978, + "953": 92.14999999999978, + "954": 97.79999999999974, + "955": 87.79999999999983, + "956": 96.94999999999972, + "957": 94.20000000000003, + "958": 70.79999999999978, + "959": 65.5499999999998, + "960": 100.24999999999979, + "961": 102.64999999999993, + "962": 89.14999999999975, + "963": 21.099999999999984, + "964": 69.24999999999987, + "965": 93.15000000000018, + "966": 22.149999999999956, + "967": 87.44999999999975, + "968": 69.29999999999981, + "969": 91.24999999999977, + "970": 51.74999999999979, + "971": 78.74999999999993, + "972": 30.599999999999845, + "973": 94.5999999999999, + "974": 46.84999999999975, + "975": 64.99999999999977, + "976": 53.299999999999756, + "977": 87.60000000000004, + "978": 92.59999999999972, + "979": 93.34999999999977, + "980": 48.94999999999978, + "981": 97.70000000000009, + "982": 97.14999999999975, + "983": 48.74999999999975, + "984": 91.74999999999982, + "985": 101.14999999999986, + "986": 81.0499999999998, + "987": 63.1999999999999, + "988": 106.24999999999982, + "989": 66.89999999999992, + "990": 74.19999999999976, + "991": 92.29999999999974, + "992": 91.79999999999977, + "993": 81.50000000000001, + "994": 88.85000000000001, + "995": 99.09999999999972, + "996": 108.34999999999977, + "997": 54.049999999999926, + "998": 44.44999999999992, + "999": 101.74999999999973, + "1000": -39.899999999999984 + } +} \ No newline at end of file diff --git a/benchmark/results/v3/v3.3.0/session_metadata/4.json b/benchmark/results/v3/v3.3.0/session_metadata/4.json new file mode 100644 index 00000000..cd4acfc0 --- /dev/null +++ b/benchmark/results/v3/v3.3.0/session_metadata/4.json @@ -0,0 +1,1009 @@ +{ + "total_episodes": 1001, + "total_time_steps": 128000, + "total_s": 1435.848728, + "s_per_step": 0.044870272749999995, + "s_per_100_steps_10_nodes": 4.487027275, + "total_reward_per_episode": { + "1": -53.10000000000009, + "2": -17.299999999999972, + "3": -51.25000000000008, + "4": -48.30000000000006, + "5": -29.899999999999956, + "6": -23.449999999999964, + "7": -16.149999999999984, + "8": -38.750000000000036, + "9": -22.449999999999953, + "10": -48.40000000000015, + "11": -27.99999999999999, + "12": -7.199999999999988, + "13": -31.100000000000016, + "14": -25.95000000000002, + "15": -12.349999999999994, + "16": -17.799999999999976, + "17": -98.6, + "18": -43.65000000000011, + "19": -21.449999999999957, + "20": -52.95000000000008, + "21": -66.30000000000008, + "22": -39.55000000000012, + "23": -42.600000000000044, + "24": -81.64999999999998, + "25": -21.999999999999954, + "26": -15.499999999999979, + "27": -63.50000000000011, + "28": -20.249999999999982, + "29": -20.799999999999958, + "30": -13.249999999999982, + "31": -18.34999999999997, + "32": -53.20000000000015, + "33": -7.799999999999997, + "34": 5.850000000000034, + "35": -0.6999999999999571, + "36": -6.050000000000013, + "37": -20.19999999999996, + "38": -20.54999999999996, + "39": -13.349999999999985, + "40": -7.3499999999999925, + "41": -66.85000000000004, + "42": 8.750000000000043, + "43": -27.30000000000002, + "44": -12.34999999999999, + "45": -18.499999999999964, + "46": -33.24999999999999, + "47": -86.95, + "48": -16.8, + "49": -64.25000000000006, + "50": 3.5000000000000275, + "51": -7.499999999999999, + "52": -15.299999999999978, + "53": -23.94999999999995, + "54": -34.59999999999999, + "55": -11.35000000000001, + "56": -10.599999999999987, + "57": -31.75000000000003, + "58": -107.1, + "59": -30.550000000000022, + "60": -50.90000000000005, + "61": -103.75, + "62": -27.749999999999936, + "63": -13.699999999999983, + "64": 4.0500000000000576, + "65": -80.45000000000002, + "66": -18.549999999999965, + "67": -55.40000000000009, + "68": 21.0, + "69": 0.10000000000001108, + "70": -85.60000000000002, + "71": -67.35000000000008, + "72": -48.90000000000001, + "73": -13.649999999999986, + "74": -47.75000000000005, + "75": -15.749999999999979, + "76": -45.75000000000005, + "77": -63.7000000000001, + "78": -12.949999999999987, + "79": 21.599999999999916, + "80": -100.49999999999999, + "81": -56.700000000000095, + "82": -4.249999999999967, + "83": -19.099999999999966, + "84": -46.19999999999993, + "85": -21.299999999999965, + "86": 10.850000000000058, + "87": -17.94999999999997, + "88": -93.25, + "89": 11.400000000000013, + "90": -90.45, + "91": -19.299999999999965, + "92": -23.29999999999995, + "93": -60.950000000000095, + "94": -19.999999999999964, + "95": -16.699999999999974, + "96": -16.49999999999998, + "97": -18.24999999999997, + "98": -61.20000000000009, + "99": -86.45000000000002, + "100": -14.000000000000007, + "101": -7.049999999999984, + "102": -18.199999999999967, + "103": -28.550000000000004, + "104": -10.149999999999991, + "105": 5.500000000000013, + "106": -36.200000000000045, + "107": 31.4499999999998, + "108": -14.249999999999984, + "109": -69.05000000000005, + "110": 13.29999999999998, + "111": -81.05, + "112": 5.85000000000002, + "113": 2.7500000000000577, + "114": 2.05000000000003, + "115": 4.0500000000000504, + "116": -10.849999999999996, + "117": -90.05000000000001, + "118": -17.00000000000003, + "119": 4.550000000000038, + "120": -9.449999999999985, + "121": -11.75000000000004, + "122": -10.299999999999981, + "123": -18.949999999999967, + "124": 13.150000000000013, + "125": -63.050000000000104, + "126": -14.649999999999984, + "127": -22.59999999999995, + "128": 5.7499999999999005, + "129": 27.45000000000002, + "130": 5.699999999999998, + "131": -14.199999999999964, + "132": 25.299999999999972, + "133": -45.70000000000005, + "134": -5.649999999999976, + "135": -18.100000000000044, + "136": -13.150000000000006, + "137": 4.9499999999999655, + "138": 35.549999999999876, + "139": -3.3000000000001, + "140": 14.70000000000002, + "141": -9.150000000000004, + "142": -44.44999999999999, + "143": -14.649999999999977, + "144": -67.49999999999997, + "145": -67.69999999999997, + "146": -81.55000000000001, + "147": -34.65000000000004, + "148": 12.049999999999867, + "149": -7.5999999999999845, + "150": -8.249999999999984, + "151": 24.850000000000065, + "152": -15.649999999999979, + "153": 3.350000000000044, + "154": 40.74999999999999, + "155": -46.250000000000014, + "156": -6.149999999999986, + "157": 37.29999999999989, + "158": -15.699999999999973, + "159": -10.100000000000007, + "160": 7.750000000000041, + "161": 7.600000000000026, + "162": -13.49999999999997, + "163": -26.54999999999995, + "164": 30.449999999999932, + "165": -87.79999999999998, + "166": -68.70000000000002, + "167": -13.14999999999999, + "168": -7.299999999999983, + "169": 38.149999999999814, + "170": -79.34999999999998, + "171": -17.149999999999956, + "172": -16.649999999999974, + "173": 19.750000000000025, + "174": -63.00000000000011, + "175": 62.44999999999998, + "176": -0.44999999999996, + "177": -22.899999999999984, + "178": -7.2999999999999865, + "179": -94.5, + "180": -33.549999999999955, + "181": -94.2, + "182": -2.7499999999999885, + "183": -8.149999999999988, + "184": 5.450000000000016, + "185": 5.150000000000009, + "186": -4.550000000000033, + "187": 26.00000000000004, + "188": -38.09999999999999, + "189": -71.90000000000003, + "190": -73.1, + "191": 21.55000000000002, + "192": -31.149999999999963, + "193": -81.7, + "194": 50.449999999999854, + "195": -13.750000000000012, + "196": -41.70000000000003, + "197": -56.850000000000094, + "198": -5.399999999999981, + "199": 57.49999999999982, + "200": -52.40000000000001, + "201": -37.000000000000064, + "202": -73.34999999999994, + "203": 16.79999999999994, + "204": 44.499999999999744, + "205": 14.450000000000077, + "206": 48.34999999999985, + "207": 71.29999999999991, + "208": 23.250000000000014, + "209": -21.499999999999957, + "210": -21.34999999999996, + "211": 22.599999999999966, + "212": 34.799999999999805, + "213": 67.64999999999989, + "214": 73.19999999999978, + "215": -70.24999999999999, + "216": -48.74999999999998, + "217": -37.49999999999997, + "218": 82.90000000000016, + "219": -75.79999999999998, + "220": -89.75, + "221": 61.34999999999975, + "222": 30.749999999999762, + "223": -65.69999999999993, + "224": 20.500000000000025, + "225": 19.40000000000006, + "226": 14.349999999999914, + "227": 25.150000000000055, + "228": -50.04999999999994, + "229": 28.75000000000007, + "230": 51.749999999999815, + "231": 71.89999999999988, + "232": 73.29999999999981, + "233": -10.599999999999962, + "234": 69.34999999999987, + "235": -10.749999999999964, + "236": 44.24999999999973, + "237": 31.649999999999945, + "238": -16.09999999999998, + "239": -20.59999999999999, + "240": 21.25000000000007, + "241": 0.600000000000027, + "242": -2.7999999999999785, + "243": 38.84999999999985, + "244": 6.450000000000021, + "245": -63.199999999999974, + "246": 58.8999999999998, + "247": 38.30000000000006, + "248": 92.59999999999974, + "249": -9.850000000000032, + "250": -57.20000000000011, + "251": 57.74999999999977, + "252": 83.04999999999974, + "253": 64.39999999999992, + "254": -10.049999999999992, + "255": -57.05000000000007, + "256": 30.000000000000007, + "257": -0.8999999999999915, + "258": 21.20000000000008, + "259": 55.5999999999998, + "260": 83.64999999999976, + "261": 21.499999999999982, + "262": 32.65000000000008, + "263": -84.10000000000001, + "264": 98.24999999999974, + "265": 48.29999999999984, + "266": 60.7999999999999, + "267": 87.09999999999975, + "268": 33.10000000000005, + "269": -48.59999999999994, + "270": 78.24999999999987, + "271": 60.6499999999999, + "272": 34.199999999999896, + "273": 77.79999999999973, + "274": 26.800000000000033, + "275": -12.200000000000014, + "276": 88.24999999999977, + "277": 9.700000000000067, + "278": 101.29999999999971, + "279": 64.9999999999998, + "280": 17.199999999999896, + "281": 95.39999999999976, + "282": 84.74999999999977, + "283": 71.14999999999989, + "284": 34.29999999999986, + "285": 36.90000000000001, + "286": 61.74999999999984, + "287": 99.34999999999972, + "288": 86.09999999999981, + "289": 74.09999999999977, + "290": 74.9499999999998, + "291": 63.29999999999985, + "292": 80.34999999999977, + "293": 24.899999999999956, + "294": 82.44999999999978, + "295": -32.3, + "296": 77.89999999999985, + "297": -12.899999999999988, + "298": 54.99999999999979, + "299": 50.74999999999978, + "300": 77.74999999999984, + "301": 82.19999999999979, + "302": 98.29999999999978, + "303": 38.049999999999976, + "304": 78.04999999999977, + "305": -23.89999999999995, + "306": 85.59999999999984, + "307": 9.450000000000026, + "308": 39.24999999999997, + "309": 61.19999999999976, + "310": 49.149999999999764, + "311": 89.84999999999982, + "312": 11.500000000000043, + "313": 85.79999999999976, + "314": 54.1499999999998, + "315": 93.39999999999976, + "316": 91.59999999999977, + "317": 99.94999999999978, + "318": 80.19999999999978, + "319": 99.44999999999976, + "320": -71.65000000000002, + "321": 87.69999999999978, + "322": 94.69999999999979, + "323": 92.19999999999979, + "324": 77.49999999999987, + "325": 68.59999999999977, + "326": 99.74999999999976, + "327": 82.59999999999982, + "328": 94.94999999999973, + "329": 88.49999999999979, + "330": 85.94999999999976, + "331": 28.299999999999844, + "332": 85.24999999999977, + "333": 89.9499999999998, + "334": -50.50000000000008, + "335": 85.99999999999984, + "336": -1.0999999999999823, + "337": 92.64999999999978, + "338": 99.99999999999976, + "339": 29.99999999999981, + "340": 87.29999999999976, + "341": 81.7499999999998, + "342": 95.59999999999975, + "343": 91.99999999999974, + "344": 97.39999999999978, + "345": 96.09999999999978, + "346": 98.94999999999975, + "347": 99.6999999999998, + "348": 98.89999999999975, + "349": 84.34999999999975, + "350": 91.24999999999977, + "351": 83.09999999999978, + "352": 80.39999999999984, + "353": -86.1, + "354": 69.79999999999976, + "355": 82.64999999999972, + "356": 100.24999999999979, + "357": 91.74999999999977, + "358": 100.14999999999978, + "359": 88.5999999999998, + "360": 102.74999999999976, + "361": 21.94999999999991, + "362": 89.49999999999979, + "363": 95.79999999999976, + "364": 83.89999999999979, + "365": 83.2999999999998, + "366": 100.69999999999978, + "367": -84.44999999999999, + "368": 10.150000000000038, + "369": -11.899999999999991, + "370": 100.19999999999976, + "371": 102.44999999999973, + "372": 76.44999999999979, + "373": 101.89999999999976, + "374": 99.94999999999979, + "375": 8.650000000000025, + "376": 32.750000000000014, + "377": 82.79999999999984, + "378": 73.24999999999972, + "379": 103.49999999999976, + "380": 92.99999999999977, + "381": 103.09999999999977, + "382": 103.84999999999975, + "383": 96.04999999999974, + "384": 103.09999999999977, + "385": 95.09999999999977, + "386": 83.4999999999998, + "387": 103.39999999999976, + "388": -80.0, + "389": 90.1499999999998, + "390": 97.59999999999972, + "391": 83.09999999999978, + "392": 94.44999999999976, + "393": 100.39999999999976, + "394": 97.99999999999979, + "395": 90.99999999999982, + "396": 82.79999999999977, + "397": 99.09999999999977, + "398": 105.24999999999974, + "399": 65.94999999999976, + "400": 98.39999999999976, + "401": 103.09999999999977, + "402": 100.69999999999976, + "403": 98.74999999999976, + "404": -44.05000000000007, + "405": 91.44999999999976, + "406": 27.000000000000046, + "407": 98.64999999999976, + "408": 96.44999999999978, + "409": 104.99999999999983, + "410": 90.99999999999979, + "411": 101.9999999999998, + "412": 103.34999999999988, + "413": 98.29999999999974, + "414": 78.59999999999987, + "415": 99.34999999999987, + "416": 101.69999999999978, + "417": 77.8999999999998, + "418": 101.14999999999978, + "419": 103.09999999999977, + "420": 103.49999999999976, + "421": 100.69999999999978, + "422": 91.44999999999978, + "423": 100.54999999999977, + "424": -23.149999999999952, + "425": 99.79999999999976, + "426": -9.349999999999985, + "427": 106.89999999999979, + "428": 101.99999999999977, + "429": 84.2499999999998, + "430": 93.34999999999981, + "431": 104.69999999999982, + "432": 83.09999999999977, + "433": 59.49999999999984, + "434": 101.59999999999975, + "435": 98.99999999999977, + "436": 96.89999999999976, + "437": 105.84999999999984, + "438": 97.19999999999976, + "439": -11.799999999999985, + "440": 102.49999999999976, + "441": 98.44999999999979, + "442": 108.44999999999986, + "443": 103.54999999999977, + "444": 101.14999999999976, + "445": 104.74999999999976, + "446": 100.69999999999976, + "447": 87.79999999999976, + "448": 96.5499999999998, + "449": 75.94999999999978, + "450": 103.49999999999977, + "451": 84.84999999999974, + "452": 101.14999999999976, + "453": 23.049999999999898, + "454": 98.69999999999978, + "455": 102.39999999999978, + "456": 62.19999999999973, + "457": 102.74999999999976, + "458": 105.44999999999975, + "459": 65.6499999999999, + "460": -38.89999999999997, + "461": 62.44999999999979, + "462": 97.44999999999978, + "463": 102.69999999999976, + "464": 107.89999999999979, + "465": 103.59999999999977, + "466": 104.99999999999974, + "467": 103.04999999999977, + "468": 102.84999999999977, + "469": 104.79999999999974, + "470": 100.19999999999978, + "471": 104.59999999999977, + "472": 102.79999999999977, + "473": 104.94999999999975, + "474": -80.69999999999999, + "475": 102.34999999999977, + "476": -84.00000000000003, + "477": 96.09999999999975, + "478": 80.79999999999973, + "479": 102.24999999999977, + "480": 98.30000000000008, + "481": 103.39999999999975, + "482": 56.09999999999979, + "483": 103.54999999999977, + "484": 103.74999999999972, + "485": 67.74999999999976, + "486": 62.94999999999975, + "487": 101.99999999999977, + "488": 103.24999999999974, + "489": 104.49999999999974, + "490": 75.29999999999983, + "491": 72.84999999999977, + "492": 77.44999999999978, + "493": 102.69999999999978, + "494": 96.14999999999976, + "495": 94.8499999999998, + "496": 106.64999999999972, + "497": 80.89999999999989, + "498": 84.44999999999976, + "499": 101.94999999999976, + "500": 99.89999999999978, + "501": 105.89999999999974, + "502": -35.199999999999996, + "503": 106.69999999999973, + "504": 94.59999999999981, + "505": 101.49999999999977, + "506": 103.19999999999976, + "507": 103.99999999999972, + "508": 96.74999999999982, + "509": 97.8499999999998, + "510": 104.59999999999974, + "511": 102.74999999999977, + "512": 103.64999999999976, + "513": 100.39999999999975, + "514": 99.19999999999978, + "515": 71.64999999999976, + "516": 104.09999999999974, + "517": 104.34999999999975, + "518": 102.94999999999978, + "519": 97.54999999999977, + "520": 106.24999999999973, + "521": -75.3, + "522": 4.75, + "523": 100.34999999999975, + "524": 106.69999999999975, + "525": 56.699999999999854, + "526": 16.30000000000001, + "527": 101.29999999999977, + "528": 93.09999999999977, + "529": 103.54999999999977, + "530": 66.2999999999999, + "531": 102.59999999999977, + "532": 102.74999999999977, + "533": 102.84999999999977, + "534": 102.84999999999977, + "535": 104.59999999999977, + "536": 107.89999999999974, + "537": 104.04999999999974, + "538": 75.74999999999977, + "539": 102.29999999999977, + "540": 81.34999999999978, + "541": 102.09999999999977, + "542": 105.89999999999974, + "543": 99.54999999999974, + "544": 102.84999999999975, + "545": 105.84999999999972, + "546": 105.59999999999972, + "547": 103.54999999999977, + "548": 98.64999999999978, + "549": 103.39999999999976, + "550": 106.34999999999975, + "551": 84.14999999999976, + "552": 108.59999999999974, + "553": 104.34999999999975, + "554": -78.9, + "555": 91.19999999999978, + "556": 101.54999999999977, + "557": 103.49999999999977, + "558": 104.79999999999974, + "559": 48.14999999999982, + "560": 40.99999999999998, + "561": 93.69999999999982, + "562": 104.44999999999976, + "563": 105.49999999999974, + "564": 102.24999999999977, + "565": 93.59999999999978, + "566": 105.74999999999974, + "567": 99.74999999999976, + "568": 62.39999999999994, + "569": 100.64999999999974, + "570": 104.39999999999972, + "571": 103.89999999999976, + "572": 103.34999999999977, + "573": 85.79999999999977, + "574": 3.1499999999999915, + "575": 102.04999999999977, + "576": 104.64999999999978, + "577": 59.09999999999975, + "578": -81.00000000000001, + "579": 103.59999999999977, + "580": 105.69999999999972, + "581": 53.79999999999983, + "582": 104.79999999999974, + "583": 102.84999999999977, + "584": 104.44999999999978, + "585": 104.39999999999975, + "586": 104.54999999999976, + "587": 103.79999999999977, + "588": 105.59999999999972, + "589": 102.54999999999976, + "590": 103.54999999999977, + "591": 83.54999999999977, + "592": -75.8, + "593": 105.89999999999972, + "594": 102.09999999999977, + "595": 105.74999999999973, + "596": 103.19999999999976, + "597": 102.94999999999978, + "598": 107.04999999999974, + "599": 103.89999999999976, + "600": 104.39999999999976, + "601": 100.99999999999976, + "602": 106.09999999999974, + "603": 105.34999999999975, + "604": 105.09999999999974, + "605": 103.74999999999977, + "606": 102.89999999999976, + "607": -78.65, + "608": 102.89999999999978, + "609": 107.24999999999973, + "610": 102.64999999999976, + "611": 106.94999999999973, + "612": -82.80000000000001, + "613": 104.09999999999977, + "614": 104.39999999999976, + "615": 104.14999999999976, + "616": 43.74999999999976, + "617": 104.49999999999976, + "618": 60.74999999999977, + "619": 105.39999999999975, + "620": 103.29999999999977, + "621": 106.49999999999993, + "622": 107.54999999999974, + "623": 107.99999999999974, + "624": 76.69999999999978, + "625": 108.29999999999974, + "626": 102.99999999999977, + "627": 104.54999999999976, + "628": 103.74999999999977, + "629": 105.54999999999973, + "630": 104.64999999999975, + "631": 102.89999999999976, + "632": 105.39999999999974, + "633": 104.14999999999976, + "634": 104.59999999999975, + "635": 104.29999999999977, + "636": 103.94999999999976, + "637": 97.84999999999977, + "638": -79.04999999999998, + "639": 103.04999999999977, + "640": 100.74999999999979, + "641": 102.74999999999977, + "642": 104.09999999999977, + "643": 106.04999999999971, + "644": 106.64999999999989, + "645": 104.09999999999977, + "646": 103.24999999999976, + "647": 103.04999999999977, + "648": 103.99999999999976, + "649": 81.19999999999976, + "650": 102.79999999999977, + "651": 102.99999999999977, + "652": 101.94999999999978, + "653": 39.1, + "654": 105.84999999999972, + "655": 60.34999999999975, + "656": 96.39999999999979, + "657": 62.69999999999998, + "658": 105.24999999999974, + "659": 92.44999999999975, + "660": 103.69999999999976, + "661": 101.39999999999978, + "662": 103.09999999999977, + "663": 103.24999999999976, + "664": 94.4499999999998, + "665": 89.79999999999987, + "666": 103.54999999999976, + "667": 103.99999999999976, + "668": 73.64999999999976, + "669": 103.69999999999976, + "670": -14.500000000000007, + "671": 105.04999999999976, + "672": 104.94999999999975, + "673": 103.34999999999977, + "674": 90.89999999999982, + "675": 100.99999999999977, + "676": 105.09999999999981, + "677": 103.64999999999976, + "678": 71.59999999999977, + "679": 107.94999999999973, + "680": 73.14999999999976, + "681": 103.24999999999977, + "682": 103.29999999999977, + "683": 54.29999999999975, + "684": 98.69999999999975, + "685": 104.54999999999973, + "686": 105.6499999999998, + "687": 103.09999999999977, + "688": 103.84999999999977, + "689": 104.34999999999974, + "690": 83.54999999999977, + "691": 84.8499999999998, + "692": 105.44999999999982, + "693": 106.54999999999973, + "694": 106.24999999999983, + "695": 103.94999999999976, + "696": 105.94999999999973, + "697": 12.799999999999969, + "698": 103.29999999999984, + "699": 109.09999999999975, + "700": 101.99999999999974, + "701": 104.79999999999977, + "702": 103.79999999999976, + "703": 102.64999999999976, + "704": 103.29999999999977, + "705": 106.94999999999973, + "706": 104.69999999999976, + "707": 103.09999999999977, + "708": 103.74999999999976, + "709": 103.14999999999978, + "710": 102.79999999999974, + "711": 99.24999999999977, + "712": 103.04999999999977, + "713": 102.69999999999978, + "714": 103.74999999999976, + "715": 102.74999999999976, + "716": 83.99999999999983, + "717": 104.39999999999975, + "718": 104.84999999999975, + "719": 103.59999999999977, + "720": 103.39999999999976, + "721": 102.74999999999977, + "722": 104.84999999999974, + "723": 104.49999999999976, + "724": 105.64999999999974, + "725": 92.49999999999977, + "726": 102.49999999999976, + "727": 104.34999999999988, + "728": 104.39999999999975, + "729": 103.44999999999976, + "730": 106.94999999999979, + "731": 103.14999999999978, + "732": 103.69999999999976, + "733": 111.44999999999993, + "734": 102.94999999999978, + "735": 100.39999999999976, + "736": 99.54999999999978, + "737": 104.89999999999975, + "738": 104.19999999999976, + "739": 95.89999999999995, + "740": 105.29999999999994, + "741": 105.59999999999972, + "742": 104.19999999999976, + "743": 105.44999999999972, + "744": 105.84999999999974, + "745": 106.94999999999973, + "746": 107.84999999999972, + "747": 94.49999999999974, + "748": 104.84999999999975, + "749": 107.29999999999973, + "750": 104.04999999999976, + "751": 103.99999999999976, + "752": 62.34999999999977, + "753": 107.54999999999973, + "754": -84.6, + "755": 106.64999999999972, + "756": 85.69999999999983, + "757": 103.04999999999977, + "758": 57.54999999999978, + "759": 104.79999999999976, + "760": 96.04999999999976, + "761": 3.80000000000006, + "762": 102.79999999999977, + "763": -65.80000000000001, + "764": 106.64999999999974, + "765": 31.64999999999985, + "766": -68.35000000000001, + "767": 103.54999999999976, + "768": 104.84999999999977, + "769": 58.199999999999754, + "770": 103.89999999999976, + "771": 49.699999999999775, + "772": 109.94999999999985, + "773": 104.74999999999976, + "774": 104.59999999999975, + "775": 105.79999999999981, + "776": 31.39999999999987, + "777": 103.64999999999976, + "778": 103.34999999999977, + "779": 105.04999999999974, + "780": -68.1, + "781": 107.39999999999975, + "782": 109.50000000000018, + "783": -19.25, + "784": 108.39999999999989, + "785": 107.59999999999982, + "786": 102.39999999999978, + "787": 104.29999999999977, + "788": -84.00000000000003, + "789": 112.49999999999994, + "790": -77.4, + "791": 104.19999999999975, + "792": 92.74999999999983, + "793": 104.19999999999976, + "794": 104.29999999999976, + "795": -84.54999999999998, + "796": 103.89999999999979, + "797": 109.0499999999998, + "798": 105.29999999999977, + "799": 105.89999999999972, + "800": 103.14999999999976, + "801": 101.99999999999977, + "802": 105.19999999999973, + "803": 105.04999999999974, + "804": 105.74999999999972, + "805": 104.89999999999993, + "806": 105.34999999999974, + "807": 104.39999999999976, + "808": 103.64999999999976, + "809": 105.74999999999973, + "810": 49.74999999999981, + "811": 108.69999999999995, + "812": 106.39999999999971, + "813": -36.95000000000001, + "814": 105.59999999999975, + "815": 105.94999999999973, + "816": 103.34999999999977, + "817": 103.39999999999976, + "818": -76.6, + "819": 111.94999999999992, + "820": 103.34999999999977, + "821": 104.14999999999976, + "822": 106.59999999999972, + "823": 104.29999999999976, + "824": -3.8000000000000043, + "825": 103.29999999999977, + "826": 65.14999999999979, + "827": 103.99999999999976, + "828": 100.14999999999978, + "829": 104.44999999999976, + "830": 104.99999999999973, + "831": 78.94999999999978, + "832": -75.35, + "833": 102.49999999999977, + "834": -86.45000000000013, + "835": 116.35000000000032, + "836": 103.14999999999976, + "837": 105.34999999999972, + "838": 105.79999999999974, + "839": 108.69999999999975, + "840": 105.44999999999973, + "841": -88.44999999999999, + "842": 104.59999999999975, + "843": 104.24999999999976, + "844": 105.24999999999973, + "845": 113.80000000000021, + "846": 104.79999999999974, + "847": 104.94999999999982, + "848": 104.59999999999975, + "849": 103.39999999999976, + "850": 107.94999999999979, + "851": 105.69999999999972, + "852": 109.09999999999977, + "853": 106.29999999999971, + "854": 82.74999999999974, + "855": 71.29999999999978, + "856": -68.34999999999998, + "857": 106.49999999999996, + "858": 107.69999999999975, + "859": 105.39999999999972, + "860": 103.34999999999977, + "861": 107.74999999999974, + "862": 103.74999999999976, + "863": 100.79999999999973, + "864": 106.19999999999973, + "865": 100.79999999999976, + "866": -81.0, + "867": 105.69999999999986, + "868": 103.09999999999977, + "869": 104.09999999999977, + "870": 102.69999999999978, + "871": 103.94999999999976, + "872": 105.09999999999975, + "873": 103.94999999999973, + "874": 46.699999999999896, + "875": 94.54999999999978, + "876": 103.79999999999977, + "877": 106.24999999999973, + "878": 104.14999999999975, + "879": -73.69999999999997, + "880": 104.59999999999982, + "881": -77.44999999999999, + "882": -15.000000000000014, + "883": 104.84999999999975, + "884": -81.95, + "885": 105.14999999999975, + "886": 109.24999999999979, + "887": -77.85, + "888": 104.19999999999976, + "889": 113.75, + "890": -38.10000000000001, + "891": 104.69999999999976, + "892": -72.05000000000001, + "893": -73.80000000000001, + "894": 113.64999999999988, + "895": 104.19999999999976, + "896": 107.64999999999974, + "897": 109.29999999999978, + "898": 109.04999999999981, + "899": 109.24999999999976, + "900": 104.84999999999977, + "901": 104.24999999999976, + "902": 105.79999999999974, + "903": 104.04999999999977, + "904": 104.54999999999974, + "905": 104.94999999999975, + "906": 105.09999999999975, + "907": 101.49999999999972, + "908": -79.94999999999999, + "909": 103.29999999999977, + "910": 105.89999999999972, + "911": 102.64999999999976, + "912": 85.34999999999981, + "913": 104.69999999999976, + "914": 106.59999999999972, + "915": 106.44999999999972, + "916": 106.59999999999974, + "917": 107.64999999999974, + "918": 116.70000000000027, + "919": 59.150000000000034, + "920": 102.74999999999977, + "921": 104.89999999999972, + "922": 104.89999999999974, + "923": 107.19999999999972, + "924": 106.19999999999975, + "925": 104.79999999999976, + "926": 111.64999999999999, + "927": 109.04999999999976, + "928": 104.39999999999975, + "929": 105.34999999999975, + "930": 115.10000000000018, + "931": 108.39999999999975, + "932": 60.249999999999766, + "933": 40.69999999999997, + "934": 97.94999999999975, + "935": 105.39999999999974, + "936": 108.44999999999976, + "937": 105.89999999999974, + "938": 106.14999999999972, + "939": 106.09999999999972, + "940": 105.29999999999973, + "941": 104.44999999999978, + "942": 108.59999999999977, + "943": 105.79999999999973, + "944": 71.04999999999976, + "945": 106.94999999999973, + "946": 75.59999999999977, + "947": 103.14999999999978, + "948": 102.74999999999977, + "949": 106.99999999999973, + "950": 103.24999999999976, + "951": 110.54999999999983, + "952": 110.44999999999989, + "953": 104.49999999999974, + "954": 39.849999999999824, + "955": 104.94999999999975, + "956": -63.350000000000016, + "957": 104.04999999999977, + "958": -88.25, + "959": 103.24999999999977, + "960": 102.44999999999976, + "961": 83.34999999999975, + "962": -69.80000000000001, + "963": 108.59999999999974, + "964": 103.94999999999976, + "965": 105.39999999999974, + "966": 107.39999999999974, + "967": -45.80000000000007, + "968": 105.10000000000008, + "969": 103.69999999999973, + "970": 105.59999999999985, + "971": -79.0, + "972": 102.84999999999977, + "973": 103.44999999999976, + "974": 104.74999999999973, + "975": 103.29999999999977, + "976": -82.45000000000002, + "977": 105.59999999999974, + "978": 104.49999999999983, + "979": -83.35, + "980": 106.89999999999974, + "981": -83.85, + "982": -81.3, + "983": 103.49999999999972, + "984": 56.149999999999764, + "985": 106.19999999999978, + "986": 110.19999999999976, + "987": 108.69999999999976, + "988": 108.39999999999975, + "989": -41.05000000000001, + "990": 107.40000000000003, + "991": 46.79999999999997, + "992": 110.34999999999987, + "993": 106.39999999999972, + "994": 104.39999999999975, + "995": 106.09999999999972, + "996": 104.19999999999976, + "997": 107.14999999999974, + "998": 105.64999999999972, + "999": 103.14999999999976, + "1000": 107.24999999999979 + } +} \ No newline at end of file diff --git a/benchmark/results/v3/v3.3.0/session_metadata/5.json b/benchmark/results/v3/v3.3.0/session_metadata/5.json new file mode 100644 index 00000000..d6fc6124 --- /dev/null +++ b/benchmark/results/v3/v3.3.0/session_metadata/5.json @@ -0,0 +1,1009 @@ +{ + "total_episodes": 1001, + "total_time_steps": 128000, + "total_s": 1432.237888, + "s_per_step": 0.044757434000000006, + "s_per_100_steps_10_nodes": 4.475743400000001, + "total_reward_per_episode": { + "1": -4.399999999999995, + "2": -48.50000000000004, + "3": -109.5, + "4": -54.500000000000085, + "5": -15.949999999999978, + "6": -80.89999999999992, + "7": -15.349999999999982, + "8": -23.29999999999995, + "9": -34.350000000000016, + "10": -49.800000000000054, + "11": -46.95000000000006, + "12": -22.699999999999953, + "13": -32.35000000000003, + "14": -24.199999999999942, + "15": -51.150000000000176, + "16": -52.20000000000008, + "17": -68.60000000000007, + "18": -30.400000000000006, + "19": -19.99999999999996, + "20": -73.15000000000002, + "21": -17.949999999999974, + "22": -12.949999999999987, + "23": -61.25, + "24": -35.19999999999998, + "25": -70.70000000000005, + "26": -96.6, + "27": -48.550000000000146, + "28": -4.599999999999975, + "29": -7.4, + "30": -44.050000000000175, + "31": -4.29999999999998, + "32": -21.999999999999957, + "33": -78.30000000000004, + "34": -15.099999999999985, + "35": -55.60000000000003, + "36": -51.800000000000075, + "37": -20.39999999999996, + "38": -22.499999999999954, + "39": -104.3, + "40": -45.75000000000005, + "41": 2.100000000000044, + "42": -21.099999999999987, + "43": -14.99999999999998, + "44": -94.15, + "45": -45.70000000000012, + "46": -17.399999999999974, + "47": -29.099999999999948, + "48": -13.749999999999986, + "49": -87.25, + "50": -47.04999999999999, + "51": -23.89999999999995, + "52": -47.75000000000007, + "53": -13.699999999999976, + "54": -17.74999999999997, + "55": -23.799999999999972, + "56": -16.49999999999998, + "57": -21.299999999999958, + "58": -13.099999999999985, + "59": -96.69999999999997, + "60": -23.44999999999995, + "61": -8.399999999999995, + "62": -37.65000000000005, + "63": -20.349999999999962, + "64": -19.049999999999958, + "65": -17.24999999999998, + "66": -8.550000000000006, + "67": -18.14999999999997, + "68": -69.45000000000005, + "69": -16.999999999999975, + "70": -72.19999999999999, + "71": -29.599999999999994, + "72": -19.049999999999965, + "73": -7.249999999999993, + "74": -16.049999999999983, + "75": -17.49999999999997, + "76": -18.29999999999997, + "77": -15.799999999999976, + "78": -6.299999999999986, + "79": -17.24999999999997, + "80": -20.999999999999957, + "81": -12.84999999999996, + "82": -77.1, + "83": -18.34999999999997, + "84": -16.24999999999998, + "85": -51.75000000000008, + "86": -19.649999999999963, + "87": -0.5999999999999621, + "88": 4.700000000000018, + "89": -39.45000000000005, + "90": -19.79999999999996, + "91": -15.999999999999979, + "92": -45.39999999999999, + "93": 9.800000000000018, + "94": -81.9, + "95": 0.5499999999999933, + "96": -3.149999999999971, + "97": -16.899999999999974, + "98": -3.899999999999987, + "99": -36.55000000000004, + "100": -63.0000000000001, + "101": 13.300000000000004, + "102": -51.25000000000008, + "103": -1.849999999999997, + "104": -42.54999999999998, + "105": -84.10000000000001, + "106": -97.94999999999999, + "107": -17.65, + "108": -18.44999999999997, + "109": -15.399999999999975, + "110": 24.44999999999998, + "111": -40.20000000000011, + "112": -6.250000000000002, + "113": -22.74999999999996, + "114": -5.699999999999991, + "115": -18.64999999999996, + "116": -1.3500000000000008, + "117": 14.250000000000053, + "118": -53.49999999999998, + "119": -71.89999999999999, + "120": -29.299999999999994, + "121": 24.949999999999925, + "122": 17.000000000000025, + "123": -26.649999999999945, + "124": -50.449999999999974, + "125": 27.949999999999967, + "126": -71.39999999999999, + "127": -21.999999999999954, + "128": -15.499999999999979, + "129": -19.799999999999965, + "130": 10.100000000000012, + "131": -56.80000000000011, + "132": 19.60000000000007, + "133": -1.2499999999999811, + "134": -16.149999999999945, + "135": 1.1000000000000354, + "136": -8.749999999999972, + "137": -9.65, + "138": -16.649999999999977, + "139": -14.499999999999984, + "140": -9.949999999999998, + "141": 3.2500000000000187, + "142": 32.10000000000004, + "143": -3.199999999999998, + "144": 9.300000000000034, + "145": -26.29999999999997, + "146": 11.149999999999995, + "147": -3.199999999999984, + "148": -26.599999999999973, + "149": -12.699999999999967, + "150": -0.19999999999997642, + "151": -18.649999999999967, + "152": -42.80000000000001, + "153": 14.649999999999956, + "154": 5.300000000000017, + "155": -9.89999999999999, + "156": -0.4499999999999653, + "157": -40.65000000000006, + "158": 0.2000000000000146, + "159": -2.250000000000001, + "160": -85.30000000000001, + "161": 2.050000000000021, + "162": 3.450000000000025, + "163": -85.69999999999999, + "164": 2.5000000000000036, + "165": -0.5999999999999849, + "166": -10.249999999999996, + "167": -24.849999999999977, + "168": -8.5, + "169": -25.899999999999984, + "170": 18.2, + "171": -94.3, + "172": 5.500000000000007, + "173": 17.050000000000065, + "174": -19.39999999999999, + "175": -8.04999999999999, + "176": -9.949999999999987, + "177": -42.550000000000054, + "178": 27.35000000000007, + "179": -0.19999999999995866, + "180": 23.549999999999894, + "181": 44.899999999999885, + "182": 32.14999999999996, + "183": -15.999999999999975, + "184": 57.5999999999998, + "185": 16.999999999999996, + "186": -10.549999999999995, + "187": 10.550000000000061, + "188": -90.0, + "189": -9.900000000000002, + "190": 20.500000000000007, + "191": 19.15000000000004, + "192": -2.2999999999999963, + "193": -1.799999999999986, + "194": 22.149999999999963, + "195": -14.949999999999976, + "196": 17.100000000000044, + "197": -13.999999999999964, + "198": -0.6499999999999884, + "199": 46.599999999999746, + "200": 43.94999999999977, + "201": 27.95000000000003, + "202": 20.10000000000007, + "203": 51.59999999999976, + "204": 5.600000000000055, + "205": 40.349999999999866, + "206": -56.4, + "207": -7.200000000000007, + "208": 10.650000000000082, + "209": 53.599999999999795, + "210": -49.849999999999994, + "211": 46.29999999999992, + "212": -30.24999999999998, + "213": 52.39999999999978, + "214": 87.45000000000012, + "215": -84.95, + "216": 67.34999999999988, + "217": 46.09999999999985, + "218": 77.1499999999999, + "219": 1.9499999999999933, + "220": 46.24999999999981, + "221": 21.699999999999953, + "222": 34.3499999999999, + "223": -7.899999999999994, + "224": 41.84999999999974, + "225": 7.3500000000000085, + "226": 66.79999999999977, + "227": -2.6999999999999664, + "228": 11.500000000000039, + "229": 0.800000000000008, + "230": -7.500000000000008, + "231": -87.85, + "232": 62.39999999999993, + "233": -1.3500000000000272, + "234": 36.59999999999988, + "235": 91.64999999999998, + "236": 8.9, + "237": -81.39999999999996, + "238": 47.749999999999886, + "239": -9.55000000000004, + "240": 28.299999999999844, + "241": 83.0500000000001, + "242": 40.69999999999978, + "243": 28.649999999999892, + "244": -62.500000000000014, + "245": 72.35000000000011, + "246": -23.900000000000006, + "247": 81.30000000000008, + "248": 63.649999999999764, + "249": 25.249999999999947, + "250": 12.100000000000067, + "251": 58.84999999999993, + "252": 14.199999999999969, + "253": 86.15000000000022, + "254": -10.150000000000007, + "255": 69.09999999999984, + "256": 42.04999999999995, + "257": 36.2, + "258": 56.79999999999995, + "259": 64.35000000000014, + "260": 68.44999999999978, + "261": 81.19999999999982, + "262": 35.15000000000003, + "263": -4.699999999999989, + "264": 106.55000000000028, + "265": 48.44999999999992, + "266": 24.25000000000001, + "267": -54.64999999999994, + "268": 59.049999999999926, + "269": 46.24999999999976, + "270": 32.99999999999999, + "271": 89.09999999999981, + "272": 65.14999999999978, + "273": 89.64999999999995, + "274": 43.44999999999994, + "275": -33.30000000000004, + "276": 103.50000000000017, + "277": -56.74999999999996, + "278": 42.0999999999999, + "279": 92.80000000000008, + "280": -25.349999999999973, + "281": -38.799999999999976, + "282": -83.99999999999997, + "283": 85.84999999999978, + "284": 25.099999999999923, + "285": 42.24999999999992, + "286": 19.150000000000002, + "287": 72.99999999999984, + "288": -71.55000000000001, + "289": 26.99999999999999, + "290": 41.49999999999989, + "291": 31.899999999999864, + "292": -70.84999999999997, + "293": 94.0500000000001, + "294": 36.04999999999999, + "295": -25.900000000000027, + "296": 107.00000000000024, + "297": 59.099999999999866, + "298": 106.05000000000018, + "299": -21.799999999999986, + "300": 31.29999999999999, + "301": 47.9499999999999, + "302": 67.9499999999999, + "303": -39.30000000000008, + "304": 87.04999999999998, + "305": -16.950000000000028, + "306": 57.3499999999999, + "307": 106.35000000000026, + "308": 62.04999999999991, + "309": -21.999999999999982, + "310": 60.59999999999983, + "311": -3.1500000000000057, + "312": 94.70000000000009, + "313": 102.45000000000014, + "314": 92.20000000000016, + "315": -74.55, + "316": 89.00000000000003, + "317": 9.649999999999999, + "318": -70.24999999999997, + "319": -43.899999999999984, + "320": -54.94999999999995, + "321": -13.600000000000005, + "322": 26.799999999999976, + "323": 66.69999999999987, + "324": -12.59999999999998, + "325": -16.349999999999984, + "326": -64.74999999999986, + "327": 61.29999999999982, + "328": 29.900000000000013, + "329": 59.699999999999875, + "330": 67.79999999999981, + "331": -45.15000000000005, + "332": -68.54999999999997, + "333": 21.650000000000002, + "334": 1.5999999999999868, + "335": 48.249999999999915, + "336": 84.09999999999981, + "337": 7.899999999999989, + "338": 78.59999999999984, + "339": -9.949999999999996, + "340": 75.14999999999996, + "341": -44.34999999999996, + "342": 91.85000000000001, + "343": 94.60000000000016, + "344": 73.64999999999999, + "345": 33.3, + "346": 13.299999999999997, + "347": 107.25000000000024, + "348": 40.049999999999976, + "349": -63.89999999999992, + "350": 102.9500000000002, + "351": 51.54999999999981, + "352": 77.19999999999999, + "353": 95.70000000000012, + "354": 47.54999999999994, + "355": 28.650000000000055, + "356": 6.55, + "357": 22.949999999999967, + "358": 103.40000000000018, + "359": 51.34999999999995, + "360": 93.05000000000014, + "361": 95.5000000000001, + "362": 31.199999999999985, + "363": 98.0500000000002, + "364": 52.69999999999979, + "365": -7.450000000000001, + "366": 37.69999999999999, + "367": 64.69999999999985, + "368": 66.89999999999988, + "369": 89.24999999999979, + "370": -78.4, + "371": 93.25000000000013, + "372": 94.99999999999991, + "373": -2.849999999999964, + "374": 75.34999999999977, + "375": 85.70000000000003, + "376": 98.55000000000013, + "377": 90.14999999999976, + "378": -72.09999999999992, + "379": 97.10000000000015, + "380": 24.199999999999978, + "381": 57.94999999999993, + "382": 72.89999999999978, + "383": 49.799999999999926, + "384": 86.60000000000001, + "385": 78.34999999999981, + "386": 86.70000000000007, + "387": 31.84999999999996, + "388": 51.24999999999995, + "389": 50.29999999999987, + "390": 65.79999999999991, + "391": 83.45, + "392": 61.59999999999988, + "393": 89.7500000000001, + "394": 81.09999999999984, + "395": 95.04999999999974, + "396": 70.14999999999976, + "397": 67.84999999999984, + "398": 0.1999999999999731, + "399": 66.84999999999991, + "400": 55.949999999999775, + "401": 91.90000000000013, + "402": 92.0000000000001, + "403": 81.7999999999998, + "404": 96.0999999999998, + "405": 35.499999999999794, + "406": 48.799999999999955, + "407": 40.050000000000004, + "408": 92.00000000000006, + "409": 104.35, + "410": 86.29999999999978, + "411": -5.849999999999988, + "412": 51.099999999999746, + "413": 64.79999999999974, + "414": 15.150000000000034, + "415": 77.00000000000006, + "416": 68.79999999999991, + "417": 59.64999999999974, + "418": 75.04999999999976, + "419": 38.39999999999998, + "420": 84.29999999999978, + "421": 51.8499999999998, + "422": 37.84999999999993, + "423": 92.69999999999979, + "424": 71.39999999999985, + "425": 75.04999999999986, + "426": 77.64999999999975, + "427": 15.799999999999992, + "428": 25.150000000000013, + "429": 96.44999999999975, + "430": 85.69999999999978, + "431": 78.09999999999994, + "432": 82.39999999999974, + "433": 103.0000000000002, + "434": 95.99999999999973, + "435": 15.200000000000014, + "436": 80.79999999999978, + "437": 63.09999999999979, + "438": 90.84999999999981, + "439": 58.799999999999876, + "440": 75.24999999999987, + "441": 99.05000000000011, + "442": 72.39999999999982, + "443": 94.69999999999992, + "444": 62.14999999999993, + "445": 8.450000000000015, + "446": 93.79999999999976, + "447": 75.60000000000014, + "448": 96.74999999999976, + "449": 44.54999999999987, + "450": -3.7999999999999967, + "451": -43.19999999999999, + "452": 97.99999999999974, + "453": 75.25000000000003, + "454": 90.29999999999978, + "455": 86.69999999999976, + "456": 94.09999999999978, + "457": 79.04999999999977, + "458": 66.74999999999987, + "459": 76.2499999999999, + "460": 101.99999999999974, + "461": 104.69999999999983, + "462": 85.34999999999978, + "463": 97.39999999999975, + "464": 32.35, + "465": 98.29999999999976, + "466": 79.89999999999982, + "467": 101.00000000000016, + "468": 84.14999999999975, + "469": 92.69999999999979, + "470": 93.59999999999977, + "471": 36.899999999999956, + "472": 86.34999999999977, + "473": 105.54999999999991, + "474": 66.39999999999993, + "475": 101.09999999999975, + "476": -5.149999999999967, + "477": 98.49999999999977, + "478": 104.34999999999987, + "479": 104.29999999999991, + "480": 99.94999999999979, + "481": 99.59999999999974, + "482": 95.54999999999986, + "483": 97.19999999999982, + "484": 93.89999999999976, + "485": 75.14999999999996, + "486": 98.19999999999982, + "487": 45.299999999999784, + "488": 92.29999999999977, + "489": 103.09999999999977, + "490": 94.74999999999977, + "491": 101.34999999999977, + "492": 99.19999999999976, + "493": 91.89999999999979, + "494": 86.89999999999976, + "495": 103.54999999999976, + "496": 41.999999999999964, + "497": 100.49999999999977, + "498": 95.24999999999977, + "499": 103.89999999999974, + "500": 96.69999999999976, + "501": 96.59999999999977, + "502": 69.49999999999974, + "503": 81.34999999999978, + "504": 101.54999999999977, + "505": 82.44999999999978, + "506": 97.84999999999975, + "507": 93.29999999999977, + "508": 61.34999999999976, + "509": 94.99999999999979, + "510": 68.74999999999973, + "511": 104.84999999999975, + "512": 102.64999999999974, + "513": 102.84999999999975, + "514": -2.3000000000000753, + "515": 102.99999999999974, + "516": 99.1999999999998, + "517": 103.54999999999978, + "518": 98.59999999999978, + "519": 104.39999999999974, + "520": -76.1, + "521": 50.99999999999976, + "522": 103.04999999999976, + "523": -25.400000000000066, + "524": 93.29999999999983, + "525": 71.04999999999976, + "526": 94.49999999999976, + "527": 98.24999999999976, + "528": 103.99999999999986, + "529": 99.59999999999977, + "530": 99.89999999999976, + "531": 106.84999999999974, + "532": 102.74999999999976, + "533": 103.14999999999976, + "534": 97.79999999999974, + "535": 98.84999999999975, + "536": 102.79999999999977, + "537": 26.35000000000006, + "538": 102.39999999999985, + "539": 96.04999999999976, + "540": 83.19999999999983, + "541": 105.34999999999974, + "542": 102.94999999999975, + "543": 98.44999999999975, + "544": 92.8999999999998, + "545": 101.44999999999975, + "546": 107.34999999999982, + "547": 103.99999999999973, + "548": 103.54999999999974, + "549": 22.50000000000004, + "550": 103.94999999999972, + "551": -46.300000000000004, + "552": 101.94999999999975, + "553": 108.94999999999999, + "554": 108.19999999999978, + "555": 105.94999999999972, + "556": 95.14999999999975, + "557": 102.74999999999973, + "558": 103.89999999999972, + "559": 101.54999999999978, + "560": 100.49999999999977, + "561": 87.5499999999998, + "562": 94.84999999999977, + "563": -74.69999999999999, + "564": 105.59999999999975, + "565": 102.74999999999976, + "566": 94.29999999999977, + "567": 96.29999999999978, + "568": 97.69999999999978, + "569": 99.24999999999977, + "570": 103.24999999999973, + "571": 100.19999999999973, + "572": 97.44999999999979, + "573": 102.44999999999972, + "574": 93.74999999999999, + "575": 90.54999999999976, + "576": 101.24999999999977, + "577": 95.69999999999978, + "578": 101.24999999999974, + "579": 78.54999999999987, + "580": 101.94999999999972, + "581": 103.34999999999975, + "582": 109.10000000000002, + "583": 103.49999999999976, + "584": 104.04999999999971, + "585": 106.39999999999972, + "586": 104.74999999999973, + "587": 103.04999999999977, + "588": 13.099999999999978, + "589": 105.45000000000007, + "590": 14.149999999999906, + "591": 104.39999999999975, + "592": 104.3999999999998, + "593": 111.14999999999989, + "594": 102.44999999999976, + "595": 104.99999999999976, + "596": 76.74999999999986, + "597": 102.49999999999976, + "598": 76.04999999999984, + "599": 99.79999999999977, + "600": 49.79999999999981, + "601": 102.39999999999976, + "602": 101.24999999999977, + "603": 78.44999999999993, + "604": 39.39999999999976, + "605": 45.299999999999955, + "606": -85.6, + "607": 103.74999999999976, + "608": 104.19999999999995, + "609": 98.99999999999976, + "610": 95.99999999999974, + "611": 102.59999999999985, + "612": 97.64999999999979, + "613": -56.74999999999997, + "614": 27.650000000000027, + "615": 63.849999999999724, + "616": 103.99999999999976, + "617": 105.04999999999991, + "618": 101.79999999999977, + "619": 101.84999999999977, + "620": 82.54999999999974, + "621": 99.34999999999972, + "622": -76.30000000000007, + "623": 104.09999999999975, + "624": 103.39999999999975, + "625": 101.04999999999976, + "626": 96.29999999999986, + "627": -87.0, + "628": 101.74999999999977, + "629": 104.04999999999977, + "630": 106.84999999999974, + "631": 86.64999999999978, + "632": 102.49999999999974, + "633": 100.34999999999974, + "634": 55.89999999999977, + "635": 102.14999999999975, + "636": 104.34999999999974, + "637": -74.10000000000002, + "638": 105.44999999999972, + "639": 104.09999999999977, + "640": 105.1499999999998, + "641": 82.19999999999985, + "642": -68.75, + "643": 87.99999999999983, + "644": 104.09999999999977, + "645": 105.24999999999974, + "646": 100.54999999999974, + "647": 105.39999999999974, + "648": 103.19999999999976, + "649": 102.29999999999977, + "650": 102.94999999999976, + "651": 103.59999999999977, + "652": 102.04999999999976, + "653": 102.44999999999976, + "654": 99.94999999999976, + "655": 105.44999999999973, + "656": 42.85000000000001, + "657": 103.99999999999976, + "658": 104.19999999999976, + "659": 103.74999999999974, + "660": 53.79999999999975, + "661": 104.19999999999976, + "662": 109.49999999999976, + "663": 87.64999999999975, + "664": 102.49999999999973, + "665": -44.65000000000006, + "666": 104.14999999999976, + "667": 49.89999999999995, + "668": 105.79999999999973, + "669": 105.14999999999974, + "670": 73.8999999999998, + "671": 85.89999999999984, + "672": 97.04999999999978, + "673": 104.59999999999975, + "674": 103.99999999999976, + "675": 101.59999999999977, + "676": 106.14999999999982, + "677": 98.69999999999978, + "678": 106.69999999999975, + "679": 99.94999999999978, + "680": 99.24999999999976, + "681": 104.19999999999976, + "682": 104.14999999999976, + "683": 81.3999999999999, + "684": 98.69999999999976, + "685": 101.99999999999972, + "686": 105.24999999999974, + "687": 99.84999999999977, + "688": 103.49999999999976, + "689": 103.69999999999975, + "690": 104.09999999999972, + "691": 101.89999999999976, + "692": 106.94999999999976, + "693": 103.84999999999974, + "694": 104.44999999999973, + "695": 104.74999999999973, + "696": 87.49999999999972, + "697": 102.79999999999974, + "698": 103.69999999999976, + "699": 79.29999999999987, + "700": 108.04999999999973, + "701": 57.749999999999766, + "702": 106.29999999999973, + "703": 103.79999999999977, + "704": 107.54999999999983, + "705": -0.600000000000033, + "706": -80.14999999999999, + "707": 99.44999999999975, + "708": 107.99999999999976, + "709": 97.29999999999976, + "710": 89.29999999999977, + "711": 102.24999999999973, + "712": -38.75000000000003, + "713": -34.04999999999999, + "714": 103.69999999999973, + "715": 102.09999999999974, + "716": -43.19999999999999, + "717": 104.39999999999975, + "718": 0.5999999999999659, + "719": 99.69999999999976, + "720": 105.79999999999973, + "721": 103.09999999999977, + "722": 105.39999999999976, + "723": 105.14999999999976, + "724": 104.34999999999977, + "725": 104.04999999999976, + "726": -65.4, + "727": -42.550000000000054, + "728": 104.29999999999984, + "729": 103.44999999999976, + "730": -78.75, + "731": 103.84999999999975, + "732": 105.54999999999973, + "733": 91.7499999999998, + "734": 109.29999999999976, + "735": 110.54999999999991, + "736": 103.84999999999975, + "737": 108.04999999999973, + "738": -72.50000000000001, + "739": 109.09999999999977, + "740": 89.24999999999977, + "741": 103.29999999999976, + "742": 109.34999999999975, + "743": 102.84999999999977, + "744": 108.84999999999975, + "745": 105.59999999999974, + "746": 81.19999999999978, + "747": 100.99999999999977, + "748": 105.19999999999972, + "749": 58.29999999999976, + "750": 46.79999999999987, + "751": 67.84999999999987, + "752": 103.54999999999974, + "753": 88.74999999999976, + "754": 105.14999999999974, + "755": 109.55, + "756": 70.69999999999975, + "757": 103.94999999999975, + "758": 101.74999999999972, + "759": 105.14999999999972, + "760": 103.99999999999974, + "761": 102.69999999999978, + "762": 104.19999999999975, + "763": 104.39999999999975, + "764": -77.95, + "765": 25.599999999999895, + "766": 108.89999999999975, + "767": 106.34999999999977, + "768": 96.54999999999981, + "769": 104.24999999999976, + "770": 106.89999999999972, + "771": 105.19999999999973, + "772": 103.24999999999977, + "773": 103.14999999999976, + "774": 97.49999999999976, + "775": 104.24999999999977, + "776": 105.34999999999978, + "777": 84.54999999999984, + "778": 104.84999999999975, + "779": 104.04999999999973, + "780": 103.84999999999977, + "781": 106.94999999999973, + "782": 100.54999999999976, + "783": 80.19999999999978, + "784": 105.39999999999972, + "785": 103.74999999999977, + "786": 104.79999999999976, + "787": 107.49999999999973, + "788": 106.54999999999973, + "789": -39.34999999999994, + "790": 107.29999999999974, + "791": -74.0, + "792": 107.14999999999974, + "793": 102.84999999999977, + "794": 93.24999999999972, + "795": 108.14999999999974, + "796": -67.60000000000002, + "797": 103.89999999999976, + "798": 105.39999999999972, + "799": 104.99999999999973, + "800": 102.39999999999975, + "801": 106.74999999999977, + "802": 103.09999999999972, + "803": 105.39999999999974, + "804": 100.54999999999977, + "805": 109.39999999999976, + "806": 111.59999999999977, + "807": 104.84999999999974, + "808": 104.09999999999977, + "809": -102.30000000000001, + "810": 104.74999999999974, + "811": 106.19999999999973, + "812": 104.89999999999974, + "813": -72.50000000000001, + "814": 104.94999999999975, + "815": 103.84999999999977, + "816": 103.99999999999974, + "817": -64.64999999999999, + "818": 105.09999999999974, + "819": 105.99999999999972, + "820": 24.24999999999989, + "821": 102.74999999999977, + "822": 100.09999999999977, + "823": 104.19999999999976, + "824": 109.59999999999981, + "825": 105.09999999999972, + "826": 102.59999999999977, + "827": 102.94999999999976, + "828": -76.85000000000002, + "829": 106.19999999999975, + "830": 90.54999999999974, + "831": 41.94999999999977, + "832": -87.19999999999999, + "833": 106.49999999999974, + "834": 103.29999999999977, + "835": 106.24999999999972, + "836": 106.24999999999973, + "837": 104.84999999999975, + "838": 105.29999999999974, + "839": 103.59999999999977, + "840": 91.04999999999981, + "841": 103.59999999999975, + "842": 103.99999999999976, + "843": 106.24999999999973, + "844": 74.99999999999987, + "845": 103.29999999999977, + "846": 104.04999999999976, + "847": 106.99999999999973, + "848": -83.75000000000001, + "849": 105.79999999999973, + "850": -76.30000000000001, + "851": 105.24999999999972, + "852": 105.79999999999973, + "853": 100.84999999999977, + "854": 104.99999999999976, + "855": 105.09999999999972, + "856": 83.89999999999976, + "857": 107.24999999999983, + "858": 103.54999999999977, + "859": -72.05, + "860": 104.09999999999972, + "861": 103.59999999999977, + "862": 104.84999999999975, + "863": -74.89999999999999, + "864": 103.04999999999977, + "865": 104.29999999999977, + "866": 99.69999999999975, + "867": 104.24999999999974, + "868": 95.74999999999976, + "869": 104.59999999999975, + "870": 100.24999999999977, + "871": 104.04999999999976, + "872": 102.64999999999976, + "873": 104.59999999999975, + "874": 102.74999999999977, + "875": 104.39999999999975, + "876": 102.89999999999978, + "877": 104.54999999999977, + "878": 103.74999999999977, + "879": -79.10000000000001, + "880": 104.24999999999976, + "881": 103.49999999999977, + "882": -86.35000000000002, + "883": 103.39999999999976, + "884": 105.39999999999975, + "885": 100.3499999999998, + "886": 107.29999999999973, + "887": 104.09999999999975, + "888": 102.69999999999978, + "889": 101.84999999999977, + "890": 105.29999999999974, + "891": 103.54999999999977, + "892": 102.24999999999976, + "893": 105.29999999999973, + "894": 102.24999999999977, + "895": 97.74999999999973, + "896": 105.94999999999972, + "897": 103.84999999999977, + "898": 68.49999999999977, + "899": 97.24999999999977, + "900": -85.44999999999999, + "901": 103.79999999999977, + "902": 101.29999999999978, + "903": 101.94999999999976, + "904": 105.84999999999981, + "905": 105.44999999999982, + "906": 104.09999999999975, + "907": 109.04999999999977, + "908": 105.44999999999975, + "909": 103.19999999999978, + "910": 105.14999999999979, + "911": -85.65, + "912": 101.89999999999976, + "913": 108.25000000000006, + "914": 107.04999999999971, + "915": 107.29999999999977, + "916": 104.89999999999978, + "917": 104.24999999999976, + "918": 104.69999999999975, + "919": 105.4499999999998, + "920": 108.49999999999986, + "921": 108.34999999999987, + "922": 99.99999999999974, + "923": 2.0499999999999616, + "924": 103.64999999999975, + "925": 104.49999999999974, + "926": 103.84999999999977, + "927": 107.3, + "928": 104.59999999999977, + "929": 103.84999999999977, + "930": 10.249999999999922, + "931": 103.24999999999976, + "932": 105.59999999999974, + "933": 105.59999999999977, + "934": 97.09999999999977, + "935": 105.44999999999973, + "936": 104.09999999999972, + "937": 103.69999999999976, + "938": 105.29999999999974, + "939": 25.800000000000054, + "940": 105.59999999999975, + "941": 105.49999999999974, + "942": -74.49999999999999, + "943": 105.54999999999974, + "944": 104.14999999999976, + "945": 103.39999999999976, + "946": 104.79999999999976, + "947": 103.09999999999977, + "948": 54.35, + "949": 87.79999999999978, + "950": 104.19999999999976, + "951": 105.64999999999974, + "952": 104.49999999999974, + "953": 103.44999999999976, + "954": 61.849999999999945, + "955": 104.64999999999974, + "956": 103.54999999999977, + "957": 104.39999999999976, + "958": 102.69999999999978, + "959": 103.19999999999976, + "960": 103.04999999999977, + "961": 104.39999999999976, + "962": 82.99999999999973, + "963": 105.14999999999974, + "964": 104.04999999999974, + "965": 105.29999999999981, + "966": 105.04999999999974, + "967": -91.4, + "968": 105.09999999999974, + "969": 106.94999999999995, + "970": -50.55, + "971": 104.24999999999976, + "972": 104.09999999999981, + "973": -86.0, + "974": -32.00000000000002, + "975": 108.34999999999977, + "976": 106.34999999999984, + "977": -85.35, + "978": -45.9, + "979": 110.29999999999991, + "980": 108.49999999999976, + "981": 105.74999999999972, + "982": 104.59999999999977, + "983": 106.44999999999972, + "984": 105.59999999999974, + "985": -87.0, + "986": 106.69999999999978, + "987": 104.34999999999975, + "988": -53.199999999999974, + "989": 112.05000000000018, + "990": 104.34999999999972, + "991": 102.64999999999976, + "992": -84.9, + "993": -39.350000000000044, + "994": 103.94999999999976, + "995": 102.04999999999977, + "996": 103.64999999999976, + "997": 100.3499999999998, + "998": 84.7999999999998, + "999": 105.09999999999974, + "1000": 106.89999999999974 + } +} \ No newline at end of file diff --git a/benchmark/results/v3/v3.3.0/v3.3.0_benchmark_metadata.json b/benchmark/results/v3/v3.3.0/v3.3.0_benchmark_metadata.json new file mode 100644 index 00000000..b87c59c4 --- /dev/null +++ b/benchmark/results/v3/v3.3.0/v3.3.0_benchmark_metadata.json @@ -0,0 +1,7445 @@ +{ + "start_timestamp": "2024-09-02T07:51:23.135859", + "end_datetime": "2024-09-02T09:52:55.690035", + "primaite_version": "3.3.0", + "system_info": { + "System": { + "OS": "Linux", + "OS Version": "#76~20.04.1-Ubuntu SMP Thu Jun 13 18:00:23 UTC 2024", + "Machine": "x86_64", + "Processor": "x86_64" + }, + "CPU": { + "Physical Cores": 2, + "Total Cores": 4, + "Max Frequency": "0.00Mhz" + }, + "Memory": { + "Total": "15.62GB", + "Swap Total": "0.00B" + }, + "GPU": [] + }, + "total_sessions": 5, + "total_episodes": 5005, + "total_time_steps": 640000, + "av_s_per_session": 1458.2831048, + "av_s_per_step": 0.045571347025, + "av_s_per_100_steps_10_nodes": 4.557134702499999, + "combined_total_reward_per_episode": { + "1": -31.150000000000027, + "2": -24.120000000000005, + "3": -58.980000000000054, + "4": -27.500000000000018, + "5": -45.17999999999997, + "6": -48.62999999999999, + "7": -24.21, + "8": -40.81999999999998, + "9": -38.09999999999998, + "10": -33.23000000000004, + "11": -40.03000000000001, + "12": -21.52999999999998, + "13": -32.470000000000006, + "14": -20.189999999999976, + "15": -35.86000000000003, + "16": -56.580000000000055, + "17": -40.67, + "18": -36.28000000000003, + "19": -25.27999999999999, + "20": -34.830000000000005, + "21": -37.80000000000001, + "22": -24.780000000000037, + "23": -36.100000000000016, + "24": -58.85999999999998, + "25": -44.12000000000001, + "26": -44.88000000000005, + "27": -47.86000000000003, + "28": -24.62999999999999, + "29": -32.91000000000004, + "30": -31.480000000000054, + "31": -11.87999999999999, + "32": -33.00000000000004, + "33": -29.439999999999998, + "34": -26.599999999999984, + "35": -27.00999999999998, + "36": -27.330000000000002, + "37": -20.46, + "38": -17.77999999999997, + "39": -34.75999999999998, + "40": -19.549999999999994, + "41": -45.23999999999998, + "42": -14.519999999999976, + "43": -31.900000000000006, + "44": -29.989999999999988, + "45": -23.990000000000006, + "46": -19.049999999999983, + "47": -38.3, + "48": -29.439999999999962, + "49": -42.929999999999986, + "50": -28.78000000000001, + "51": -27.989999999999974, + "52": -37.06000000000004, + "53": -26.189999999999987, + "54": -26.169999999999995, + "55": -33.34999999999999, + "56": -25.149999999999988, + "57": -21.830000000000002, + "58": -30.109999999999996, + "59": -40.110000000000014, + "60": -29.699999999999996, + "61": -40.45, + "62": -55.30999999999999, + "63": -12.659999999999979, + "64": -8.93999999999997, + "65": -44.79999999999999, + "66": -23.430000000000017, + "67": -42.80000000000003, + "68": -20.779999999999994, + "69": -28.339999999999957, + "70": -55.60999999999999, + "71": -38.780000000000015, + "72": -19.209999999999987, + "73": -13.119999999999987, + "74": -23.060000000000002, + "75": -12.809999999999985, + "76": -30.29000000000001, + "77": -43.290000000000035, + "78": -13.96999999999999, + "79": -25.77000000000001, + "80": -42.06999999999998, + "81": -47.51000000000003, + "82": -30.359999999999992, + "83": -23.109999999999985, + "84": -27.729999999999997, + "85": -30.330000000000005, + "86": -24.25999999999997, + "87": -48.58999999999999, + "88": -51.84999999999998, + "89": -11.189999999999992, + "90": -30.869999999999983, + "91": -14.449999999999983, + "92": -26.95999999999996, + "93": -27.529999999999994, + "94": -41.559999999999995, + "95": -34.67000000000001, + "96": -11.709999999999974, + "97": -20.82999999999998, + "98": -21.28000000000001, + "99": -33.040000000000006, + "100": -18.92, + "101": -8.719999999999988, + "102": -31.490000000000002, + "103": -31.589999999999996, + "104": -45.46000000000001, + "105": -26.609999999999978, + "106": -31.169999999999998, + "107": -11.370000000000031, + "108": -31.129999999999978, + "109": -28.180000000000014, + "110": -3.689999999999988, + "111": -42.41000000000003, + "112": -45.730000000000004, + "113": -25.38999999999998, + "114": -4.759999999999978, + "115": -25.609999999999992, + "116": -15.369999999999994, + "117": -17.519999999999982, + "118": -12.899999999999988, + "119": -26.37000000000001, + "120": -27.669999999999987, + "121": 1.6599999999999788, + "122": -15.489999999999972, + "123": -9.929999999999968, + "124": -13.20999999999998, + "125": -16.640000000000004, + "126": -26.279999999999983, + "127": -6.199999999999985, + "128": -12.840000000000014, + "129": 3.2000000000000206, + "130": -4.3099999999999925, + "131": -49.72000000000001, + "132": -17.910000000000004, + "133": -10.069999999999997, + "134": -2.340000000000021, + "135": -10.349999999999973, + "136": -7.959999999999985, + "137": 0.2799999999999724, + "138": 7.499999999999981, + "139": -14.170000000000007, + "140": 1.790000000000011, + "141": -21.550000000000015, + "142": -19.949999999999992, + "143": -25.629999999999985, + "144": -1.7200000000000384, + "145": -34.04999999999999, + "146": -35.960000000000015, + "147": -13.890000000000049, + "148": -35.07000000000001, + "149": -16.080000000000005, + "150": -16.429999999999986, + "151": -12.899999999999974, + "152": -13.199999999999983, + "153": 11.760000000000002, + "154": -11.419999999999987, + "155": -42.459999999999994, + "156": 4.920000000000014, + "157": -23.740000000000027, + "158": -9.159999999999979, + "159": -14.330000000000052, + "160": -40.329999999999984, + "161": -17.169999999999966, + "162": -22.860000000000035, + "163": -49.34999999999999, + "164": 0.21999999999996903, + "165": -44.469999999999985, + "166": -7.800000000000011, + "167": -8.789999999999983, + "168": 0.7400000000000091, + "169": -15.620000000000019, + "170": -37.639999999999965, + "171": -17.270000000000007, + "172": 6.609999999999999, + "173": -9.319999999999975, + "174": -25.53000000000001, + "175": -5.8800000000000185, + "176": -21.32999999999999, + "177": -27.679999999999996, + "178": -11.169999999999984, + "179": -32.34000000000003, + "180": -16.680000000000017, + "181": -23.170000000000044, + "182": 2.4100000000000144, + "183": -34.49, + "184": 14.399999999999974, + "185": -7.49, + "186": -13.279999999999987, + "187": 3.359999999999979, + "188": -14.279999999999998, + "189": -36.42000000000002, + "190": -35.84000000000003, + "191": 4.539999999999978, + "192": -12.909999999999977, + "193": -19.490000000000002, + "194": 13.959999999999974, + "195": -19.449999999999992, + "196": 0.7100000000000165, + "197": -14.080000000000036, + "198": -16.15000000000005, + "199": 1.7799999999999216, + "200": -24.000000000000046, + "201": 3.0499999999999567, + "202": -5.779999999999932, + "203": 15.749999999999963, + "204": 7.589999999999941, + "205": 3.0800000000000103, + "206": -19.850000000000016, + "207": -13.800000000000017, + "208": 6.149999999999972, + "209": 3.7199999999999465, + "210": -0.5300000000000026, + "211": 34.69999999999997, + "212": 13.419999999999892, + "213": 15.189999999999946, + "214": 16.299999999999972, + "215": -19.050000000000033, + "216": -6.830000000000007, + "217": -7.000000000000009, + "218": 22.429999999999986, + "219": -35.6, + "220": 6.999999999999927, + "221": -4.110000000000063, + "222": 36.799999999999905, + "223": -2.720000000000055, + "224": 22.22999999999995, + "225": -0.17999999999999616, + "226": 2.3199999999999377, + "227": 2.4299999999999953, + "228": -10.180000000000007, + "229": 1.209999999999996, + "230": -17.150000000000052, + "231": 0.009999999999945431, + "232": 44.68999999999996, + "233": -5.98999999999999, + "234": 22.259999999999955, + "235": 28.619999999999965, + "236": 0.23999999999989718, + "237": -11.379999999999999, + "238": -1.0200000000000045, + "239": -2.4800000000001, + "240": 4.389999999999977, + "241": 37.929999999999964, + "242": 24.259999999999923, + "243": -13.700000000000045, + "244": -0.44000000000004036, + "245": 0.3800000000000523, + "246": 11.13999999999992, + "247": 28.129999999999985, + "248": 20.419999999999867, + "249": -7.110000000000016, + "250": 13.539999999999978, + "251": 30.079999999999934, + "252": 34.03999999999993, + "253": 20.980000000000036, + "254": -15.620000000000037, + "255": 21.61999999999992, + "256": 34.64999999999996, + "257": 20.19999999999998, + "258": 9.09, + "259": 45.66999999999995, + "260": 23.619999999999873, + "261": 39.32999999999989, + "262": 39.34999999999998, + "263": -4.2700000000000475, + "264": 22.929999999999975, + "265": 43.40999999999989, + "266": 47.399999999999906, + "267": 10.189999999999973, + "268": 34.369999999999926, + "269": -4.230000000000075, + "270": 26.829999999999973, + "271": 3.339999999999938, + "272": 14.159999999999908, + "273": 44.669999999999916, + "274": 36.76999999999992, + "275": -15.070000000000025, + "276": 47.57999999999996, + "277": 14.60999999999992, + "278": 29.189999999999934, + "279": 32.689999999999955, + "280": -9.950000000000014, + "281": 34.77999999999991, + "282": 3.6899999999999635, + "283": 31.219999999999935, + "284": 4.25999999999997, + "285": -15.660000000000007, + "286": 13.629999999999976, + "287": 33.17999999999989, + "288": -0.5700000000000784, + "289": 33.59999999999989, + "290": 47.70999999999989, + "291": 49.729999999999905, + "292": 14.299999999999926, + "293": 55.01999999999994, + "294": 7.129999999999946, + "295": 16.76999999999986, + "296": 42.690000000000026, + "297": 31.47999999999991, + "298": 53.39999999999998, + "299": 21.41999999999994, + "300": 23.90999999999995, + "301": 42.98999999999989, + "302": 40.08999999999988, + "303": -5.340000000000016, + "304": 41.81999999999988, + "305": 4.379999999999972, + "306": 16.579999999999938, + "307": 44.09000000000002, + "308": 29.949999999999932, + "309": -6.280000000000088, + "310": 35.53999999999984, + "311": 28.089999999999947, + "312": 24.869999999999955, + "313": 32.00999999999999, + "314": 40.7799999999999, + "315": 31.34999999999993, + "316": 35.95999999999991, + "317": 60.019999999999825, + "318": 20.52999999999991, + "319": 13.309999999999894, + "320": 5.959999999999939, + "321": 17.189999999999948, + "322": 54.0699999999999, + "323": 39.47999999999989, + "324": 18.23999999999995, + "325": 25.979999999999887, + "326": 46.820000000000036, + "327": 32.4199999999999, + "328": 55.68999999999986, + "329": 42.029999999999966, + "330": 42.81999999999991, + "331": 9.429999999999959, + "332": 40.06999999999995, + "333": 20.679999999999925, + "334": 12.259999999999945, + "335": 53.54999999999991, + "336": 26.949999999999967, + "337": 57.819999999999915, + "338": 40.59999999999989, + "339": 14.219999999999976, + "340": 41.11999999999993, + "341": 26.529999999999887, + "342": 82.85999999999987, + "343": 54.69999999999993, + "344": 36.91999999999997, + "345": 63.75999999999992, + "346": 47.86999999999993, + "347": 15.77000000000001, + "348": 58.689999999999905, + "349": 17.36999999999992, + "350": 75.84999999999992, + "351": 38.12999999999988, + "352": 48.089999999999904, + "353": 30.059999999999967, + "354": 47.14999999999994, + "355": 15.969999999999947, + "356": 45.139999999999944, + "357": 35.809999999999974, + "358": 49.07999999999996, + "359": 30.229999999999972, + "360": 57.629999999999924, + "361": 48.519999999999996, + "362": 55.279999999999916, + "363": 69.58999999999995, + "364": 8.40999999999992, + "365": 32.8199999999999, + "366": 55.37999999999994, + "367": 24.869999999999965, + "368": 51.60999999999994, + "369": 45.65999999999997, + "370": 4.459999999999994, + "371": 81.42999999999995, + "372": 27.13999999999994, + "373": 61.599999999999945, + "374": 61.43999999999987, + "375": 20.80000000000003, + "376": 55.02999999999996, + "377": 61.54999999999984, + "378": 19.74999999999989, + "379": 46.219999999999985, + "380": 28.869999999999948, + "381": 37.1499999999999, + "382": 60.099999999999866, + "383": 67.3199999999999, + "384": 70.66000000000001, + "385": 57.57999999999991, + "386": 75.86999999999996, + "387": 51.979999999999905, + "388": -20.53000000000003, + "389": 61.079999999999814, + "390": 60.70999999999994, + "391": 38.579999999999956, + "392": 35.54999999999991, + "393": 46.25999999999992, + "394": 63.359999999999914, + "395": 66.2699999999999, + "396": 57.399999999999906, + "397": 41.03999999999989, + "398": 50.29999999999992, + "399": 50.559999999999874, + "400": 27.499999999999904, + "401": 90.24999999999999, + "402": 62.03999999999995, + "403": 65.60999999999987, + "404": 47.489999999999945, + "405": 46.15999999999988, + "406": 24.029999999999962, + "407": 53.949999999999896, + "408": 62.509999999999934, + "409": 73.69999999999996, + "410": 59.159999999999926, + "411": 35.57999999999987, + "412": 76.12999999999982, + "413": 23.87999999999991, + "414": 71.43999999999994, + "415": 47.32999999999995, + "416": 71.10999999999989, + "417": 39.41999999999994, + "418": 61.71999999999989, + "419": 58.929999999999964, + "420": 52.46999999999986, + "421": 54.10999999999988, + "422": 45.10999999999985, + "423": 65.15999999999983, + "424": 49.32999999999995, + "425": 73.25999999999983, + "426": 36.73999999999988, + "427": 43.499999999999915, + "428": 16.95999999999999, + "429": 55.30999999999987, + "430": 66.1899999999999, + "431": 74.72999999999993, + "432": 58.269999999999825, + "433": 62.199999999999974, + "434": 63.50999999999984, + "435": 41.00999999999989, + "436": 43.839999999999854, + "437": 47.52999999999988, + "438": 35.90999999999993, + "439": -5.400000000000036, + "440": 47.94999999999989, + "441": 60.04999999999994, + "442": 68.68999999999994, + "443": 65.46999999999994, + "444": 58.889999999999986, + "445": 66.55999999999992, + "446": 48.54999999999988, + "447": 57.32999999999997, + "448": 71.9599999999999, + "449": 58.319999999999936, + "450": 45.3899999999999, + "451": 51.959999999999965, + "452": 63.91999999999983, + "453": 44.42999999999995, + "454": 66.66999999999987, + "455": 63.289999999999864, + "456": 56.299999999999876, + "457": 53.309999999999924, + "458": 58.79999999999992, + "459": 49.09999999999991, + "460": 39.46999999999994, + "461": 62.69999999999989, + "462": 67.79999999999987, + "463": 69.79999999999981, + "464": 56.479999999999926, + "465": 75.68999999999994, + "466": 77.67999999999982, + "467": 63.219999999999914, + "468": 58.65999999999991, + "469": 82.18999999999983, + "470": 77.21999999999989, + "471": 61.6899999999999, + "472": 66.9599999999999, + "473": 72.02999999999989, + "474": 17.75999999999995, + "475": 75.15999999999988, + "476": 39.530000000000015, + "477": 51.84999999999989, + "478": 20.799999999999905, + "479": 60.65999999999991, + "480": 78.91999999999989, + "481": 63.79999999999984, + "482": 48.69999999999991, + "483": 29.709999999999887, + "484": 87.03999999999985, + "485": 49.729999999999905, + "486": 79.38999999999992, + "487": 44.49999999999987, + "488": 64.10999999999987, + "489": 78.28999999999992, + "490": 55.85999999999986, + "491": 73.13999999999987, + "492": 57.13999999999986, + "493": 57.32999999999987, + "494": 42.10999999999992, + "495": 78.93999999999987, + "496": 60.34999999999987, + "497": 62.12999999999992, + "498": 55.62999999999986, + "499": 88.21999999999991, + "500": 80.0799999999999, + "501": 97.4499999999999, + "502": 40.44999999999989, + "503": 54.74999999999985, + "504": 65.29999999999987, + "505": 92.9599999999999, + "506": 60.41999999999986, + "507": 68.62999999999991, + "508": 55.53999999999993, + "509": 62.129999999999896, + "510": 29.11999999999988, + "511": 62.89999999999985, + "512": 89.11999999999986, + "513": 58.33999999999986, + "514": 65.95999999999982, + "515": 44.56999999999986, + "516": 67.79999999999991, + "517": 64.34999999999984, + "518": 70.67999999999986, + "519": 69.77999999999989, + "520": 34.339999999999904, + "521": -19.680000000000057, + "522": 41.51999999999989, + "523": 31.16999999999991, + "524": 55.42999999999986, + "525": 46.69999999999986, + "526": 41.74999999999991, + "527": 85.8899999999998, + "528": 53.35999999999988, + "529": 57.659999999999854, + "530": 53.68999999999987, + "531": 62.419999999999845, + "532": 69.86999999999993, + "533": 71.6499999999999, + "534": 71.10999999999993, + "535": 71.1699999999999, + "536": 69.13999999999987, + "537": 42.4699999999999, + "538": 62.81999999999986, + "539": 67.7799999999999, + "540": 64.84999999999987, + "541": 46.23999999999984, + "542": 60.33999999999992, + "543": 57.64999999999983, + "544": 59.76999999999987, + "545": 47.08999999999992, + "546": 83.2099999999999, + "547": 87.65999999999988, + "548": 59.2199999999999, + "549": 35.779999999999916, + "550": 75.05999999999987, + "551": 16.699999999999932, + "552": 80.55999999999989, + "553": 67.99999999999993, + "554": 4.33999999999993, + "555": 63.51999999999988, + "556": 76.58999999999983, + "557": 62.71999999999987, + "558": 66.86999999999989, + "559": 2.429999999999919, + "560": 22.04999999999995, + "561": 52.72999999999986, + "562": 79.3599999999999, + "563": 36.519999999999996, + "564": 40.33999999999993, + "565": 51.28999999999994, + "566": 83.02999999999984, + "567": 74.00999999999985, + "568": 59.53999999999989, + "569": 50.489999999999874, + "570": 89.86999999999988, + "571": 43.7999999999999, + "572": 40.98999999999989, + "573": 73.21999999999989, + "574": 38.84999999999992, + "575": 54.66999999999989, + "576": 75.30999999999986, + "577": 56.409999999999854, + "578": 15.349999999999891, + "579": 67.74999999999991, + "580": 44.49999999999987, + "581": 41.91999999999992, + "582": 81.98999999999992, + "583": 54.11999999999987, + "584": 45.53999999999987, + "585": 73.87999999999985, + "586": 65.20999999999991, + "587": 66.29999999999984, + "588": 27.9099999999999, + "589": 88.97999999999993, + "590": 41.349999999999866, + "591": 71.80999999999985, + "592": 30.209999999999944, + "593": 70.7599999999999, + "594": 57.809999999999874, + "595": 62.61999999999985, + "596": 78.34999999999994, + "597": 57.789999999999864, + "598": 88.19999999999986, + "599": 69.78999999999982, + "600": 84.57999999999988, + "601": 62.049999999999876, + "602": 61.70999999999988, + "603": 88.40999999999994, + "604": 44.849999999999845, + "605": 54.809999999999874, + "606": 40.05999999999993, + "607": 45.78999999999994, + "608": 71.36999999999995, + "609": 77.25999999999988, + "610": 55.13999999999985, + "611": 68.14999999999989, + "612": 40.43999999999994, + "613": 36.559999999999945, + "614": 27.049999999999994, + "615": 24.469999999999875, + "616": 48.049999999999855, + "617": 78.8499999999999, + "618": 59.3599999999999, + "619": 96.93999999999987, + "620": 70.88999999999989, + "621": 90.40999999999988, + "622": 16.789999999999907, + "623": 91.88999999999982, + "624": 63.09999999999991, + "625": 94.99999999999989, + "626": 84.2899999999999, + "627": 36.77999999999988, + "628": 55.23999999999994, + "629": 25.559999999999892, + "630": 85.34999999999991, + "631": 90.93999999999986, + "632": 56.59999999999993, + "633": 82.9999999999999, + "634": 82.40999999999984, + "635": 72.03999999999985, + "636": 73.71999999999986, + "637": 36.0599999999999, + "638": 29.63999999999993, + "639": 67.5299999999999, + "640": 70.25999999999988, + "641": 86.66999999999992, + "642": 26.199999999999903, + "643": 89.00999999999989, + "644": 77.11999999999993, + "645": 88.12999999999991, + "646": 74.42999999999984, + "647": 85.10999999999983, + "648": 95.67999999999988, + "649": 89.8199999999999, + "650": 94.53999999999988, + "651": 80.91999999999987, + "652": 77.1599999999999, + "653": 83.19999999999995, + "654": 80.42999999999978, + "655": 93.12999999999991, + "656": 79.25999999999989, + "657": 80.28999999999994, + "658": 90.05999999999989, + "659": 87.8999999999999, + "660": 82.50999999999985, + "661": 80.87999999999997, + "662": 85.82999999999984, + "663": 71.14999999999984, + "664": 67.14999999999986, + "665": 64.47999999999995, + "666": 81.85999999999987, + "667": 71.77999999999993, + "668": 74.49999999999987, + "669": 88.01999999999984, + "670": 49.619999999999905, + "671": 87.53999999999992, + "672": 75.94999999999989, + "673": 96.44999999999987, + "674": 61.069999999999865, + "675": 79.25999999999988, + "676": 96.96999999999994, + "677": 66.85999999999981, + "678": 78.09999999999985, + "679": 83.48999999999987, + "680": 84.3199999999999, + "681": 92.7499999999999, + "682": 102.71999999999987, + "683": 75.51999999999987, + "684": 59.20999999999992, + "685": 102.98999999999987, + "686": 89.12999999999985, + "687": 99.39999999999989, + "688": 90.64999999999986, + "689": 87.73999999999987, + "690": 74.44999999999982, + "691": 46.939999999999884, + "692": 99.60999999999989, + "693": 77.02999999999984, + "694": 74.4699999999998, + "695": 89.31999999999991, + "696": 79.11999999999983, + "697": 64.69999999999987, + "698": 99.41999999999993, + "699": 79.41999999999992, + "700": 91.34999999999988, + "701": 78.63999999999986, + "702": 84.61999999999986, + "703": 89.1999999999999, + "704": 86.58999999999986, + "705": 57.85999999999992, + "706": 63.02999999999995, + "707": 79.87999999999981, + "708": 85.51999999999987, + "709": 81.30999999999983, + "710": 58.74999999999985, + "711": 97.47999999999989, + "712": 56.329999999999885, + "713": 60.639999999999915, + "714": 81.75999999999988, + "715": 100.21999999999991, + "716": 53.55999999999998, + "717": 84.63999999999986, + "718": 77.35999999999993, + "719": 93.23999999999991, + "720": 80.8599999999999, + "721": 99.93999999999987, + "722": 93.12999999999985, + "723": 64.61999999999983, + "724": 83.14999999999984, + "725": 60.479999999999926, + "726": 56.24999999999991, + "727": 65.77999999999994, + "728": 100.52999999999989, + "729": 100.33999999999992, + "730": 52.29999999999993, + "731": 94.60999999999989, + "732": 68.58999999999988, + "733": 98.22999999999993, + "734": 86.17999999999988, + "735": 99.38999999999989, + "736": 87.50999999999985, + "737": 99.46999999999989, + "738": 16.159999999999954, + "739": 71.85999999999987, + "740": 82.37999999999988, + "741": 66.0499999999999, + "742": 92.3299999999999, + "743": 89.84999999999984, + "744": 95.31999999999987, + "745": 84.71999999999986, + "746": 78.92999999999984, + "747": 93.5699999999999, + "748": 93.52999999999983, + "749": 89.48999999999991, + "750": 85.6499999999999, + "751": 71.53999999999985, + "752": 67.47999999999982, + "753": 84.32999999999986, + "754": 50.4699999999999, + "755": 83.53999999999992, + "756": 77.1399999999999, + "757": 95.58999999999985, + "758": 53.07999999999993, + "759": 92.86999999999985, + "760": 98.02999999999989, + "761": 44.7499999999999, + "762": 95.08999999999992, + "763": 58.31999999999992, + "764": 62.00999999999991, + "765": 66.59999999999994, + "766": 34.289999999999885, + "767": 76.93999999999987, + "768": 80.9399999999999, + "769": 87.79999999999987, + "770": 91.29999999999981, + "771": 73.79999999999987, + "772": 80.84999999999984, + "773": 96.99999999999991, + "774": 84.76999999999991, + "775": 90.72999999999985, + "776": 86.16999999999992, + "777": 86.59999999999987, + "778": 79.21999999999986, + "779": 95.07999999999984, + "780": 52.3599999999999, + "781": 86.30999999999986, + "782": 93.44999999999996, + "783": 68.1199999999999, + "784": 85.38999999999987, + "785": 90.94999999999989, + "786": 89.04999999999984, + "787": 85.90999999999985, + "788": 52.78999999999987, + "789": 62.48999999999994, + "790": 55.99999999999992, + "791": 55.00999999999992, + "792": 89.63999999999984, + "793": 97.70999999999988, + "794": 75.07999999999986, + "795": 55.79999999999991, + "796": 56.49999999999991, + "797": 101.19999999999992, + "798": 93.62999999999985, + "799": 85.59999999999982, + "800": 95.69999999999985, + "801": 86.62999999999984, + "802": 54.78999999999992, + "803": 94.71999999999986, + "804": 91.83999999999983, + "805": 90.16999999999986, + "806": 99.02999999999989, + "807": 92.68999999999983, + "808": 68.22999999999986, + "809": 57.33999999999992, + "810": 87.91999999999989, + "811": 90.87999999999992, + "812": 100.60999999999987, + "813": 3.6900000000000235, + "814": 97.26999999999985, + "815": 62.34999999999993, + "816": 87.77999999999983, + "817": 46.459999999999866, + "818": 47.78999999999992, + "819": 76.31999999999996, + "820": 77.87999999999991, + "821": 90.05999999999986, + "822": 97.64999999999986, + "823": 100.41999999999987, + "824": 74.38999999999993, + "825": 96.60999999999987, + "826": 76.24999999999984, + "827": 94.95999999999984, + "828": 48.219999999999914, + "829": 66.92999999999995, + "830": 99.10999999999989, + "831": 81.76999999999984, + "832": 8.239999999999947, + "833": 101.3899999999999, + "834": 43.83999999999988, + "835": 99.39999999999996, + "836": 99.57999999999988, + "837": 92.05999999999985, + "838": 87.89999999999984, + "839": 89.14999999999989, + "840": 79.41999999999987, + "841": 51.6599999999999, + "842": 88.8999999999998, + "843": 91.83999999999982, + "844": 74.77999999999989, + "845": 94.56999999999996, + "846": 93.10999999999986, + "847": 100.83999999999989, + "848": 52.9199999999999, + "849": 60.219999999999914, + "850": 53.67999999999989, + "851": 105.73999999999987, + "852": 99.39999999999984, + "853": 96.62999999999991, + "854": 90.24999999999991, + "855": 88.84999999999987, + "856": 54.88999999999989, + "857": 90.78999999999992, + "858": 85.85999999999983, + "859": 66.09999999999994, + "860": 101.8299999999998, + "861": 101.04999999999987, + "862": 83.80999999999986, + "863": 51.71999999999988, + "864": 77.50999999999988, + "865": 95.10999999999987, + "866": 53.18999999999985, + "867": 92.32999999999984, + "868": 95.95999999999985, + "869": 88.75999999999985, + "870": 96.64999999999988, + "871": 96.99999999999989, + "872": 57.99999999999991, + "873": 46.03999999999991, + "874": 82.18999999999988, + "875": 96.30999999999989, + "876": 64.29999999999986, + "877": 84.95999999999984, + "878": 92.92999999999981, + "879": 27.729999999999983, + "880": 88.03999999999984, + "881": 58.23999999999988, + "882": 25.149999999999956, + "883": 101.3299999999999, + "884": 48.2599999999999, + "885": 78.05999999999986, + "886": 89.76999999999984, + "887": 60.55999999999991, + "888": 87.27999999999984, + "889": 102.47999999999993, + "890": 60.76999999999987, + "891": 90.43999999999984, + "892": 60.86999999999987, + "893": 54.6899999999999, + "894": 103.0199999999999, + "895": 89.71999999999987, + "896": 102.36999999999989, + "897": 95.31999999999987, + "898": 75.11999999999986, + "899": 97.11999999999985, + "900": 47.9699999999999, + "901": 89.46999999999984, + "902": 53.61999999999989, + "903": 74.33999999999989, + "904": 68.34999999999988, + "905": 71.1499999999999, + "906": 77.70999999999982, + "907": 87.9899999999999, + "908": 56.069999999999936, + "909": 75.80999999999989, + "910": 74.84999999999988, + "911": 38.589999999999876, + "912": 49.5699999999999, + "913": 84.3299999999999, + "914": 70.18999999999981, + "915": 87.53999999999986, + "916": 82.86999999999985, + "917": 75.60999999999991, + "918": 98.35999999999999, + "919": 62.9399999999999, + "920": 68.05999999999985, + "921": 79.29999999999987, + "922": 76.33999999999985, + "923": 52.62999999999988, + "924": 84.28999999999989, + "925": 80.52999999999994, + "926": 91.28999999999985, + "927": 78.93999999999996, + "928": 88.6499999999999, + "929": 81.71999999999987, + "930": 56.21999999999999, + "931": 82.62999999999985, + "932": 74.1899999999998, + "933": 57.57999999999993, + "934": 88.31999999999987, + "935": 86.20999999999985, + "936": 100.8999999999999, + "937": 91.45999999999984, + "938": 76.67999999999986, + "939": 86.47999999999988, + "940": 89.4699999999999, + "941": 75.60999999999986, + "942": 52.4599999999999, + "943": 95.0799999999998, + "944": 91.96999999999989, + "945": 93.71999999999983, + "946": 54.33999999999992, + "947": 84.18999999999987, + "948": 87.27999999999989, + "949": 77.61999999999985, + "950": 88.46999999999984, + "951": 96.07999999999983, + "952": 100.27999999999983, + "953": 98.31999999999981, + "954": 77.91999999999986, + "955": 83.55999999999982, + "956": 61.11999999999987, + "957": 97.04999999999988, + "958": 54.61999999999988, + "959": 83.34999999999982, + "960": 96.85999999999984, + "961": 93.34999999999984, + "962": 55.779999999999845, + "963": 80.25999999999985, + "964": 92.15999999999983, + "965": 95.46999999999989, + "966": 76.94999999999985, + "967": 30.23999999999989, + "968": 85.83999999999989, + "969": 90.8899999999998, + "970": 57.699999999999875, + "971": 45.76999999999988, + "972": 80.5199999999998, + "973": 62.19999999999989, + "974": 63.879999999999846, + "975": 92.03999999999982, + "976": 53.329999999999885, + "977": 60.069999999999915, + "978": 61.579999999999885, + "979": 61.72999999999988, + "980": 47.74999999999987, + "981": 59.079999999999906, + "982": 61.999999999999844, + "983": 90.0099999999998, + "984": 87.45999999999984, + "985": 63.13999999999986, + "986": 62.959999999999866, + "987": 92.44999999999983, + "988": 72.71999999999989, + "989": 62.64000000000001, + "990": 91.84999999999985, + "991": 54.72999999999989, + "992": 65.33999999999988, + "993": 66.32999999999988, + "994": 98.44999999999986, + "995": 97.79999999999981, + "996": 93.82999999999983, + "997": 84.76999999999984, + "998": 48.80999999999989, + "999": 64.89999999999985, + "1000": 63.309999999999846 + }, + "session_total_reward_per_episode": { + "1": { + "1": -22.899999999999963, + "2": -11.84999999999998, + "3": -45.15000000000006, + "4": -11.449999999999983, + "5": -22.449999999999953, + "6": -14.549999999999981, + "7": -69.80000000000005, + "8": -23.149999999999963, + "9": -92.95, + "10": -1.6499999999999995, + "11": -41.85000000000005, + "12": -20.199999999999953, + "13": -2.049999999999983, + "14": -23.34999999999995, + "15": -66.40000000000009, + "16": -60.350000000000094, + "17": -12.69999999999998, + "18": -19.599999999999987, + "19": -13.349999999999982, + "20": -23.24999999999995, + "21": -14.399999999999986, + "22": -45.600000000000065, + "23": -49.10000000000007, + "24": -21.649999999999956, + "25": -95.7000000000001, + "26": -45.55000000000019, + "27": -21.749999999999957, + "28": -39.05, + "29": -42.900000000000105, + "30": -19.849999999999966, + "31": 7.00000000000002, + "32": -52.75000000000008, + "33": -28.799999999999976, + "34": -4.099999999999985, + "35": -34.749999999999986, + "36": -21.09999999999996, + "37": -37.00000000000011, + "38": -16.24999999999998, + "39": -15.299999999999986, + "40": -12.499999999999995, + "41": -83.54999999999981, + "42": -22.2, + "43": -84.75000000000009, + "44": -16.89999999999997, + "45": -25.49999999999999, + "46": -18.89999999999997, + "47": -11.349999999999987, + "48": -21.049999999999958, + "49": -22.99999999999995, + "50": -22.499999999999954, + "51": -70.44999999999999, + "52": -62.300000000000104, + "53": 3.049999999999968, + "54": -7.399999999999997, + "55": -16.799999999999972, + "56": -73.75, + "57": -33.30000000000002, + "58": -3.0000000000000067, + "59": -16.74999999999997, + "60": -21.699999999999957, + "61": -69.05000000000005, + "62": -98.54999999999998, + "63": -7.099999999999993, + "64": -3.749999999999984, + "65": -98.19999999999999, + "66": -60.90000000000017, + "67": -97.2, + "68": -22.199999999999953, + "69": -14.549999999999965, + "70": -20.999999999999957, + "71": -20.399999999999963, + "72": -5.599999999999977, + "73": -13.300000000000004, + "74": -14.649999999999979, + "75": -11.399999999999993, + "76": -6.699999999999988, + "77": -43.300000000000125, + "78": -30.449999999999992, + "79": -23.29999999999995, + "80": -75.85, + "81": 11.55, + "82": -37.24999999999999, + "83": -94.24999999999997, + "84": -18.74999999999999, + "85": -89.3, + "86": -27.350000000000026, + "87": -103.15000000000006, + "88": -73.15000000000002, + "89": -16.999999999999975, + "90": -31.54999999999993, + "91": -16.699999999999974, + "92": -22.699999999999953, + "93": -91.19999999999999, + "94": -18.949999999999967, + "95": -87.8, + "96": -17.89999999999997, + "97": -65.3, + "98": -16.24999999999998, + "99": -12.749999999999995, + "100": -2.199999999999976, + "101": -30.199999999999978, + "102": -69.74999999999997, + "103": -75.4, + "104": -63.35000000000011, + "105": -21.749999999999957, + "106": -15.04999999999998, + "107": -11.149999999999993, + "108": -95.4, + "109": -9.299999999999994, + "110": -7.399999999999994, + "111": -67.90000000000006, + "112": -66.00000000000001, + "113": -88.4, + "114": -14.949999999999976, + "115": 0.20000000000001994, + "116": -7.80000000000002, + "117": -10.3, + "118": 4.550000000000024, + "119": -42.250000000000114, + "120": -23.89999999999997, + "121": 8.499999999999986, + "122": -73.14999999999999, + "123": -18.749999999999968, + "124": -18.14999999999997, + "125": -2.8999999999999737, + "126": -6.199999999999982, + "127": -13.09999999999999, + "128": -11.849999999999987, + "129": 14.849999999999994, + "130": -14.749999999999977, + "131": -50.60000000000007, + "132": -39.65000000000005, + "133": 14.300000000000018, + "134": -9.399999999999993, + "135": -21.949999999999953, + "136": -16.69999999999997, + "137": 29.599999999999888, + "138": -19.99999999999996, + "139": 0.7500000000000469, + "140": 25.200000000000024, + "141": -18.399999999999967, + "142": -97.19999999999999, + "143": -90.15, + "144": 20.800000000000008, + "145": -7.900000000000008, + "146": -56.750000000000014, + "147": -81.70000000000005, + "148": -91.45, + "149": -31.10000000000001, + "150": -64.35, + "151": -59.49999999999999, + "152": -15.89999999999998, + "153": 8.65000000000002, + "154": -80.35000000000001, + "155": -84.64999999999996, + "156": -20.79999999999996, + "157": 1.900000000000028, + "158": -53.599999999999994, + "159": -86.80000000000001, + "160": -93.6, + "161": -92.14999999999995, + "162": -66.75000000000001, + "163": -78.65000000000002, + "164": -8.049999999999995, + "165": -87.99999999999997, + "166": 27.249999999999893, + "167": -35.30000000000001, + "168": -0.7999999999999727, + "169": -96.44999999999999, + "170": -53.09999999999996, + "171": -7.750000000000002, + "172": -1.2499999999999776, + "173": -63.39999999999997, + "174": -36.79999999999995, + "175": -10.09999999999999, + "176": -9.699999999999998, + "177": -48.2, + "178": -76.7, + "179": -73.59999999999995, + "180": -76.2, + "181": -88.39999999999999, + "182": -15.649999999999977, + "183": -91.14999999999998, + "184": -11.499999999999995, + "185": -21.949999999999953, + "186": -30.85000000000002, + "187": 40.64999999999981, + "188": 8.850000000000062, + "189": -77.00000000000004, + "190": -75.45, + "191": -0.8999999999999571, + "192": -47.25, + "193": -61.69999999999993, + "194": 7.100000000000066, + "195": -7.099999999999988, + "196": -4.050000000000007, + "197": -6.499999999999984, + "198": -82.9, + "199": 1.300000000000014, + "200": 9.849999999999971, + "201": -3.7499999999999805, + "202": 84.9000000000002, + "203": 8.45000000000005, + "204": -32.749999999999964, + "205": -36.44999999999997, + "206": -90.1, + "207": -84.05, + "208": -12.199999999999989, + "209": 13.94999999999997, + "210": -18.849999999999994, + "211": 16.80000000000005, + "212": 26.599999999999895, + "213": -22.84999999999995, + "214": -74.05, + "215": -8.149999999999993, + "216": -28.949999999999967, + "217": -61.29999999999995, + "218": -3.8000000000000043, + "219": -56.799999999999976, + "220": 25.85000000000001, + "221": -87.0, + "222": -64.14999999999999, + "223": -40.10000000000003, + "224": 5.250000000000007, + "225": -11.449999999999992, + "226": -0.39999999999999414, + "227": -65.19999999999999, + "228": -34.400000000000006, + "229": -5.9499999999999895, + "230": -19.349999999999966, + "231": 32.99999999999977, + "232": 6.500000000000082, + "233": -1.399999999999994, + "234": -46.099999999999966, + "235": 51.249999999999815, + "236": -68.25000000000001, + "237": -74.30000000000001, + "238": -4.049999999999976, + "239": -82.25, + "240": -28.799999999999937, + "241": 5.90000000000005, + "242": -1.949999999999961, + "243": -80.85, + "244": -12.649999999999988, + "245": -1.5999999999999868, + "246": -53.999999999999986, + "247": -65.85, + "248": -25.799999999999994, + "249": 0.8000000000000482, + "250": 8.250000000000032, + "251": 8.55000000000004, + "252": 7.000000000000038, + "253": -30.549999999999972, + "254": -49.400000000000034, + "255": 2.2000000000000446, + "256": 2.550000000000025, + "257": -17.399999999999984, + "258": -71.35, + "259": 13.550000000000004, + "260": -80.0, + "261": -10.74999999999999, + "262": 27.84999999999992, + "263": -10.95, + "264": -57.65000000000002, + "265": 25.99999999999989, + "266": 31.899999999999963, + "267": 2.4000000000000163, + "268": -71.5, + "269": -63.45000000000001, + "270": 78.64999999999993, + "271": -78.9, + "272": -13.149999999999956, + "273": -17.599999999999973, + "274": -14.24999999999999, + "275": -0.19999999999996576, + "276": -34.44999999999999, + "277": -1.999999999999969, + "278": -16.700000000000017, + "279": -55.699999999999996, + "280": -63.64999999999999, + "281": -0.04999999999998295, + "282": -35.45, + "283": -31.89999999999997, + "284": -69.44999999999997, + "285": -78.5, + "286": -1.1000000000000014, + "287": -74.20000000000002, + "288": -78.35000000000002, + "289": -81.80000000000001, + "290": -32.50000000000001, + "291": 8.750000000000028, + "292": -22.49999999999997, + "293": 6.8500000000000005, + "294": -91.6, + "295": 36.099999999999795, + "296": -81.25, + "297": 5.149999999999975, + "298": 7.249999999999992, + "299": -10.149999999999983, + "300": -68.54999999999993, + "301": -61.24999999999994, + "302": -13.749999999999988, + "303": -66.64999999999995, + "304": -72.1, + "305": -53.400000000000034, + "306": -41.95000000000002, + "307": 22.650000000000034, + "308": -78.69999999999999, + "309": -62.0, + "310": -72.04999999999997, + "311": -60.74999999999993, + "312": -77.45, + "313": -51.69999999999997, + "314": -78.50000000000001, + "315": -44.65000000000001, + "316": 15.80000000000004, + "317": 39.44999999999979, + "318": -43.999999999999964, + "319": -48.29999999999999, + "320": 42.99999999999991, + "321": -23.049999999999983, + "322": -4.899999999999984, + "323": 34.099999999999795, + "324": -62.24999999999992, + "325": -76.95, + "326": 7.3000000000000504, + "327": -101.30000000000013, + "328": -16.95000000000004, + "329": -50.199999999999996, + "330": -41.8, + "331": -60.84999999999993, + "332": 13.500000000000007, + "333": -53.04999999999998, + "334": 0.7500000000000511, + "335": 60.79999999999987, + "336": 6.50000000000005, + "337": 8.10000000000003, + "338": -63.7, + "339": -22.79999999999995, + "340": -82.69999999999999, + "341": -39.10000000000001, + "342": 39.599999999999795, + "343": -32.35000000000003, + "344": -65.24999999999994, + "345": 85.15000000000003, + "346": 18.34999999999998, + "347": -86.14999999999999, + "348": 30.99999999999976, + "349": -79.75, + "350": 43.44999999999984, + "351": -78.65000000000003, + "352": 34.799999999999834, + "353": -4.249999999999974, + "354": -39.35, + "355": -75.14999999999999, + "356": -67.94999999999999, + "357": -64.94999999999996, + "358": -54.19999999999996, + "359": -68.19999999999996, + "360": -38.10000000000001, + "361": 10.249999999999986, + "362": -2.0999999999999925, + "363": -10.299999999999955, + "364": -70.75, + "365": -59.25000000000002, + "366": -46.25000000000003, + "367": -61.64999999999998, + "368": 5.250000000000063, + "369": -24.54999999999994, + "370": -32.00000000000002, + "371": 25.10000000000001, + "372": -92.89999999999998, + "373": 26.450000000000102, + "374": -49.60000000000004, + "375": 13.300000000000011, + "376": -17.49999999999998, + "377": 7.600000000000042, + "378": -66.69999999999993, + "379": -25.049999999999994, + "380": -64.74999999999997, + "381": -64.34999999999998, + "382": -38.20000000000001, + "383": 59.04999999999991, + "384": 0.6000000000000636, + "385": 21.85000000000011, + "386": 14.049999999999986, + "387": -28.49999999999998, + "388": -65.89999999999996, + "389": 31.79999999999977, + "390": -54.74999999999997, + "391": -58.699999999999946, + "392": -73.99999999999999, + "393": 7.249999999999879, + "394": -62.55000000000001, + "395": -64.75000000000003, + "396": -64.69999999999992, + "397": -72.95, + "398": -57.300000000000026, + "399": 17.350000000000023, + "400": -77.60000000000005, + "401": 49.599999999999916, + "402": -78.75000000000009, + "403": -32.750000000000036, + "404": -13.849999999999985, + "405": -57.54999999999998, + "406": -67.64999999999996, + "407": -14.549999999999986, + "408": -38.69999999999999, + "409": -42.34999999999999, + "410": -75.05000000000001, + "411": -73.25000000000001, + "412": 36.849999999999795, + "413": -43.14999999999998, + "414": 50.84999999999989, + "415": -64.3999999999999, + "416": -17.599999999999984, + "417": -3.6999999999999673, + "418": -65.64999999999998, + "419": -11.450000000000015, + "420": -57.24999999999999, + "421": -65.54999999999995, + "422": -59.34999999999998, + "423": -64.79999999999997, + "424": -8.000000000000071, + "425": -12.900000000000041, + "426": -18.499999999999975, + "427": -24.499999999999975, + "428": -55.39999999999993, + "429": -30.89999999999997, + "430": -28.44999999999996, + "431": -12.949999999999976, + "432": -65.84999999999995, + "433": -50.99999999999996, + "434": -19.099999999999973, + "435": -68.4, + "436": -60.800000000000004, + "437": -3.9499999999999735, + "438": -10.999999999999922, + "439": -62.49999999999996, + "440": -57.299999999999976, + "441": -61.749999999999936, + "442": -46.04999999999999, + "443": -67.99999999999994, + "444": -62.64999999999992, + "445": 25.599999999999856, + "446": -55.09999999999995, + "447": -68.19999999999993, + "448": 3.499999999999991, + "449": -34.300000000000004, + "450": -29.700000000000006, + "451": 34.25000000000014, + "452": -12.100000000000064, + "453": -42.04999999999998, + "454": -29.10000000000001, + "455": -23.09999999999998, + "456": -26.79999999999995, + "457": -20.24999999999999, + "458": -52.2, + "459": -72.34999999999995, + "460": -65.34999999999991, + "461": -55.79999999999996, + "462": -41.65000000000001, + "463": -33.04999999999998, + "464": 22.450000000000095, + "465": 95.45000000000006, + "466": 41.64999999999985, + "467": -50.09999999999998, + "468": 6.800000000000042, + "469": 37.55, + "470": -13.75000000000001, + "471": 10.600000000000062, + "472": -62.24999999999993, + "473": -16.699999999999964, + "474": -56.79999999999995, + "475": -27.550000000000004, + "476": 84.70000000000005, + "477": -59.54999999999993, + "478": -74.04999999999998, + "479": -74.99999999999987, + "480": 28.04999999999995, + "481": -25.19999999999999, + "482": -96.60000000000001, + "483": -20.700000000000014, + "484": 77.85000000000011, + "485": -50.849999999999945, + "486": 28.700000000000042, + "487": -58.649999999999935, + "488": -35.949999999999974, + "489": -24.349999999999934, + "490": -54.0, + "491": -14.149999999999975, + "492": -44.8499999999999, + "493": -66.24999999999991, + "494": -10.149999999999965, + "495": 1.499999999999983, + "496": 26.350000000000072, + "497": -57.949999999999974, + "498": -54.799999999999955, + "499": 33.00000000000012, + "500": 7.250000000000083, + "501": 74.15000000000002, + "502": 21.699999999999974, + "503": -73.0999999999999, + "504": -15.34999999999998, + "505": 70.99999999999991, + "506": -66.84999999999991, + "507": -61.649999999999935, + "508": -58.94999999999998, + "509": -41.09999999999997, + "510": -26.349999999999994, + "511": -65.6999999999999, + "512": 44.44999999999985, + "513": -70.19999999999989, + "514": 65.74999999999986, + "515": -50.59999999999994, + "516": -66.84999999999997, + "517": -64.04999999999998, + "518": -25.099999999999998, + "519": -59.99999999999991, + "520": -67.19999999999997, + "521": -21.99999999999999, + "522": -49.89999999999998, + "523": -27.19999999999997, + "524": -51.04999999999998, + "525": -30.54999999999997, + "526": -38.25, + "527": 67.24999999999982, + "528": -63.899999999999935, + "529": -62.44999999999999, + "530": -36.05000000000003, + "531": -67.59999999999995, + "532": -67.89999999999992, + "533": -64.14999999999999, + "534": -22.099999999999984, + "535": -62.64999999999992, + "536": -52.49999999999997, + "537": -76.15000000000006, + "538": -15.750000000000046, + "539": -59.89999999999995, + "540": -1.1999999999999718, + "541": -63.65000000000005, + "542": -65.94999999999992, + "543": -5.55000000000003, + "544": -59.99999999999997, + "545": -66.7499999999999, + "546": 15.80000000000001, + "547": 87.35000000000007, + "548": -72.19999999999989, + "549": -64.09999999999992, + "550": -52.69999999999996, + "551": -9.40000000000001, + "552": -19.750000000000057, + "553": -62.94999999999993, + "554": -60.09999999999995, + "555": -39.7, + "556": 27.00000000000004, + "557": -52.04999999999994, + "558": -30.59999999999998, + "559": -86.75, + "560": -51.39999999999996, + "561": -61.20000000000003, + "562": 0.5499999999999772, + "563": -37.59999999999999, + "564": -18.650000000000027, + "565": -58.349999999999945, + "566": 55.750000000000014, + "567": -15.649999999999968, + "568": -27.250000000000007, + "569": -47.499999999999986, + "570": 100.40000000000032, + "571": -43.05, + "572": -62.24999999999993, + "573": 28.100000000000087, + "574": -65.99999999999996, + "575": 28.39999999999995, + "576": -2.0499999999999177, + "577": -58.399999999999935, + "578": -57.19999999999993, + "579": -24.6, + "580": -63.69999999999992, + "581": -4.249999999999938, + "582": 13.300000000000011, + "583": -51.749999999999964, + "584": -49.64999999999997, + "585": 50.100000000000136, + "586": 82.85000000000016, + "587": -34.00000000000001, + "588": -26.950000000000024, + "589": 102.25000000000016, + "590": -33.900000000000034, + "591": -1.549999999999984, + "592": -61.99999999999995, + "593": -56.95, + "594": 14.499999999999964, + "595": -66.7499999999999, + "596": 52.29999999999995, + "597": -50.99999999999997, + "598": 88.75, + "599": -23.750000000000014, + "600": 68.1499999999999, + "601": -47.39999999999999, + "602": -68.29999999999997, + "603": 62.750000000000156, + "604": -65.84999999999991, + "605": -3.4000000000000314, + "606": -23.75000000000003, + "607": 3.1499999999999764, + "608": -52.29999999999997, + "609": -13.599999999999982, + "610": -51.59999999999997, + "611": -37.8, + "612": -19.049999999999997, + "613": -55.84999999999996, + "614": -7.299999999999946, + "615": -79.05000000000001, + "616": 29.05000000000002, + "617": 6.500000000000016, + "618": -26.70000000000005, + "619": 79.24999999999993, + "620": -34.80000000000003, + "621": 47.85000000000002, + "622": 32.150000000000006, + "623": 88.59999999999998, + "624": -19.449999999999946, + "625": 49.79999999999995, + "626": 15.09999999999998, + "627": 38.949999999999996, + "628": 19.950000000000063, + "629": -12.799999999999974, + "630": 10.050000000000054, + "631": 67.65000000000006, + "632": -1.949999999999986, + "633": 21.60000000000012, + "634": 92.8000000000001, + "635": 25.64999999999996, + "636": 73.35000000000002, + "637": 3.9999999999999902, + "638": 42.89999999999986, + "639": -49.499999999999964, + "640": -18.200000000000045, + "641": 63.14999999999993, + "642": -16.550000000000015, + "643": 64.95000000000006, + "644": -41.099999999999966, + "645": 24.10000000000002, + "646": 34.84999999999997, + "647": 42.84999999999999, + "648": 62.49999999999998, + "649": 45.649999999999906, + "650": 72.89999999999999, + "651": 32.30000000000004, + "652": -26.04999999999997, + "653": 68.10000000000008, + "654": 70.24999999999977, + "655": 90.7000000000001, + "656": 88.55000000000003, + "657": 24.04999999999996, + "658": 57.899999999999956, + "659": 33.700000000000045, + "660": 59.29999999999987, + "661": 101.15000000000005, + "662": 41.899999999999935, + "663": 36.14999999999995, + "664": -51.19999999999997, + "665": 81.8500000000001, + "666": 88.4000000000001, + "667": 61.69999999999994, + "668": 19.299999999999983, + "669": 70.64999999999995, + "670": 46.49999999999997, + "671": 40.69999999999995, + "672": -27.34999999999998, + "673": 107.95, + "674": 44.99999999999982, + "675": 11.40000000000002, + "676": 90.50000000000016, + "677": 38.84999999999977, + "678": 56.59999999999999, + "679": 93.05000000000005, + "680": 57.399999999999956, + "681": 41.05000000000001, + "682": 90.94999999999996, + "683": 64.69999999999997, + "684": -54.09999999999994, + "685": 101.75000000000003, + "686": 53.74999999999992, + "687": 100.40000000000002, + "688": 35.8999999999998, + "689": 47.50000000000003, + "690": 32.59999999999986, + "691": 42.99999999999987, + "692": 76.00000000000003, + "693": -5.800000000000042, + "694": 3.199999999999882, + "695": 24.200000000000006, + "696": 43.40000000000005, + "697": 91.05000000000003, + "698": 84.25000000000014, + "699": 37.04999999999994, + "700": 30.149999999999984, + "701": 94.55000000000007, + "702": 94.60000000000008, + "703": 24.45, + "704": 30.49999999999995, + "705": -24.300000000000033, + "706": 82.0, + "707": 55.3499999999999, + "708": 76.55000000000014, + "709": 40.09999999999989, + "710": -10.999999999999964, + "711": 75.35000000000007, + "712": 62.09999999999993, + "713": 82.65000000000018, + "714": 8.700000000000028, + "715": 87.75000000000017, + "716": 84.55000000000001, + "717": 12.949999999999957, + "718": 73.14999999999998, + "719": 50.79999999999997, + "720": 60.599999999999994, + "721": 91.55000000000008, + "722": 93.15000000000006, + "723": 42.74999999999994, + "724": 77.49999999999997, + "725": 86.10000000000015, + "726": 69.45000000000003, + "727": 63.299999999999926, + "728": 86.40000000000002, + "729": 78.8000000000001, + "730": 92.50000000000004, + "731": 75.10000000000008, + "732": 50.99999999999997, + "733": 91.25000000000016, + "734": 85.25000000000003, + "735": 93.4500000000001, + "736": 65.05, + "737": 76.20000000000003, + "738": 57.95000000000003, + "739": 48.85, + "740": 66.79999999999995, + "741": 66.65000000000003, + "742": 76.25000000000011, + "743": 73.75000000000004, + "744": 76.15000000000006, + "745": 5.349999999999966, + "746": 45.9500000000001, + "747": 72.94999999999999, + "748": 104.60000000000005, + "749": 78.95000000000002, + "750": 67.34999999999998, + "751": 32.549999999999926, + "752": 48.449999999999825, + "753": 84.25000000000004, + "754": 53.54999999999998, + "755": 79.40000000000008, + "756": 103.10000000000002, + "757": 83.95, + "758": 92.45000000000007, + "759": 100.00000000000006, + "760": 85.30000000000001, + "761": -24.09999999999999, + "762": 53.000000000000014, + "763": 42.849999999999916, + "764": 85.10000000000004, + "765": 72.24999999999999, + "766": -34.849999999999994, + "767": 61.199999999999974, + "768": 90.8000000000001, + "769": 61.14999999999984, + "770": 81.09999999999995, + "771": 53.55000000000009, + "772": 60.849999999999895, + "773": 63.05000000000005, + "774": 53.400000000000055, + "775": 77.84999999999997, + "776": 94.4, + "777": 66.94999999999996, + "778": 67.34999999999995, + "779": 52.44999999999994, + "780": 101.69999999999999, + "781": 78.05000000000007, + "782": 46.29999999999982, + "783": 100.85000000000001, + "784": 73.85000000000004, + "785": 53.25, + "786": 84.30000000000004, + "787": 76.89999999999998, + "788": 77.30000000000008, + "789": 68.04999999999997, + "790": 80.60000000000011, + "791": 86.50000000000018, + "792": 52.39999999999994, + "793": 95.65000000000006, + "794": 88.14999999999999, + "795": 87.40000000000009, + "796": 56.29999999999998, + "797": 93.30000000000011, + "798": 85.0500000000001, + "799": 85.30000000000011, + "800": 72.05000000000001, + "801": 69.79999999999998, + "802": 76.30000000000007, + "803": 56.150000000000006, + "804": 65.74999999999997, + "805": 73.30000000000004, + "806": 76.89999999999998, + "807": 86.79999999999986, + "808": 84.99999999999997, + "809": 76.80000000000005, + "810": 86.0, + "811": 62.39999999999998, + "812": 88.30000000000003, + "813": 91.55000000000001, + "814": 75.59999999999994, + "815": 76.5, + "816": 65.29999999999993, + "817": 29.899999999999984, + "818": 77.55000000000007, + "819": 90.95000000000009, + "820": 73.30000000000004, + "821": 58.69999999999999, + "822": 87.59999999999997, + "823": 89.94999999999996, + "824": 68.29999999999997, + "825": 91.89999999999998, + "826": 74.89999999999995, + "827": 71.24999999999996, + "828": 70.69999999999999, + "829": 93.04999999999998, + "830": 88.30000000000003, + "831": 102.65000000000009, + "832": 23.799999999999955, + "833": 96.55000000000001, + "834": 89.35000000000002, + "835": 74.05000000000005, + "836": 90.3000000000001, + "837": 75.65, + "838": 81.5, + "839": 29.04999999999999, + "840": 78.9, + "841": 61.69999999999996, + "842": 46.19999999999999, + "843": 65.54999999999998, + "844": 60.95000000000003, + "845": 100.65000000000019, + "846": 73.50000000000003, + "847": 96.75000000000001, + "848": 57.24999999999997, + "849": 64.3, + "850": 59.04999999999996, + "851": 103.14999999999996, + "852": 86.50000000000007, + "853": 63.150000000000034, + "854": 67.30000000000008, + "855": 69.74999999999997, + "856": 89.69999999999999, + "857": 73.50000000000014, + "858": 58.80000000000003, + "859": 93.35000000000008, + "860": 98.75000000000001, + "861": 80.49999999999999, + "862": 78.50000000000006, + "863": 68.25000000000003, + "864": 102.9000000000001, + "865": 94.05000000000001, + "866": 46.65000000000003, + "867": 96.39999999999999, + "868": 100.6000000000001, + "869": 48.44999999999997, + "870": 88.05, + "871": 68.70000000000006, + "872": 75.75000000000001, + "873": 100.00000000000003, + "874": 102.50000000000006, + "875": 85.50000000000001, + "876": 21.64999999999999, + "877": 59.69999999999999, + "878": 70.19999999999999, + "879": 85.15000000000003, + "880": 88.3, + "881": 70.00000000000009, + "882": 92.64999999999999, + "883": 96.00000000000004, + "884": 86.60000000000002, + "885": 70.70000000000005, + "886": 53.69999999999994, + "887": 104.5, + "888": 63.85000000000002, + "889": 86.85000000000004, + "890": 81.45000000000003, + "891": 73.30000000000003, + "892": 94.95000000000003, + "893": 42.05, + "894": 93.99999999999999, + "895": 94.80000000000018, + "896": 91.7, + "897": 62.349999999999945, + "898": 66.35000000000001, + "899": 86.85000000000002, + "900": 37.30000000000004, + "901": 74.94999999999997, + "902": 92.05000000000008, + "903": 92.34999999999998, + "904": 61.80000000000008, + "905": 85.14999999999999, + "906": 84.49999999999993, + "907": 66.30000000000004, + "908": 88.05000000000001, + "909": 81.55000000000001, + "910": 99.35000000000001, + "911": 71.79999999999994, + "912": 87.15, + "913": 82.39999999999998, + "914": 38.949999999999974, + "915": 91.35000000000002, + "916": 69.45000000000007, + "917": 73.04999999999998, + "918": 72.00000000000003, + "919": 62.45000000000006, + "920": 46.89999999999998, + "921": 66.95000000000003, + "922": 77.94999999999997, + "923": 84.45, + "924": 75.39999999999998, + "925": 91.70000000000013, + "926": 80.74999999999997, + "927": 77.20000000000005, + "928": 79.20000000000005, + "929": 59.05, + "930": 66.14999999999992, + "931": 47.899999999999935, + "932": 89.64999999999996, + "933": 78.3499999999999, + "934": 91.60000000000005, + "935": 70.89999999999996, + "936": 85.45, + "937": 84.65000000000003, + "938": 82.84999999999997, + "939": 102.19999999999999, + "940": 53.80000000000001, + "941": 50.199999999999974, + "942": 72.7, + "943": 63.90000000000002, + "944": 80.15000000000003, + "945": 92.15, + "946": 13.999999999999988, + "947": 62.400000000000034, + "948": 73.60000000000005, + "949": 56.29999999999998, + "950": 84.25000000000003, + "951": 80.85000000000001, + "952": 84.45000000000005, + "953": 86.70000000000002, + "954": 87.04999999999995, + "955": 30.700000000000024, + "956": 82.05, + "957": 78.55000000000007, + "958": 83.95000000000006, + "959": 57.44999999999996, + "960": 83.45000000000006, + "961": 72.25000000000001, + "962": 73.05000000000001, + "963": 79.30000000000001, + "964": 81.55, + "965": 69.99999999999997, + "966": 67.20000000000003, + "967": 92.80000000000003, + "968": 72.10000000000002, + "969": 48.64999999999985, + "970": 71.94999999999997, + "971": 15.949999999999934, + "972": 61.44999999999984, + "973": 90.85000000000004, + "974": 96.55000000000003, + "975": 78.15000000000003, + "976": 84.40000000000009, + "977": 84.75000000000003, + "978": 52.95000000000003, + "979": 84.84999999999995, + "980": 52.20000000000008, + "981": 67.1, + "982": 84.00000000000001, + "983": 87.8500000000001, + "984": 76.8000000000001, + "985": 91.4499999999999, + "986": 80.74999999999999, + "987": 83.09999999999998, + "988": 92.9000000000001, + "989": 63.34999999999997, + "990": 66.49999999999997, + "991": 96.65000000000002, + "992": 101.85000000000002, + "993": 84.79999999999993, + "994": 91.65000000000003, + "995": 77.25000000000009, + "996": 64.0, + "997": 59.04999999999998, + "998": 72.10000000000002, + "999": 85.40000000000005, + "1000": 38.94999999999991 + }, + "2": { + "1": -11.099999999999989, + "2": -32.05000000000004, + "3": -58.200000000000095, + "4": -8.599999999999987, + "5": -81.89999999999999, + "6": -63.89999999999999, + "7": 2.050000000000006, + "8": -25.199999999999996, + "9": -21.249999999999957, + "10": -31.65000000000001, + "11": -65.34999999999998, + "12": -19.39999999999996, + "13": -81.10000000000001, + "14": -12.099999999999989, + "15": -27.799999999999933, + "16": -97.5, + "17": -13.399999999999984, + "18": -66.80000000000008, + "19": -18.29999999999997, + "20": -11.59999999999998, + "21": -71.05000000000005, + "22": -15.149999999999983, + "23": -18.54999999999997, + "24": -51.90000000000001, + "25": -19.54999999999996, + "26": -64.8500000000001, + "27": -78.94999999999996, + "28": -24.649999999999935, + "29": -63.800000000000104, + "30": -15.949999999999978, + "31": -0.24999999999996536, + "32": -7.449999999999997, + "33": -13.29999999999999, + "34": -18.64999999999997, + "35": -22.499999999999954, + "36": -36.20000000000002, + "37": -15.999999999999979, + "38": -23.04999999999995, + "39": -20.099999999999966, + "40": -14.149999999999977, + "41": -13.849999999999989, + "42": -20.69999999999996, + "43": -15.349999999999977, + "44": -11.650000000000004, + "45": -19.74999999999996, + "46": -11.849999999999993, + "47": -10.049999999999992, + "48": -78.7999999999999, + "49": -23.29999999999995, + "50": -16.199999999999967, + "51": -22.399999999999952, + "52": -12.14999999999999, + "53": -20.849999999999962, + "54": -46.05000000000007, + "55": -19.199999999999964, + "56": -17.249999999999975, + "57": -19.649999999999963, + "58": -10.7, + "59": -41.35000000000013, + "60": -35.35000000000003, + "61": -19.899999999999963, + "62": -18.949999999999964, + "63": -1.7999999999999938, + "64": -18.19999999999997, + "65": -7.05000000000001, + "66": -5.949999999999997, + "67": -2.649999999999964, + "68": -14.55, + "69": -33.54999999999995, + "70": -104.4, + "71": -62.25000000000008, + "72": -14.099999999999989, + "73": -8.1, + "74": -15.299999999999986, + "75": -7.699999999999998, + "76": -14.649999999999984, + "77": 0.20000000000002705, + "78": -4.3999999999999995, + "79": -8.850000000000009, + "80": -1.399999999999962, + "81": -94.55, + "82": -26.200000000000006, + "83": -5.899999999999989, + "84": -10.299999999999997, + "85": 14.200000000000006, + "86": -67.09999999999997, + "87": -23.849999999999948, + "88": -19.74999999999996, + "89": -19.899999999999963, + "90": 2.4999999999999614, + "91": -15.899999999999983, + "92": -21.899999999999956, + "93": 8.400000000000063, + "94": -47.25000000000005, + "95": -11.949999999999987, + "96": -3.649999999999981, + "97": 3.550000000000037, + "98": -10.849999999999996, + "99": -17.74999999999997, + "100": -17.89999999999997, + "101": -6.999999999999993, + "102": -14.49999999999999, + "103": -31.800000000000008, + "104": -21.199999999999957, + "105": -14.39999999999998, + "106": -5.749999999999986, + "107": -2.4499999999999744, + "108": -25.14999999999999, + "109": 2.0000000000000373, + "110": -28.29999999999995, + "111": -14.14999999999999, + "112": -83.15, + "113": -1.4000000000000008, + "114": -2.14999999999997, + "115": -49.30000000000006, + "116": -9.449999999999987, + "117": 9.500000000000043, + "118": 13.65000000000003, + "119": -5.350000000000008, + "120": -10.849999999999982, + "121": -6.64999999999998, + "122": -18.74999999999999, + "123": 0.9500000000000433, + "124": -7.499999999999983, + "125": -18.09999999999997, + "126": -22.499999999999975, + "127": 7.350000000000016, + "128": 6.75000000000004, + "129": 14.700000000000049, + "130": 16.899999999999995, + "131": -52.54999999999996, + "132": -89.35, + "133": -17.34999999999997, + "134": 33.99999999999979, + "135": 8.900000000000048, + "136": 0.5499999999999989, + "137": -11.349999999999998, + "138": 14.650000000000023, + "139": -5.5000000000000036, + "140": -9.500000000000004, + "141": -40.30000000000011, + "142": 20.849999999999973, + "143": -2.049999999999981, + "144": 39.899999999999736, + "145": -87.6, + "146": 37.74999999999996, + "147": 14.400000000000034, + "148": 9.50000000000004, + "149": 10.95000000000001, + "150": -2.549999999999983, + "151": -0.8499999999999777, + "152": -8.100000000000007, + "153": 23.649999999999913, + "154": -4.599999999999987, + "155": -70.4, + "156": 39.649999999999956, + "157": -80.55000000000001, + "158": 8.550000000000013, + "159": 41.49999999999975, + "160": -28.099999999999977, + "161": -17.599999999999973, + "162": 42.6499999999998, + "163": -36.35, + "164": -41.80000000000015, + "165": -4.450000000000005, + "166": 6.150000000000029, + "167": 23.65000000000003, + "168": 36.250000000000014, + "169": 16.650000000000045, + "170": 15.200000000000077, + "171": 33.14999999999989, + "172": 63.14999999999998, + "173": -10.550000000000002, + "174": -23.29999999999995, + "175": 16.749999999999893, + "176": -74.75000000000003, + "177": 31.75000000000006, + "178": 14.049999999999985, + "179": 61.94999999999975, + "180": 20.499999999999943, + "181": 39.69999999999988, + "182": 6.100000000000064, + "183": -7.250000000000073, + "184": -6.950000000000007, + "185": -69.10000000000001, + "186": 29.150000000000073, + "187": -76.60000000000002, + "188": 45.299999999999905, + "189": -50.74999999999996, + "190": -48.10000000000014, + "191": 43.74999999999974, + "192": 10.300000000000058, + "193": 54.9499999999999, + "194": 38.9, + "195": 8.150000000000055, + "196": 7.00000000000001, + "197": 44.59999999999982, + "198": 72.34999999999984, + "199": -47.9, + "200": -49.45000000000003, + "201": 46.29999999999976, + "202": -46.099999999999994, + "203": -2.8499999999999783, + "204": -9.450000000000045, + "205": 2.600000000000059, + "206": 31.550000000000026, + "207": -65.50000000000004, + "208": 55.29999999999975, + "209": -39.000000000000014, + "210": 72.29999999999986, + "211": 64.34999999999982, + "212": 42.44999999999975, + "213": 13.750000000000027, + "214": -21.300000000000033, + "215": 21.99999999999996, + "216": -12.299999999999985, + "217": 12.149999999999999, + "218": -67.85000000000007, + "219": 9.400000000000013, + "220": 50.24999999999981, + "221": -7.300000000000061, + "222": 99.84999999999995, + "223": 53.84999999999977, + "224": 27.100000000000044, + "225": -50.69999999999999, + "226": 17.0, + "227": 62.94999999999987, + "228": 61.14999999999988, + "229": -33.30000000000001, + "230": -56.850000000000016, + "231": 7.650000000000029, + "232": 75.10000000000004, + "233": 10.900000000000059, + "234": 41.2, + "235": 20.80000000000005, + "236": 65.34999999999977, + "237": 92.25000000000003, + "238": -34.149999999999984, + "239": 55.24999999999974, + "240": 24.999999999999925, + "241": 50.74999999999988, + "242": 59.09999999999977, + "243": -67.4, + "244": 66.49999999999979, + "245": 10.300000000000068, + "246": 69.09999999999977, + "247": 98.94999999999973, + "248": -65.04999999999994, + "249": -79.70000000000003, + "250": 104.89999999999986, + "251": 71.6999999999999, + "252": 87.69999999999986, + "253": -50.74999999999998, + "254": -56.29999999999996, + "255": 91.54999999999977, + "256": 48.89999999999978, + "257": 34.55000000000007, + "258": 20.249999999999936, + "259": 68.99999999999976, + "260": 46.94999999999985, + "261": 68.79999999999974, + "262": 38.44999999999996, + "263": 84.59999999999978, + "264": -74.45000000000006, + "265": 44.349999999999866, + "266": 70.54999999999973, + "267": 29.450000000000028, + "268": 83.2499999999998, + "269": 3.2499999999999343, + "270": -70.75, + "271": -6.750000000000014, + "272": 66.94999999999982, + "273": 59.899999999999835, + "274": 83.99999999999979, + "275": -65.85000000000002, + "276": 40.94999999999991, + "277": 81.09999999999972, + "278": 7.450000000000036, + "279": 28.399999999999917, + "280": -59.750000000000064, + "281": 58.849999999999795, + "282": 68.55, + "283": 22.59999999999995, + "284": 0.4000000000000341, + "285": -93.34999999999998, + "286": -1.4999999999999711, + "287": 22.900000000000023, + "288": 11.349999999999937, + "289": 79.09999999999978, + "290": 91.54999999999995, + "291": 58.19999999999978, + "292": 36.849999999999994, + "293": 78.14999999999985, + "294": 15.799999999999962, + "295": 58.599999999999774, + "296": 7.149999999999958, + "297": 39.99999999999988, + "298": 34.80000000000001, + "299": 86.79999999999978, + "300": 54.09999999999981, + "301": 91.29999999999973, + "302": 61.09999999999973, + "303": -11.449999999999982, + "304": 75.79999999999986, + "305": 33.04999999999986, + "306": -17.800000000000043, + "307": 89.59999999999977, + "308": 68.39999999999988, + "309": -55.85000000000005, + "310": 69.39999999999975, + "311": 88.19999999999987, + "312": 57.09999999999975, + "313": 23.20000000000005, + "314": 94.19999999999975, + "315": 91.14999999999979, + "316": 33.54999999999974, + "317": 94.79999999999976, + "318": 98.44999999999976, + "319": 53.449999999999726, + "320": 81.09999999999974, + "321": -12.450000000000038, + "322": 95.29999999999973, + "323": -6.65000000000002, + "324": 88.59999999999977, + "325": 101.29999999999987, + "326": 107.70000000000005, + "327": 101.29999999999995, + "328": 102.39999999999979, + "329": 15.799999999999955, + "330": 38.05000000000004, + "331": 67.99999999999989, + "332": 74.34999999999978, + "333": -19.399999999999967, + "334": 96.14999999999979, + "335": -5.7500000000000036, + "336": -9.849999999999985, + "337": 87.19999999999975, + "338": 97.5499999999998, + "339": 27.20000000000004, + "340": 43.799999999999976, + "341": 92.39999999999976, + "342": 92.79999999999976, + "343": 90.64999999999978, + "344": 90.10000000000004, + "345": 20.650000000000023, + "346": 96.4999999999999, + "347": -85.49999999999997, + "348": 38.299999999999955, + "349": 99.84999999999987, + "350": 93.09999999999981, + "351": 59.24999999999997, + "352": 66.74999999999984, + "353": 89.54999999999976, + "354": 60.39999999999989, + "355": 13.699999999999973, + "356": 99.69999999999985, + "357": 25.949999999999886, + "358": 79.24999999999976, + "359": -9.149999999999986, + "360": 94.29999999999974, + "361": 103.09999999999992, + "362": 99.3499999999999, + "363": 95.34999999999974, + "364": -43.89999999999998, + "365": 103.39999999999976, + "366": 102.34999999999978, + "367": 106.49999999999972, + "368": 101.34999999999975, + "369": 103.99999999999991, + "370": -72.85000000000001, + "371": 86.74999999999973, + "372": -9.499999999999982, + "373": 97.89999999999976, + "374": 100.44999999999976, + "375": -84.24999999999997, + "376": 101.34999999999975, + "377": 78.59999999999984, + "378": 100.59999999999978, + "379": -28.049999999999972, + "380": 9.80000000000001, + "381": 104.94999999999978, + "382": 102.79999999999977, + "383": 93.59999999999994, + "384": 64.25000000000009, + "385": 77.09999999999992, + "386": 92.24999999999979, + "387": 98.04999999999973, + "388": -76.55, + "389": 94.49999999999979, + "390": 89.34999999999977, + "391": 26.050000000000026, + "392": 27.999999999999975, + "393": -24.05000000000006, + "394": 106.04999999999976, + "395": 105.99999999999974, + "396": 102.39999999999975, + "397": 59.6499999999999, + "398": 97.99999999999977, + "399": 101.49999999999973, + "400": -18.7, + "401": 105.6000000000001, + "402": 95.99999999999977, + "403": 103.69999999999982, + "404": 90.14999999999976, + "405": 96.34999999999987, + "406": 87.99999999999982, + "407": 93.29999999999971, + "408": 98.89999999999986, + "409": 104.39999999999972, + "410": 97.2499999999999, + "411": 100.04999999999974, + "412": 86.5499999999998, + "413": -60.74999999999996, + "414": 99.79999999999977, + "415": 82.84999999999978, + "416": 101.19999999999975, + "417": 1.5000000000000357, + "418": 102.49999999999976, + "419": 65.89999999999989, + "420": 103.89999999999974, + "421": 96.84999999999974, + "422": 101.39999999999976, + "423": 102.14999999999976, + "424": 101.99999999999972, + "425": 101.74999999999976, + "426": 102.39999999999976, + "427": 106.99999999999977, + "428": -73.45, + "429": 104.14999999999974, + "430": 100.09999999999984, + "431": 102.49999999999979, + "432": 101.19999999999975, + "433": 101.24999999999973, + "434": 102.44999999999976, + "435": 102.59999999999977, + "436": 98.84999999999977, + "437": 85.04999999999976, + "438": -77.7, + "439": -89.75, + "440": 33.79999999999973, + "441": 94.74999999999979, + "442": 99.84999999999975, + "443": 99.64999999999978, + "444": 103.6, + "445": 101.64999999999976, + "446": 52.39999999999978, + "447": 100.19999999999976, + "448": 80.09999999999977, + "449": 103.1999999999998, + "450": 97.54999999999977, + "451": 87.94999999999976, + "452": 103.49999999999974, + "453": 75.04999999999977, + "454": 94.59999999999977, + "455": 84.64999999999982, + "456": 99.49999999999977, + "457": -0.9500000000000004, + "458": 82.89999999999972, + "459": 103.79999999999977, + "460": 102.39999999999974, + "461": 106.64999999999976, + "462": 95.24999999999979, + "463": 97.79999999999977, + "464": 84.49999999999982, + "465": -11.800000000000033, + "466": 101.04999999999978, + "467": 106.29999999999974, + "468": 18.449999999999903, + "469": 105.19999999999975, + "470": 105.59999999999972, + "471": 82.29999999999977, + "472": 103.44999999999976, + "473": 104.19999999999978, + "474": 104.94999999999975, + "475": 106.19999999999972, + "476": 101.19999999999976, + "477": 106.44999999999973, + "478": -66.74999999999999, + "479": 98.14999999999978, + "480": 102.29999999999976, + "481": 102.44999999999976, + "482": 85.79999999999973, + "483": -77.75, + "484": 95.94999999999976, + "485": 101.19999999999976, + "486": 97.69999999999975, + "487": 104.59999999999975, + "488": 102.24999999999977, + "489": 103.8499999999998, + "490": 103.74999999999977, + "491": 104.39999999999971, + "492": 100.64999999999974, + "493": 105.04999999999976, + "494": -41.75000000000008, + "495": 105.84999999999972, + "496": 106.59999999999972, + "497": 99.04999999999977, + "498": 86.34999999999974, + "499": 104.54999999999976, + "500": 102.44999999999978, + "501": 104.69999999999979, + "502": 104.39999999999976, + "503": 107.34999999999974, + "504": 94.84999999999981, + "505": 104.34999999999977, + "506": 100.34999999999975, + "507": 104.14999999999976, + "508": 81.09999999999985, + "509": 97.69999999999976, + "510": -71.14999999999999, + "511": 101.94999999999973, + "512": 98.79999999999978, + "513": 104.79999999999976, + "514": 103.84999999999977, + "515": 103.94999999999973, + "516": 100.04999999999976, + "517": 104.74999999999974, + "518": 101.99999999999977, + "519": 105.14999999999975, + "520": 106.69999999999973, + "521": -84.45, + "522": 101.99999999999974, + "523": 60.84999999999993, + "524": 68.99999999999977, + "525": 84.59999999999974, + "526": 97.84999999999977, + "527": 104.34999999999977, + "528": 104.64999999999975, + "529": 104.89999999999975, + "530": 104.09999999999977, + "531": 103.44999999999976, + "532": 105.94999999999986, + "533": 104.24999999999977, + "534": 73.69999999999986, + "535": 106.49999999999973, + "536": 107.44999999999973, + "537": 85.34999999999978, + "538": 97.04999999999977, + "539": 103.79999999999977, + "540": 97.24999999999976, + "541": 42.84999999999979, + "542": 54.34999999999977, + "543": 67.29999999999974, + "544": 80.19999999999973, + "545": 19.350000000000026, + "546": 90.84999999999975, + "547": 49.69999999999974, + "548": 68.64999999999976, + "549": 82.89999999999972, + "550": 105.49999999999973, + "551": 4.50000000000003, + "552": 103.19999999999978, + "553": 98.44999999999976, + "554": 48.04999999999981, + "555": 58.39999999999973, + "556": 105.39999999999974, + "557": 84.39999999999976, + "558": 55.44999999999979, + "559": -74.25, + "560": 7.249999999999989, + "561": 103.24999999999976, + "562": 101.64999999999986, + "563": 105.40000000000003, + "564": -83.85000000000001, + "565": 20.699999999999964, + "566": 61.54999999999973, + "567": 108.19999999999976, + "568": 70.19999999999975, + "569": 40.29999999999995, + "570": 69.89999999999972, + "571": 35.2, + "572": 72.19999999999983, + "573": 112.84999999999992, + "574": 100.04999999999973, + "575": 30.000000000000053, + "576": 102.49999999999977, + "577": 103.89999999999976, + "578": 51.749999999999716, + "579": 74.24999999999977, + "580": 49.34999999999983, + "581": 1.2000000000000497, + "582": 103.49999999999976, + "583": 79.14999999999988, + "584": 36.14999999999989, + "585": 104.04999999999973, + "586": -4.849999999999975, + "587": 106.94999999999973, + "588": 48.39999999999986, + "589": 73.79999999999973, + "590": 71.19999999999976, + "591": 106.14999999999974, + "592": 90.19999999999982, + "593": 102.44999999999975, + "594": -26.200000000000017, + "595": 104.79999999999973, + "596": 54.59999999999989, + "597": 75.1999999999998, + "598": 88.89999999999976, + "599": 100.14999999999976, + "600": 99.24999999999977, + "601": 55.299999999999756, + "602": 68.29999999999973, + "603": 102.04999999999977, + "604": 101.69999999999978, + "605": 76.04999999999977, + "606": 105.39999999999972, + "607": 102.49999999999977, + "608": 102.59999999999977, + "609": 102.14999999999976, + "610": 105.94999999999972, + "611": 65.59999999999975, + "612": 104.44999999999975, + "613": 107.2499999999998, + "614": -82.45, + "615": -5.00000000000005, + "616": 80.24999999999972, + "617": 98.04999999999977, + "618": 67.89999999999984, + "619": 99.74999999999976, + "620": 103.09999999999977, + "621": 103.19999999999973, + "622": -49.15000000000008, + "623": 98.69999999999976, + "624": 56.09999999999976, + "625": 107.44999999999975, + "626": 103.59999999999977, + "627": 38.049999999999756, + "628": -41.949999999999996, + "629": -88.2, + "630": 104.7999999999998, + "631": 107.59999999999972, + "632": -9.949999999999976, + "633": 86.69999999999972, + "634": 104.49999999999977, + "635": 86.89999999999984, + "636": 61.24999999999979, + "637": 73.19999999999973, + "638": -31.000000000000007, + "639": 76.99999999999979, + "640": 80.19999999999976, + "641": 74.8999999999998, + "642": 103.79999999999976, + "643": 97.39999999999974, + "644": 107.44999999999976, + "645": 97.94999999999979, + "646": 104.74999999999976, + "647": 102.64999999999972, + "648": 104.89999999999972, + "649": 104.59999999999974, + "650": 102.74999999999976, + "651": 102.89999999999976, + "652": 105.34999999999972, + "653": 105.59999999999975, + "654": 101.99999999999977, + "655": 101.19999999999978, + "656": 106.59999999999972, + "657": 105.04999999999974, + "658": 76.14999999999978, + "659": 104.69999999999976, + "660": 103.04999999999977, + "661": -3.800000000000068, + "662": 103.94999999999976, + "663": 103.99999999999976, + "664": 101.04999999999976, + "665": 103.44999999999976, + "666": 98.09999999999977, + "667": 90.65, + "668": 69.89999999999976, + "669": 103.59999999999977, + "670": 105.09999999999975, + "671": 104.19999999999976, + "672": 104.79999999999974, + "673": 66.19999999999978, + "674": -6.449999999999992, + "675": 104.34999999999977, + "676": 79.89999999999976, + "677": 97.49999999999977, + "678": 81.64999999999975, + "679": 48.19999999999988, + "680": 89.09999999999975, + "681": 108.29999999999974, + "682": 105.74999999999973, + "683": 102.54999999999977, + "684": 38.79999999999977, + "685": 103.69999999999976, + "686": 80.2999999999998, + "687": 103.49999999999977, + "688": 107.7999999999998, + "689": 104.84999999999975, + "690": 100.39999999999976, + "691": -71.64999999999999, + "692": 104.24999999999976, + "693": 102.64999999999976, + "694": 104.09999999999977, + "695": 105.09999999999978, + "696": 93.24999999999976, + "697": 70.94999999999972, + "698": 104.84999999999975, + "699": 65.79999999999981, + "700": 108.39999999999974, + "701": 100.54999999999971, + "702": 104.79999999999976, + "703": 102.84999999999977, + "704": 103.49999999999977, + "705": 104.89999999999974, + "706": 101.14999999999975, + "707": 104.89999999999972, + "708": 103.94999999999975, + "709": 102.49999999999977, + "710": 62.44999999999977, + "711": 102.39999999999976, + "712": 105.99999999999973, + "713": 104.49999999999974, + "714": 105.34999999999974, + "715": 106.69999999999972, + "716": 38.44999999999985, + "717": 103.64999999999976, + "718": 103.09999999999977, + "719": 102.89999999999978, + "720": 35.2499999999998, + "721": 103.99999999999976, + "722": 105.04999999999974, + "723": 103.39999999999976, + "724": 104.54999999999977, + "725": -81.7, + "726": 104.54999999999976, + "727": 100.89999999999975, + "728": 105.44999999999975, + "729": 111.64999999999979, + "730": 104.69999999999976, + "731": 99.89999999999978, + "732": 2.8999999999999346, + "733": 104.39999999999976, + "734": 103.14999999999976, + "735": 102.99999999999977, + "736": 103.39999999999976, + "737": 105.69999999999975, + "738": -85.25, + "739": 41.99999999999972, + "740": 103.99999999999976, + "741": 17.600000000000016, + "742": 65.44999999999976, + "743": 102.24999999999977, + "744": 102.49999999999977, + "745": 105.89999999999972, + "746": 102.64999999999978, + "747": 104.69999999999976, + "748": 102.79999999999977, + "749": 102.19999999999978, + "750": 104.49999999999973, + "751": 102.64999999999978, + "752": 104.74999999999977, + "753": 104.54999999999976, + "754": 99.79999999999978, + "755": 103.94999999999976, + "756": 66.09999999999991, + "757": 103.99999999999976, + "758": -85.1, + "759": 103.29999999999977, + "760": 106.04999999999974, + "761": 99.29999999999973, + "762": 104.89999999999975, + "763": 104.34999999999977, + "764": 103.69999999999976, + "765": 102.14999999999978, + "766": 104.84999999999974, + "767": 103.09999999999977, + "768": 104.04999999999974, + "769": 104.69999999999975, + "770": 104.49999999999976, + "771": 108.84999999999974, + "772": 101.49999999999976, + "773": 103.69999999999976, + "774": 60.79999999999977, + "775": 103.29999999999977, + "776": 104.84999999999975, + "777": 104.29999999999976, + "778": 102.84999999999977, + "779": 103.89999999999976, + "780": 104.54999999999977, + "781": 103.79999999999976, + "782": 105.59999999999974, + "783": 102.84999999999977, + "784": 104.69999999999976, + "785": 101.59999999999977, + "786": 96.09999999999974, + "787": 105.99999999999972, + "788": 104.34999999999977, + "789": 103.79999999999977, + "790": 103.24999999999977, + "791": 102.89999999999976, + "792": 96.19999999999976, + "793": 105.09999999999978, + "794": 52.8499999999999, + "795": 105.24999999999974, + "796": 107.49999999999972, + "797": 111.64999999999986, + "798": 104.59999999999975, + "799": 73.74999999999973, + "800": 104.69999999999975, + "801": 105.49999999999974, + "802": -69.5, + "803": 105.69999999999975, + "804": 103.89999999999976, + "805": 105.19999999999973, + "806": 103.89999999999976, + "807": 107.24999999999974, + "808": 105.39999999999974, + "809": 106.69999999999972, + "810": 104.59999999999975, + "811": 81.64999999999984, + "812": 103.84999999999977, + "813": -63.90000000000002, + "814": 106.59999999999972, + "815": -68.5, + "816": 103.59999999999977, + "817": 104.99999999999974, + "818": 104.29999999999977, + "819": -9.799999999999994, + "820": 104.19999999999976, + "821": 109.09999999999977, + "822": 103.04999999999977, + "823": 108.49999999999974, + "824": 105.24999999999972, + "825": 103.94999999999976, + "826": 107.69999999999972, + "827": 103.49999999999977, + "828": 59.39999999999974, + "829": -74.35000000000001, + "830": 103.84999999999977, + "831": 91.04999999999978, + "832": 103.54999999999977, + "833": 105.19999999999979, + "834": 102.84999999999974, + "835": 106.09999999999972, + "836": 104.04999999999976, + "837": 104.59999999999977, + "838": 109.09999999999977, + "839": 103.29999999999977, + "840": 104.14999999999976, + "841": 103.34999999999977, + "842": 106.19999999999972, + "843": 103.59999999999977, + "844": 100.54999999999977, + "845": 103.84999999999977, + "846": 104.44999999999976, + "847": 103.89999999999978, + "848": 105.84999999999974, + "849": -61.300000000000004, + "850": 103.79999999999976, + "851": 105.59999999999974, + "852": 103.64999999999976, + "853": 105.74999999999974, + "854": 106.0999999999998, + "855": 109.14999999999975, + "856": 106.79999999999971, + "857": 105.39999999999975, + "858": 101.14999999999976, + "859": 104.24999999999973, + "860": 104.19999999999976, + "861": 106.94999999999973, + "862": 102.94999999999978, + "863": 104.84999999999975, + "864": 103.49999999999976, + "865": 103.04999999999977, + "866": 105.94999999999973, + "867": 102.34999999999978, + "868": 107.29999999999974, + "869": 104.14999999999976, + "870": 103.34999999999977, + "871": 103.89999999999974, + "872": -77.69999999999999, + "873": -86.14999999999999, + "874": 103.19999999999976, + "875": 108.6499999999998, + "876": 105.44999999999975, + "877": 105.89999999999974, + "878": 105.14999999999972, + "879": 103.64999999999976, + "880": 70.64999999999974, + "881": 103.09999999999977, + "882": 105.24999999999984, + "883": 103.69999999999976, + "884": 107.29999999999973, + "885": 103.59999999999975, + "886": 105.59999999999974, + "887": 104.69999999999978, + "888": 102.34999999999978, + "889": 102.99999999999977, + "890": 107.69999999999972, + "891": 104.24999999999976, + "892": 100.89999999999978, + "893": 103.69999999999978, + "894": 106.34999999999972, + "895": 107.39999999999974, + "896": 103.44999999999978, + "897": 103.54999999999977, + "898": 101.14999999999975, + "899": 104.14999999999976, + "900": 105.84999999999972, + "901": 69.94999999999983, + "902": -37.80000000000014, + "903": 9.05000000000001, + "904": -22.399999999999988, + "905": 49.749999999999915, + "906": 22.449999999999854, + "907": 66.74999999999989, + "908": 69.29999999999987, + "909": 30.299999999999937, + "910": 83.39999999999984, + "911": 23.899999999999878, + "912": -70.00000000000003, + "913": 43.499999999999865, + "914": 51.34999999999983, + "915": 40.50000000000001, + "916": 55.599999999999795, + "917": -5.299999999999992, + "918": 99.69999999999979, + "919": 24.89999999999985, + "920": 32.19999999999985, + "921": 94.69999999999978, + "922": 18.75000000000001, + "923": -1.2500000000000309, + "924": 49.799999999999876, + "925": 6.649999999999977, + "926": 92.04999999999981, + "927": 38.100000000000016, + "928": 52.099999999999895, + "929": 61.399999999999984, + "930": 53.399999999999935, + "931": 79.69999999999986, + "932": 66.04999999999977, + "933": -14.500000000000021, + "934": 73.94999999999979, + "935": 71.44999999999979, + "936": 104.69999999999982, + "937": 93.74999999999982, + "938": 21.799999999999986, + "939": 107.49999999999973, + "940": 83.3499999999999, + "941": 77.09999999999995, + "942": 92.24999999999986, + "943": 103.34999999999977, + "944": 104.64999999999979, + "945": 103.59999999999975, + "946": -20.79999999999999, + "947": 64.84999999999978, + "948": 104.14999999999976, + "949": 55.599999999999916, + "950": 97.54999999999976, + "951": 103.24999999999976, + "952": 107.04999999999974, + "953": 104.79999999999976, + "954": 103.04999999999977, + "955": 89.69999999999976, + "956": 86.39999999999988, + "957": 104.04999999999977, + "958": 103.89999999999976, + "959": 87.29999999999978, + "960": 95.09999999999981, + "961": 104.09999999999975, + "962": 103.49999999999977, + "963": 87.14999999999976, + "964": 101.9999999999998, + "965": 103.49999999999977, + "966": 82.94999999999978, + "967": 108.14999999999974, + "968": 77.59999999999977, + "969": 103.89999999999976, + "970": 109.74999999999976, + "971": 108.89999999999976, + "972": 103.59999999999977, + "973": 108.09999999999974, + "974": 103.24999999999977, + "975": 105.39999999999975, + "976": 105.04999999999976, + "977": 107.74999999999977, + "978": 103.74999999999977, + "979": 103.49999999999976, + "980": -77.8, + "981": 108.69999999999973, + "982": 105.54999999999973, + "983": 103.49999999999976, + "984": 106.99999999999973, + "985": 103.89999999999976, + "986": -63.9, + "987": 102.89999999999978, + "988": 109.24999999999977, + "989": 111.94999999999995, + "990": 106.79999999999974, + "991": -64.75000000000001, + "992": 107.59999999999972, + "993": 98.29999999999976, + "994": 103.39999999999976, + "995": 104.49999999999976, + "996": 88.94999999999982, + "997": 103.24999999999977, + "998": -62.95, + "999": -70.9, + "1000": 103.34999999999977 + }, + "3": { + "1": -64.2500000000001, + "2": -10.899999999999991, + "3": -30.800000000000004, + "4": -14.649999999999977, + "5": -75.69999999999999, + "6": -60.350000000000094, + "7": -21.8, + "8": -93.69999999999996, + "9": -19.499999999999964, + "10": -34.64999999999998, + "11": -17.999999999999968, + "12": -38.15000000000004, + "13": -15.749999999999979, + "14": -15.34999999999998, + "15": -21.599999999999955, + "16": -55.05000000000011, + "17": -10.049999999999995, + "18": -20.949999999999957, + "19": -53.30000000000008, + "20": -13.199999999999989, + "21": -19.29999999999997, + "22": -10.65000000000001, + "23": -9.000000000000002, + "24": -103.89999999999996, + "25": -12.64999999999999, + "26": -1.8999999999999888, + "27": -26.54999999999997, + "28": -34.600000000000044, + "29": -29.650000000000013, + "30": -64.30000000000015, + "31": -43.50000000000005, + "32": -29.600000000000023, + "33": -18.999999999999993, + "34": -101.0, + "35": -21.499999999999957, + "36": -21.499999999999957, + "37": -8.699999999999983, + "38": -6.550000000000001, + "39": -20.74999999999996, + "40": -17.999999999999968, + "41": -64.0500000000001, + "42": -17.349999999999977, + "43": -17.099999999999973, + "44": -14.899999999999965, + "45": -10.499999999999995, + "46": -13.849999999999985, + "47": -54.05000000000008, + "48": -16.79999999999998, + "49": -16.849999999999973, + "50": -61.650000000000155, + "51": -15.699999999999987, + "52": -47.80000000000007, + "53": -75.5, + "54": -25.049999999999944, + "55": -95.6, + "56": -7.65, + "57": -3.150000000000033, + "58": -16.649999999999977, + "59": -15.199999999999985, + "60": -17.099999999999977, + "61": -1.149999999999972, + "62": -93.65, + "63": -20.349999999999962, + "64": -7.749999999999991, + "65": -21.049999999999958, + "66": -23.19999999999995, + "67": -40.60000000000015, + "68": -18.699999999999967, + "69": -76.6999999999999, + "70": 5.15000000000003, + "71": -14.299999999999981, + "72": -8.399999999999997, + "73": -23.29999999999995, + "74": -21.550000000000004, + "75": -11.699999999999982, + "76": -66.05000000000005, + "77": -93.85, + "78": -15.749999999999982, + "79": -101.05000000000001, + "80": -11.600000000000007, + "81": -85.0000000000001, + "82": -6.999999999999995, + "83": 22.04999999999996, + "84": -47.15000000000007, + "85": -3.4999999999999805, + "86": -18.049999999999972, + "87": -97.4, + "88": -77.79999999999995, + "89": 9.00000000000001, + "90": -15.049999999999983, + "91": -4.350000000000004, + "92": -21.499999999999954, + "93": -3.6999999999999797, + "94": -39.69999999999998, + "95": -57.45000000000009, + "96": -17.349999999999973, + "97": -7.249999999999995, + "98": -14.199999999999978, + "99": -11.699999999999987, + "100": 2.5000000000000444, + "101": -12.649999999999984, + "102": -3.750000000000001, + "103": -20.349999999999962, + "104": -90.05, + "105": -18.299999999999972, + "106": -0.9000000000000015, + "107": -57.05, + "108": -2.399999999999965, + "109": -49.15000000000007, + "110": -20.49999999999996, + "111": -8.749999999999996, + "112": -79.10000000000001, + "113": -17.14999999999997, + "114": -3.0499999999999785, + "115": -64.35, + "116": -47.39999999999996, + "117": -10.999999999999996, + "118": -12.199999999999989, + "119": -16.89999999999998, + "120": -64.85000000000001, + "121": -6.749999999999996, + "122": 7.750000000000069, + "123": 13.75, + "124": -3.0999999999999863, + "125": -27.09999999999994, + "126": -16.649999999999977, + "127": 19.349999999999955, + "128": -49.350000000000044, + "129": -21.2, + "130": -39.49999999999999, + "131": -74.44999999999999, + "132": -5.449999999999989, + "133": -0.3499999999999986, + "134": -14.499999999999979, + "135": -21.699999999999953, + "136": -1.7499999999999736, + "137": -12.149999999999993, + "138": 23.949999999999946, + "139": -48.3, + "140": -11.49999999999999, + "141": -43.150000000000006, + "142": -11.04999999999999, + "143": -18.09999999999997, + "144": -11.1, + "145": 19.249999999999986, + "146": -90.4, + "147": 35.69999999999979, + "148": -78.85, + "149": -39.95000000000009, + "150": -6.799999999999987, + "151": -10.35, + "152": 16.45000000000007, + "153": 8.500000000000078, + "154": -18.199999999999967, + "155": -1.0999999999999819, + "156": 12.350000000000023, + "157": -36.69999999999998, + "158": 14.750000000000039, + "159": -13.999999999999991, + "160": -2.399999999999996, + "161": 14.250000000000043, + "162": -80.15000000000002, + "163": -19.499999999999964, + "164": 18.00000000000006, + "165": -41.499999999999964, + "166": 6.550000000000042, + "167": 5.700000000000033, + "168": -15.95000000000001, + "169": -10.549999999999978, + "170": -89.14999999999996, + "171": -0.2999999999999714, + "172": -17.70000000000004, + "173": -9.450000000000001, + "174": 14.849999999999959, + "175": -90.44999999999999, + "176": -11.799999999999978, + "177": -56.5, + "178": -13.249999999999984, + "179": -55.35, + "180": -17.699999999999974, + "181": -17.85000000000002, + "182": -7.799999999999989, + "183": -49.900000000000006, + "184": 27.400000000000055, + "185": 31.449999999999942, + "186": -49.59999999999996, + "187": 16.20000000000001, + "188": 2.5500000000000336, + "189": 27.44999999999993, + "190": -3.049999999999991, + "191": -60.84999999999995, + "192": 5.850000000000024, + "193": -7.199999999999984, + "194": -48.800000000000004, + "195": -69.60000000000004, + "196": 25.200000000000067, + "197": -37.649999999999956, + "198": -64.1500000000001, + "199": -48.59999999999997, + "200": -71.94999999999993, + "201": -18.249999999999968, + "202": -14.450000000000003, + "203": 4.750000000000047, + "204": 30.049999999999923, + "205": -5.549999999999984, + "206": -32.64999999999997, + "207": 16.450000000000045, + "208": -46.25, + "209": 11.549999999999937, + "210": 15.100000000000076, + "211": 23.450000000000063, + "212": -6.50000000000001, + "213": -35.00000000000002, + "214": 16.199999999999992, + "215": 46.099999999999845, + "216": -11.49999999999999, + "217": 5.550000000000029, + "218": 23.749999999999908, + "219": -56.75000000000003, + "220": 2.400000000000005, + "221": -9.299999999999951, + "222": 83.19999999999989, + "223": 46.249999999999915, + "224": 16.449999999999932, + "225": 34.49999999999993, + "226": -86.15, + "227": -8.049999999999992, + "228": -39.1, + "229": 15.749999999999899, + "230": -53.80000000000006, + "231": -24.649999999999956, + "232": 6.149999999999947, + "233": -27.50000000000003, + "234": 10.249999999999982, + "235": -9.850000000000056, + "236": -49.05, + "237": -25.099999999999987, + "238": 1.4500000000000328, + "239": 44.749999999999794, + "240": -23.800000000000022, + "241": 49.34999999999976, + "242": 26.250000000000018, + "243": 12.250000000000032, + "244": -5.773159728050814e-15, + "245": -15.94999999999996, + "246": 5.600000000000033, + "247": -12.049999999999978, + "248": 36.699999999999775, + "249": 27.94999999999998, + "250": -0.34999999999997033, + "251": -46.449999999999996, + "252": -21.749999999999957, + "253": 35.649999999999984, + "254": 47.79999999999981, + "255": 2.3000000000000114, + "256": 49.75000000000003, + "257": 48.54999999999982, + "258": 18.55000000000003, + "259": 25.85000000000007, + "260": -0.9500000000000135, + "261": 35.8999999999999, + "262": 62.64999999999988, + "263": -6.200000000000021, + "264": 41.94999999999994, + "265": 49.94999999999991, + "266": 49.49999999999995, + "267": -13.349999999999987, + "268": 67.94999999999983, + "269": 41.39999999999988, + "270": 15.000000000000068, + "271": -47.39999999999999, + "272": -82.35, + "273": 13.600000000000065, + "274": 43.84999999999982, + "275": 36.19999999999991, + "276": 39.64999999999994, + "277": 40.99999999999974, + "278": 11.800000000000047, + "279": 32.94999999999998, + "280": 81.80000000000007, + "281": 58.499999999999936, + "282": -15.399999999999983, + "283": 8.40000000000001, + "284": 30.95, + "285": 14.400000000000006, + "286": -10.149999999999995, + "287": 44.84999999999989, + "288": 49.5999999999999, + "289": 69.59999999999988, + "290": 63.049999999999784, + "291": 86.50000000000001, + "292": 47.64999999999981, + "293": 71.1499999999998, + "294": -7.049999999999991, + "295": 47.34999999999976, + "296": 102.65000000000008, + "297": 66.04999999999983, + "298": 63.899999999999935, + "299": 1.5000000000000955, + "300": 24.95000000000004, + "301": 54.74999999999998, + "302": -13.150000000000004, + "303": 52.64999999999996, + "304": 40.2999999999998, + "305": 83.10000000000001, + "306": -0.29999999999999305, + "307": -7.599999999999988, + "308": 58.74999999999989, + "309": 47.24999999999983, + "310": 70.59999999999985, + "311": 26.299999999999976, + "312": 38.4999999999999, + "313": 0.2999999999999834, + "314": 41.84999999999984, + "315": 91.40000000000015, + "316": -50.15000000000002, + "317": 56.24999999999983, + "318": 38.24999999999996, + "319": 5.849999999999965, + "320": 32.30000000000001, + "321": 47.35000000000001, + "322": 58.45000000000001, + "323": 11.04999999999999, + "324": -0.04999999999999771, + "325": 53.2999999999998, + "326": 84.10000000000014, + "327": 18.20000000000004, + "328": 68.14999999999982, + "329": 96.35000000000022, + "330": 64.09999999999994, + "331": 56.850000000000044, + "332": 95.80000000000014, + "333": 64.24999999999976, + "334": 13.299999999999962, + "335": 78.4499999999999, + "336": 55.099999999999945, + "337": 93.25, + "338": -9.449999999999983, + "339": 46.64999999999997, + "340": 82.04999999999998, + "341": 41.94999999999985, + "342": 94.45000000000003, + "343": 28.599999999999973, + "344": -11.29999999999999, + "345": 83.59999999999975, + "346": 12.250000000000037, + "347": 43.54999999999998, + "348": 85.2000000000001, + "349": 46.2999999999999, + "350": 48.49999999999998, + "351": 75.39999999999988, + "352": -18.69999999999997, + "353": 55.399999999999935, + "354": 97.35000000000015, + "355": 29.99999999999998, + "356": 87.15000000000005, + "357": 103.3500000000002, + "358": 16.800000000000047, + "359": 88.55000000000007, + "360": 36.15, + "361": 11.800000000000036, + "362": 58.44999999999989, + "363": 69.04999999999995, + "364": 20.099999999999994, + "365": 44.09999999999997, + "366": 82.40000000000019, + "367": 99.25000000000024, + "368": 74.4, + "369": 71.5000000000001, + "370": 105.35000000000024, + "371": 99.60000000000014, + "372": 66.64999999999998, + "373": 84.60000000000004, + "374": 81.05000000000011, + "375": 80.60000000000004, + "376": 59.999999999999915, + "377": 48.59999999999975, + "378": 63.6999999999998, + "379": 83.6, + "380": 82.09999999999994, + "381": -15.900000000000022, + "382": 59.14999999999999, + "383": 38.09999999999995, + "384": 98.75000000000016, + "385": 15.499999999999963, + "386": 102.85000000000022, + "387": 55.10000000000002, + "388": 68.54999999999988, + "389": 38.649999999999864, + "390": 105.55000000000022, + "391": 58.999999999999915, + "392": 67.6999999999999, + "393": 57.949999999999946, + "394": 94.20000000000017, + "395": 104.05000000000017, + "396": 96.35000000000018, + "397": 51.54999999999997, + "398": 105.35000000000015, + "399": 1.1499999999999722, + "400": 79.45000000000003, + "401": 101.05000000000004, + "402": 100.25000000000023, + "403": 76.55000000000001, + "404": 109.10000000000022, + "405": 65.04999999999995, + "406": 23.99999999999995, + "407": 52.29999999999998, + "408": 63.89999999999994, + "409": 97.10000000000015, + "410": 96.30000000000014, + "411": 54.949999999999825, + "412": 102.79999999999993, + "413": 60.199999999999996, + "414": 112.80000000000018, + "415": 41.849999999999945, + "416": 101.45, + "417": 61.75000000000006, + "418": 95.55000000000017, + "419": 98.70000000000019, + "420": 27.899999999999984, + "421": 86.70000000000005, + "422": 54.19999999999976, + "423": 95.19999999999978, + "424": 104.40000000000023, + "425": 102.59999999999984, + "426": 31.499999999999872, + "427": 12.299999999999995, + "428": 86.5000000000001, + "429": 22.599999999999987, + "430": 80.25000000000006, + "431": 101.30000000000011, + "432": 90.4999999999998, + "433": 98.25000000000006, + "434": 36.59999999999995, + "435": 56.649999999999906, + "436": 3.4499999999999584, + "437": -12.400000000000013, + "438": 80.20000000000003, + "439": 78.24999999999987, + "440": 85.50000000000007, + "441": 69.74999999999997, + "442": 108.8000000000003, + "443": 97.45000000000016, + "444": 90.2000000000002, + "445": 92.35000000000018, + "446": 50.95000000000005, + "447": 91.25000000000017, + "448": 82.90000000000016, + "449": 102.20000000000023, + "450": 59.39999999999996, + "451": 95.95000000000019, + "452": 29.04999999999998, + "453": 90.85000000000004, + "454": 78.85000000000001, + "455": 65.79999999999993, + "456": 52.50000000000005, + "457": 105.95000000000009, + "458": 91.10000000000024, + "459": 72.14999999999995, + "460": 97.20000000000013, + "461": 95.50000000000003, + "462": 102.59999999999997, + "463": 84.1499999999998, + "464": 35.199999999999925, + "465": 92.90000000000018, + "466": 60.79999999999991, + "467": 55.84999999999985, + "468": 81.05000000000011, + "469": 70.69999999999986, + "470": 100.45000000000017, + "471": 74.04999999999991, + "472": 104.45000000000017, + "473": 62.149999999999984, + "474": 54.949999999999996, + "475": 93.70000000000016, + "476": 100.90000000000025, + "477": 17.750000000000092, + "478": 59.64999999999989, + "479": 73.59999999999997, + "480": 65.99999999999987, + "481": 38.74999999999993, + "482": 102.6500000000002, + "483": 46.249999999999886, + "484": 63.749999999999936, + "485": 55.399999999999956, + "486": 109.40000000000022, + "487": 29.250000000000014, + "488": 58.700000000000045, + "489": 104.35000000000022, + "490": 59.49999999999989, + "491": 101.25000000000007, + "492": 53.249999999999915, + "493": 53.24999999999991, + "494": 79.4000000000001, + "495": 88.95000000000007, + "496": 20.14999999999995, + "497": 88.15000000000012, + "498": 66.89999999999999, + "499": 97.7000000000002, + "500": 94.10000000000011, + "501": 105.90000000000026, + "502": 41.849999999999945, + "503": 51.449999999999925, + "504": 50.84999999999991, + "505": 105.50000000000021, + "506": 67.54999999999993, + "507": 103.3500000000002, + "508": 97.4500000000002, + "509": 61.2000000000001, + "510": 69.74999999999993, + "511": 70.64999999999992, + "512": 96.05000000000014, + "513": 53.84999999999992, + "514": 63.29999999999977, + "515": -5.150000000000013, + "516": 102.50000000000018, + "517": 73.14999999999993, + "518": 74.95000000000002, + "519": 101.80000000000008, + "520": 102.05000000000004, + "521": 32.34999999999997, + "522": 47.699999999999946, + "523": 47.24999999999991, + "524": 59.1999999999999, + "525": 51.69999999999993, + "526": 38.35000000000001, + "527": 58.29999999999991, + "528": 28.94999999999998, + "529": 42.69999999999996, + "530": 34.19999999999997, + "531": 66.7999999999999, + "532": 105.80000000000021, + "533": 112.15000000000025, + "534": 103.3000000000002, + "535": 108.55000000000024, + "536": 80.05000000000005, + "537": 72.74999999999999, + "538": 54.64999999999994, + "539": 96.65000000000012, + "540": 63.64999999999992, + "541": 44.54999999999993, + "542": 104.45000000000023, + "543": 28.499999999999957, + "544": 82.9, + "545": 75.54999999999997, + "546": 96.45000000000013, + "547": 93.70000000000014, + "548": 97.45000000000013, + "549": 34.199999999999996, + "550": 112.20000000000017, + "551": 50.54999999999987, + "552": 108.80000000000024, + "553": 91.20000000000006, + "554": 4.450000000000015, + "555": 101.75000000000018, + "556": 53.84999999999991, + "557": 75.0, + "558": 100.8000000000002, + "559": 23.44999999999999, + "560": 12.899999999999986, + "561": 40.34999999999995, + "562": 95.30000000000011, + "563": 84.00000000000014, + "564": 96.35000000000014, + "565": 97.75000000000014, + "566": 97.79999999999995, + "567": 81.44999999999987, + "568": 94.65, + "569": 59.7499999999999, + "570": 71.39999999999993, + "571": 22.75, + "572": -5.800000000000004, + "573": 36.89999999999998, + "574": 63.29999999999989, + "575": 22.34999999999997, + "576": 70.19999999999992, + "577": 81.7499999999999, + "578": 61.94999999999994, + "579": 106.95000000000016, + "580": 29.20000000000001, + "581": 55.499999999999936, + "582": 79.25000000000004, + "583": 36.849999999999916, + "584": 32.69999999999993, + "585": 4.449999999999999, + "586": 38.7499999999999, + "587": 51.69999999999991, + "588": -0.6000000000000152, + "589": 60.84999999999991, + "590": 51.749999999999886, + "591": 66.49999999999993, + "592": 94.25000000000007, + "593": 91.25000000000014, + "594": 96.19999999999993, + "595": 64.29999999999988, + "596": 104.9000000000002, + "597": 59.299999999999955, + "598": 80.25, + "599": 68.84999999999981, + "600": 101.30000000000014, + "601": 98.95000000000012, + "602": 101.20000000000014, + "603": 93.45000000000005, + "604": 43.89999999999987, + "605": 52.349999999999945, + "606": 101.3500000000002, + "607": 98.20000000000019, + "608": 99.45000000000022, + "609": 91.50000000000013, + "610": 22.7, + "611": 103.40000000000013, + "612": 101.95000000000016, + "613": 84.0500000000001, + "614": 92.95000000000012, + "615": 38.39999999999995, + "616": -16.799999999999983, + "617": 80.15000000000002, + "618": 93.05000000000014, + "619": 98.45000000000016, + "620": 100.30000000000017, + "621": 95.14999999999998, + "622": 69.69999999999993, + "623": 60.04999999999989, + "624": 98.75000000000018, + "625": 108.40000000000026, + "626": 103.45000000000017, + "627": 89.34999999999988, + "628": 92.7000000000001, + "629": 19.199999999999925, + "630": 100.40000000000019, + "631": 89.89999999999999, + "632": 87.00000000000013, + "633": 102.20000000000017, + "634": 54.24999999999986, + "635": 41.19999999999994, + "636": 25.700000000000006, + "637": 79.35000000000005, + "638": 109.90000000000006, + "639": 103.00000000000016, + "640": 83.40000000000008, + "641": 110.35000000000025, + "642": 8.400000000000011, + "643": 88.65000000000009, + "644": 108.50000000000023, + "645": 109.2500000000002, + "646": 28.749999999999982, + "647": 71.59999999999991, + "648": 103.80000000000018, + "649": 115.35000000000026, + "650": 91.30000000000011, + "651": 62.799999999999926, + "652": 102.5000000000002, + "653": 100.7500000000001, + "654": 24.099999999999888, + "655": 107.95000000000019, + "656": 61.89999999999989, + "657": 105.65000000000018, + "658": 106.8000000000002, + "659": 104.90000000000023, + "660": 92.70000000000013, + "661": 101.45000000000024, + "662": 70.69999999999997, + "663": 24.700000000000003, + "664": 88.95000000000003, + "665": 91.95000000000012, + "666": 15.100000000000007, + "667": 52.64999999999994, + "668": 103.85000000000014, + "669": 56.999999999999936, + "670": 37.09999999999996, + "671": 101.85000000000021, + "672": 100.30000000000014, + "673": 100.15000000000013, + "674": 71.89999999999995, + "675": 77.95000000000006, + "676": 103.20000000000019, + "677": -4.400000000000001, + "678": 73.95, + "679": 68.2999999999999, + "680": 102.7000000000002, + "681": 106.95000000000019, + "682": 109.4500000000001, + "683": 74.64999999999996, + "684": 113.95000000000024, + "685": 102.95000000000017, + "686": 100.69999999999996, + "687": 90.15000000000008, + "688": 102.20000000000019, + "689": 78.3, + "690": 51.59999999999995, + "691": 76.60000000000001, + "692": 105.4000000000001, + "693": 77.90000000000003, + "694": 54.34999999999986, + "695": 108.60000000000022, + "696": 65.49999999999993, + "697": 45.899999999999956, + "698": 101.00000000000016, + "699": 105.85000000000022, + "700": 108.15000000000025, + "701": 35.54999999999997, + "702": 13.60000000000002, + "703": 112.25000000000024, + "704": 88.1, + "705": 102.3500000000002, + "706": 107.4500000000002, + "707": 36.5999999999999, + "708": 35.34999999999992, + "709": 63.49999999999995, + "710": 50.199999999999946, + "711": 108.15000000000015, + "712": 49.24999999999996, + "713": 47.39999999999993, + "714": 87.30000000000008, + "715": 101.80000000000017, + "716": 104.0000000000002, + "717": 97.80000000000007, + "718": 105.10000000000024, + "719": 109.20000000000024, + "720": 99.25000000000023, + "721": 98.30000000000001, + "722": 57.199999999999946, + "723": -32.70000000000001, + "724": 23.69999999999999, + "725": 101.44999999999997, + "726": 70.14999999999998, + "727": 102.90000000000022, + "728": 102.10000000000011, + "729": 104.35000000000022, + "730": 36.10000000000001, + "731": 91.05000000000008, + "732": 79.79999999999995, + "733": 92.29999999999995, + "734": 30.250000000000036, + "735": 89.5499999999999, + "736": 65.69999999999995, + "737": 102.5000000000002, + "738": 76.39999999999999, + "739": 63.44999999999994, + "740": 46.549999999999955, + "741": 37.09999999999995, + "742": 106.40000000000013, + "743": 64.94999999999993, + "744": 83.25000000000004, + "745": 99.8000000000001, + "746": 56.99999999999983, + "747": 94.70000000000017, + "748": 50.199999999999946, + "749": 100.70000000000024, + "750": 105.55000000000021, + "751": 50.64999999999995, + "752": 18.3, + "753": 36.55, + "754": 78.45000000000003, + "755": 18.149999999999995, + "756": 60.099999999999966, + "757": 82.99999999999997, + "758": 98.75000000000007, + "759": 51.099999999999945, + "760": 98.75000000000017, + "761": 42.049999999999955, + "762": 110.5500000000003, + "763": 105.80000000000021, + "764": 92.55000000000001, + "765": 101.35000000000015, + "766": 60.899999999999935, + "767": 10.500000000000057, + "768": 8.450000000000008, + "769": 110.70000000000024, + "770": 60.09999999999993, + "771": 51.69999999999993, + "772": 28.699999999999974, + "773": 110.35000000000022, + "774": 107.55000000000024, + "775": 62.44999999999991, + "776": 94.85000000000012, + "777": 73.54999999999998, + "778": 17.700000000000067, + "779": 109.95000000000007, + "780": 19.799999999999972, + "781": 35.35000000000003, + "782": 105.30000000000024, + "783": 75.94999999999999, + "784": 34.59999999999997, + "785": 88.55000000000004, + "786": 57.64999999999992, + "787": 34.850000000000115, + "788": 59.749999999999794, + "789": 67.45, + "790": 66.25, + "791": 55.449999999999925, + "792": 99.69999999999993, + "793": 80.75000000000009, + "794": 36.849999999999945, + "795": 62.74999999999996, + "796": 82.40000000000008, + "797": 88.10000000000005, + "798": 67.79999999999998, + "799": 58.04999999999991, + "800": 96.19999999999999, + "801": 49.09999999999993, + "802": 58.85000000000005, + "803": 101.30000000000005, + "804": 83.24999999999996, + "805": 58.04999999999985, + "806": 97.40000000000013, + "807": 60.15000000000003, + "808": -56.99999999999997, + "809": 99.75000000000014, + "810": 94.50000000000017, + "811": 95.45000000000016, + "812": 99.60000000000007, + "813": 100.25000000000016, + "814": 93.60000000000012, + "815": 93.95000000000016, + "816": 62.64999999999991, + "817": 58.64999999999985, + "818": 28.59999999999999, + "819": 82.50000000000004, + "820": 84.30000000000005, + "821": 75.60000000000001, + "822": 90.90000000000005, + "823": 95.15000000000015, + "824": 92.60000000000016, + "825": 78.80000000000008, + "826": 30.89999999999997, + "827": 93.09999999999997, + "828": 87.70000000000007, + "829": 105.30000000000027, + "830": 107.85000000000022, + "831": 94.24999999999984, + "832": 76.39999999999998, + "833": 96.20000000000017, + "834": 10.149999999999993, + "835": 94.25000000000001, + "836": 94.1500000000001, + "837": 69.84999999999997, + "838": 37.799999999999955, + "839": 101.1000000000002, + "840": 17.549999999999983, + "841": 78.10000000000001, + "842": 83.4999999999998, + "843": 79.54999999999986, + "844": 32.15, + "845": 51.249999999999915, + "846": 78.75000000000003, + "847": 91.60000000000011, + "848": 80.65000000000008, + "849": 88.9000000000001, + "850": 73.89999999999996, + "851": 109.00000000000018, + "852": 91.94999999999992, + "853": 107.10000000000028, + "854": 90.10000000000014, + "855": 88.9500000000001, + "856": 62.399999999999935, + "857": 61.299999999999905, + "858": 58.099999999999824, + "859": 99.55000000000021, + "860": 98.74999999999979, + "861": 106.45000000000005, + "862": 28.99999999999993, + "863": 59.599999999999866, + "864": -28.099999999999998, + "865": 73.35000000000002, + "866": 94.64999999999974, + "867": 52.94999999999982, + "868": 73.04999999999986, + "869": 82.5, + "870": 88.90000000000008, + "871": 104.40000000000013, + "872": 84.2, + "873": 7.800000000000001, + "874": 55.79999999999995, + "875": 88.45000000000012, + "876": -12.30000000000002, + "877": 48.399999999999885, + "878": 81.39999999999979, + "879": 102.65000000000012, + "880": 72.39999999999986, + "881": 92.04999999999976, + "882": 29.199999999999967, + "883": 98.70000000000014, + "884": 23.949999999999985, + "885": 10.499999999999943, + "886": 73.0, + "887": 67.35000000000001, + "888": 63.29999999999993, + "889": 106.95000000000012, + "890": 47.49999999999989, + "891": 66.39999999999988, + "892": 78.29999999999978, + "893": 96.19999999999997, + "894": 98.85000000000016, + "895": 44.44999999999992, + "896": 103.10000000000024, + "897": 97.55000000000008, + "898": 30.54999999999996, + "899": 88.09999999999991, + "900": 77.29999999999995, + "901": 94.39999999999988, + "902": 6.749999999999973, + "903": 64.29999999999995, + "904": 91.94999999999978, + "905": 10.450000000000053, + "906": 72.39999999999985, + "907": 96.35000000000005, + "908": 97.50000000000006, + "909": 60.69999999999993, + "910": -19.55, + "911": 80.24999999999983, + "912": 43.44999999999997, + "913": 82.79999999999981, + "914": 46.99999999999979, + "915": 92.09999999999978, + "916": 77.7999999999999, + "917": 98.40000000000003, + "918": 98.70000000000009, + "919": 62.74999999999975, + "920": 49.949999999999754, + "921": 21.599999999999998, + "922": 80.09999999999981, + "923": 70.69999999999979, + "924": 86.4000000000001, + "925": 95.00000000000009, + "926": 68.14999999999975, + "927": 63.04999999999991, + "928": 102.95000000000005, + "929": 78.94999999999983, + "930": 36.20000000000001, + "931": 73.89999999999999, + "932": 49.39999999999978, + "933": 77.75000000000007, + "934": 80.99999999999997, + "935": 77.85000000000004, + "936": 101.80000000000021, + "937": 69.29999999999987, + "938": 67.29999999999994, + "939": 90.7999999999999, + "940": 99.30000000000014, + "941": 40.79999999999979, + "942": 63.2499999999999, + "943": 96.79999999999977, + "944": 99.85000000000015, + "945": 62.499999999999886, + "946": 98.1000000000001, + "947": 87.44999999999999, + "948": 101.54999999999977, + "949": 81.39999999999984, + "950": 53.09999999999992, + "951": 80.09999999999975, + "952": 94.94999999999978, + "953": 92.14999999999978, + "954": 97.79999999999974, + "955": 87.79999999999983, + "956": 96.94999999999972, + "957": 94.20000000000003, + "958": 70.79999999999978, + "959": 65.5499999999998, + "960": 100.24999999999979, + "961": 102.64999999999993, + "962": 89.14999999999975, + "963": 21.099999999999984, + "964": 69.24999999999987, + "965": 93.15000000000018, + "966": 22.149999999999956, + "967": 87.44999999999975, + "968": 69.29999999999981, + "969": 91.24999999999977, + "970": 51.74999999999979, + "971": 78.74999999999993, + "972": 30.599999999999845, + "973": 94.5999999999999, + "974": 46.84999999999975, + "975": 64.99999999999977, + "976": 53.299999999999756, + "977": 87.60000000000004, + "978": 92.59999999999972, + "979": 93.34999999999977, + "980": 48.94999999999978, + "981": 97.70000000000009, + "982": 97.14999999999975, + "983": 48.74999999999975, + "984": 91.74999999999982, + "985": 101.14999999999986, + "986": 81.0499999999998, + "987": 63.1999999999999, + "988": 106.24999999999982, + "989": 66.89999999999992, + "990": 74.19999999999976, + "991": 92.29999999999974, + "992": 91.79999999999977, + "993": 81.50000000000001, + "994": 88.85000000000001, + "995": 99.09999999999972, + "996": 108.34999999999977, + "997": 54.049999999999926, + "998": 44.44999999999992, + "999": 101.74999999999973, + "1000": -39.899999999999984 + }, + "4": { + "1": -53.10000000000009, + "2": -17.299999999999972, + "3": -51.25000000000008, + "4": -48.30000000000006, + "5": -29.899999999999956, + "6": -23.449999999999964, + "7": -16.149999999999984, + "8": -38.750000000000036, + "9": -22.449999999999953, + "10": -48.40000000000015, + "11": -27.99999999999999, + "12": -7.199999999999988, + "13": -31.100000000000016, + "14": -25.95000000000002, + "15": -12.349999999999994, + "16": -17.799999999999976, + "17": -98.6, + "18": -43.65000000000011, + "19": -21.449999999999957, + "20": -52.95000000000008, + "21": -66.30000000000008, + "22": -39.55000000000012, + "23": -42.600000000000044, + "24": -81.64999999999998, + "25": -21.999999999999954, + "26": -15.499999999999979, + "27": -63.50000000000011, + "28": -20.249999999999982, + "29": -20.799999999999958, + "30": -13.249999999999982, + "31": -18.34999999999997, + "32": -53.20000000000015, + "33": -7.799999999999997, + "34": 5.850000000000034, + "35": -0.6999999999999571, + "36": -6.050000000000013, + "37": -20.19999999999996, + "38": -20.54999999999996, + "39": -13.349999999999985, + "40": -7.3499999999999925, + "41": -66.85000000000004, + "42": 8.750000000000043, + "43": -27.30000000000002, + "44": -12.34999999999999, + "45": -18.499999999999964, + "46": -33.24999999999999, + "47": -86.95, + "48": -16.8, + "49": -64.25000000000006, + "50": 3.5000000000000275, + "51": -7.499999999999999, + "52": -15.299999999999978, + "53": -23.94999999999995, + "54": -34.59999999999999, + "55": -11.35000000000001, + "56": -10.599999999999987, + "57": -31.75000000000003, + "58": -107.1, + "59": -30.550000000000022, + "60": -50.90000000000005, + "61": -103.75, + "62": -27.749999999999936, + "63": -13.699999999999983, + "64": 4.0500000000000576, + "65": -80.45000000000002, + "66": -18.549999999999965, + "67": -55.40000000000009, + "68": 21.0, + "69": 0.10000000000001108, + "70": -85.60000000000002, + "71": -67.35000000000008, + "72": -48.90000000000001, + "73": -13.649999999999986, + "74": -47.75000000000005, + "75": -15.749999999999979, + "76": -45.75000000000005, + "77": -63.7000000000001, + "78": -12.949999999999987, + "79": 21.599999999999916, + "80": -100.49999999999999, + "81": -56.700000000000095, + "82": -4.249999999999967, + "83": -19.099999999999966, + "84": -46.19999999999993, + "85": -21.299999999999965, + "86": 10.850000000000058, + "87": -17.94999999999997, + "88": -93.25, + "89": 11.400000000000013, + "90": -90.45, + "91": -19.299999999999965, + "92": -23.29999999999995, + "93": -60.950000000000095, + "94": -19.999999999999964, + "95": -16.699999999999974, + "96": -16.49999999999998, + "97": -18.24999999999997, + "98": -61.20000000000009, + "99": -86.45000000000002, + "100": -14.000000000000007, + "101": -7.049999999999984, + "102": -18.199999999999967, + "103": -28.550000000000004, + "104": -10.149999999999991, + "105": 5.500000000000013, + "106": -36.200000000000045, + "107": 31.4499999999998, + "108": -14.249999999999984, + "109": -69.05000000000005, + "110": 13.29999999999998, + "111": -81.05, + "112": 5.85000000000002, + "113": 2.7500000000000577, + "114": 2.05000000000003, + "115": 4.0500000000000504, + "116": -10.849999999999996, + "117": -90.05000000000001, + "118": -17.00000000000003, + "119": 4.550000000000038, + "120": -9.449999999999985, + "121": -11.75000000000004, + "122": -10.299999999999981, + "123": -18.949999999999967, + "124": 13.150000000000013, + "125": -63.050000000000104, + "126": -14.649999999999984, + "127": -22.59999999999995, + "128": 5.7499999999999005, + "129": 27.45000000000002, + "130": 5.699999999999998, + "131": -14.199999999999964, + "132": 25.299999999999972, + "133": -45.70000000000005, + "134": -5.649999999999976, + "135": -18.100000000000044, + "136": -13.150000000000006, + "137": 4.9499999999999655, + "138": 35.549999999999876, + "139": -3.3000000000001, + "140": 14.70000000000002, + "141": -9.150000000000004, + "142": -44.44999999999999, + "143": -14.649999999999977, + "144": -67.49999999999997, + "145": -67.69999999999997, + "146": -81.55000000000001, + "147": -34.65000000000004, + "148": 12.049999999999867, + "149": -7.5999999999999845, + "150": -8.249999999999984, + "151": 24.850000000000065, + "152": -15.649999999999979, + "153": 3.350000000000044, + "154": 40.74999999999999, + "155": -46.250000000000014, + "156": -6.149999999999986, + "157": 37.29999999999989, + "158": -15.699999999999973, + "159": -10.100000000000007, + "160": 7.750000000000041, + "161": 7.600000000000026, + "162": -13.49999999999997, + "163": -26.54999999999995, + "164": 30.449999999999932, + "165": -87.79999999999998, + "166": -68.70000000000002, + "167": -13.14999999999999, + "168": -7.299999999999983, + "169": 38.149999999999814, + "170": -79.34999999999998, + "171": -17.149999999999956, + "172": -16.649999999999974, + "173": 19.750000000000025, + "174": -63.00000000000011, + "175": 62.44999999999998, + "176": -0.44999999999996, + "177": -22.899999999999984, + "178": -7.2999999999999865, + "179": -94.5, + "180": -33.549999999999955, + "181": -94.2, + "182": -2.7499999999999885, + "183": -8.149999999999988, + "184": 5.450000000000016, + "185": 5.150000000000009, + "186": -4.550000000000033, + "187": 26.00000000000004, + "188": -38.09999999999999, + "189": -71.90000000000003, + "190": -73.1, + "191": 21.55000000000002, + "192": -31.149999999999963, + "193": -81.7, + "194": 50.449999999999854, + "195": -13.750000000000012, + "196": -41.70000000000003, + "197": -56.850000000000094, + "198": -5.399999999999981, + "199": 57.49999999999982, + "200": -52.40000000000001, + "201": -37.000000000000064, + "202": -73.34999999999994, + "203": 16.79999999999994, + "204": 44.499999999999744, + "205": 14.450000000000077, + "206": 48.34999999999985, + "207": 71.29999999999991, + "208": 23.250000000000014, + "209": -21.499999999999957, + "210": -21.34999999999996, + "211": 22.599999999999966, + "212": 34.799999999999805, + "213": 67.64999999999989, + "214": 73.19999999999978, + "215": -70.24999999999999, + "216": -48.74999999999998, + "217": -37.49999999999997, + "218": 82.90000000000016, + "219": -75.79999999999998, + "220": -89.75, + "221": 61.34999999999975, + "222": 30.749999999999762, + "223": -65.69999999999993, + "224": 20.500000000000025, + "225": 19.40000000000006, + "226": 14.349999999999914, + "227": 25.150000000000055, + "228": -50.04999999999994, + "229": 28.75000000000007, + "230": 51.749999999999815, + "231": 71.89999999999988, + "232": 73.29999999999981, + "233": -10.599999999999962, + "234": 69.34999999999987, + "235": -10.749999999999964, + "236": 44.24999999999973, + "237": 31.649999999999945, + "238": -16.09999999999998, + "239": -20.59999999999999, + "240": 21.25000000000007, + "241": 0.600000000000027, + "242": -2.7999999999999785, + "243": 38.84999999999985, + "244": 6.450000000000021, + "245": -63.199999999999974, + "246": 58.8999999999998, + "247": 38.30000000000006, + "248": 92.59999999999974, + "249": -9.850000000000032, + "250": -57.20000000000011, + "251": 57.74999999999977, + "252": 83.04999999999974, + "253": 64.39999999999992, + "254": -10.049999999999992, + "255": -57.05000000000007, + "256": 30.000000000000007, + "257": -0.8999999999999915, + "258": 21.20000000000008, + "259": 55.5999999999998, + "260": 83.64999999999976, + "261": 21.499999999999982, + "262": 32.65000000000008, + "263": -84.10000000000001, + "264": 98.24999999999974, + "265": 48.29999999999984, + "266": 60.7999999999999, + "267": 87.09999999999975, + "268": 33.10000000000005, + "269": -48.59999999999994, + "270": 78.24999999999987, + "271": 60.6499999999999, + "272": 34.199999999999896, + "273": 77.79999999999973, + "274": 26.800000000000033, + "275": -12.200000000000014, + "276": 88.24999999999977, + "277": 9.700000000000067, + "278": 101.29999999999971, + "279": 64.9999999999998, + "280": 17.199999999999896, + "281": 95.39999999999976, + "282": 84.74999999999977, + "283": 71.14999999999989, + "284": 34.29999999999986, + "285": 36.90000000000001, + "286": 61.74999999999984, + "287": 99.34999999999972, + "288": 86.09999999999981, + "289": 74.09999999999977, + "290": 74.9499999999998, + "291": 63.29999999999985, + "292": 80.34999999999977, + "293": 24.899999999999956, + "294": 82.44999999999978, + "295": -32.3, + "296": 77.89999999999985, + "297": -12.899999999999988, + "298": 54.99999999999979, + "299": 50.74999999999978, + "300": 77.74999999999984, + "301": 82.19999999999979, + "302": 98.29999999999978, + "303": 38.049999999999976, + "304": 78.04999999999977, + "305": -23.89999999999995, + "306": 85.59999999999984, + "307": 9.450000000000026, + "308": 39.24999999999997, + "309": 61.19999999999976, + "310": 49.149999999999764, + "311": 89.84999999999982, + "312": 11.500000000000043, + "313": 85.79999999999976, + "314": 54.1499999999998, + "315": 93.39999999999976, + "316": 91.59999999999977, + "317": 99.94999999999978, + "318": 80.19999999999978, + "319": 99.44999999999976, + "320": -71.65000000000002, + "321": 87.69999999999978, + "322": 94.69999999999979, + "323": 92.19999999999979, + "324": 77.49999999999987, + "325": 68.59999999999977, + "326": 99.74999999999976, + "327": 82.59999999999982, + "328": 94.94999999999973, + "329": 88.49999999999979, + "330": 85.94999999999976, + "331": 28.299999999999844, + "332": 85.24999999999977, + "333": 89.9499999999998, + "334": -50.50000000000008, + "335": 85.99999999999984, + "336": -1.0999999999999823, + "337": 92.64999999999978, + "338": 99.99999999999976, + "339": 29.99999999999981, + "340": 87.29999999999976, + "341": 81.7499999999998, + "342": 95.59999999999975, + "343": 91.99999999999974, + "344": 97.39999999999978, + "345": 96.09999999999978, + "346": 98.94999999999975, + "347": 99.6999999999998, + "348": 98.89999999999975, + "349": 84.34999999999975, + "350": 91.24999999999977, + "351": 83.09999999999978, + "352": 80.39999999999984, + "353": -86.1, + "354": 69.79999999999976, + "355": 82.64999999999972, + "356": 100.24999999999979, + "357": 91.74999999999977, + "358": 100.14999999999978, + "359": 88.5999999999998, + "360": 102.74999999999976, + "361": 21.94999999999991, + "362": 89.49999999999979, + "363": 95.79999999999976, + "364": 83.89999999999979, + "365": 83.2999999999998, + "366": 100.69999999999978, + "367": -84.44999999999999, + "368": 10.150000000000038, + "369": -11.899999999999991, + "370": 100.19999999999976, + "371": 102.44999999999973, + "372": 76.44999999999979, + "373": 101.89999999999976, + "374": 99.94999999999979, + "375": 8.650000000000025, + "376": 32.750000000000014, + "377": 82.79999999999984, + "378": 73.24999999999972, + "379": 103.49999999999976, + "380": 92.99999999999977, + "381": 103.09999999999977, + "382": 103.84999999999975, + "383": 96.04999999999974, + "384": 103.09999999999977, + "385": 95.09999999999977, + "386": 83.4999999999998, + "387": 103.39999999999976, + "388": -80.0, + "389": 90.1499999999998, + "390": 97.59999999999972, + "391": 83.09999999999978, + "392": 94.44999999999976, + "393": 100.39999999999976, + "394": 97.99999999999979, + "395": 90.99999999999982, + "396": 82.79999999999977, + "397": 99.09999999999977, + "398": 105.24999999999974, + "399": 65.94999999999976, + "400": 98.39999999999976, + "401": 103.09999999999977, + "402": 100.69999999999976, + "403": 98.74999999999976, + "404": -44.05000000000007, + "405": 91.44999999999976, + "406": 27.000000000000046, + "407": 98.64999999999976, + "408": 96.44999999999978, + "409": 104.99999999999983, + "410": 90.99999999999979, + "411": 101.9999999999998, + "412": 103.34999999999988, + "413": 98.29999999999974, + "414": 78.59999999999987, + "415": 99.34999999999987, + "416": 101.69999999999978, + "417": 77.8999999999998, + "418": 101.14999999999978, + "419": 103.09999999999977, + "420": 103.49999999999976, + "421": 100.69999999999978, + "422": 91.44999999999978, + "423": 100.54999999999977, + "424": -23.149999999999952, + "425": 99.79999999999976, + "426": -9.349999999999985, + "427": 106.89999999999979, + "428": 101.99999999999977, + "429": 84.2499999999998, + "430": 93.34999999999981, + "431": 104.69999999999982, + "432": 83.09999999999977, + "433": 59.49999999999984, + "434": 101.59999999999975, + "435": 98.99999999999977, + "436": 96.89999999999976, + "437": 105.84999999999984, + "438": 97.19999999999976, + "439": -11.799999999999985, + "440": 102.49999999999976, + "441": 98.44999999999979, + "442": 108.44999999999986, + "443": 103.54999999999977, + "444": 101.14999999999976, + "445": 104.74999999999976, + "446": 100.69999999999976, + "447": 87.79999999999976, + "448": 96.5499999999998, + "449": 75.94999999999978, + "450": 103.49999999999977, + "451": 84.84999999999974, + "452": 101.14999999999976, + "453": 23.049999999999898, + "454": 98.69999999999978, + "455": 102.39999999999978, + "456": 62.19999999999973, + "457": 102.74999999999976, + "458": 105.44999999999975, + "459": 65.6499999999999, + "460": -38.89999999999997, + "461": 62.44999999999979, + "462": 97.44999999999978, + "463": 102.69999999999976, + "464": 107.89999999999979, + "465": 103.59999999999977, + "466": 104.99999999999974, + "467": 103.04999999999977, + "468": 102.84999999999977, + "469": 104.79999999999974, + "470": 100.19999999999978, + "471": 104.59999999999977, + "472": 102.79999999999977, + "473": 104.94999999999975, + "474": -80.69999999999999, + "475": 102.34999999999977, + "476": -84.00000000000003, + "477": 96.09999999999975, + "478": 80.79999999999973, + "479": 102.24999999999977, + "480": 98.30000000000008, + "481": 103.39999999999975, + "482": 56.09999999999979, + "483": 103.54999999999977, + "484": 103.74999999999972, + "485": 67.74999999999976, + "486": 62.94999999999975, + "487": 101.99999999999977, + "488": 103.24999999999974, + "489": 104.49999999999974, + "490": 75.29999999999983, + "491": 72.84999999999977, + "492": 77.44999999999978, + "493": 102.69999999999978, + "494": 96.14999999999976, + "495": 94.8499999999998, + "496": 106.64999999999972, + "497": 80.89999999999989, + "498": 84.44999999999976, + "499": 101.94999999999976, + "500": 99.89999999999978, + "501": 105.89999999999974, + "502": -35.199999999999996, + "503": 106.69999999999973, + "504": 94.59999999999981, + "505": 101.49999999999977, + "506": 103.19999999999976, + "507": 103.99999999999972, + "508": 96.74999999999982, + "509": 97.8499999999998, + "510": 104.59999999999974, + "511": 102.74999999999977, + "512": 103.64999999999976, + "513": 100.39999999999975, + "514": 99.19999999999978, + "515": 71.64999999999976, + "516": 104.09999999999974, + "517": 104.34999999999975, + "518": 102.94999999999978, + "519": 97.54999999999977, + "520": 106.24999999999973, + "521": -75.3, + "522": 4.75, + "523": 100.34999999999975, + "524": 106.69999999999975, + "525": 56.699999999999854, + "526": 16.30000000000001, + "527": 101.29999999999977, + "528": 93.09999999999977, + "529": 103.54999999999977, + "530": 66.2999999999999, + "531": 102.59999999999977, + "532": 102.74999999999977, + "533": 102.84999999999977, + "534": 102.84999999999977, + "535": 104.59999999999977, + "536": 107.89999999999974, + "537": 104.04999999999974, + "538": 75.74999999999977, + "539": 102.29999999999977, + "540": 81.34999999999978, + "541": 102.09999999999977, + "542": 105.89999999999974, + "543": 99.54999999999974, + "544": 102.84999999999975, + "545": 105.84999999999972, + "546": 105.59999999999972, + "547": 103.54999999999977, + "548": 98.64999999999978, + "549": 103.39999999999976, + "550": 106.34999999999975, + "551": 84.14999999999976, + "552": 108.59999999999974, + "553": 104.34999999999975, + "554": -78.9, + "555": 91.19999999999978, + "556": 101.54999999999977, + "557": 103.49999999999977, + "558": 104.79999999999974, + "559": 48.14999999999982, + "560": 40.99999999999998, + "561": 93.69999999999982, + "562": 104.44999999999976, + "563": 105.49999999999974, + "564": 102.24999999999977, + "565": 93.59999999999978, + "566": 105.74999999999974, + "567": 99.74999999999976, + "568": 62.39999999999994, + "569": 100.64999999999974, + "570": 104.39999999999972, + "571": 103.89999999999976, + "572": 103.34999999999977, + "573": 85.79999999999977, + "574": 3.1499999999999915, + "575": 102.04999999999977, + "576": 104.64999999999978, + "577": 59.09999999999975, + "578": -81.00000000000001, + "579": 103.59999999999977, + "580": 105.69999999999972, + "581": 53.79999999999983, + "582": 104.79999999999974, + "583": 102.84999999999977, + "584": 104.44999999999978, + "585": 104.39999999999975, + "586": 104.54999999999976, + "587": 103.79999999999977, + "588": 105.59999999999972, + "589": 102.54999999999976, + "590": 103.54999999999977, + "591": 83.54999999999977, + "592": -75.8, + "593": 105.89999999999972, + "594": 102.09999999999977, + "595": 105.74999999999973, + "596": 103.19999999999976, + "597": 102.94999999999978, + "598": 107.04999999999974, + "599": 103.89999999999976, + "600": 104.39999999999976, + "601": 100.99999999999976, + "602": 106.09999999999974, + "603": 105.34999999999975, + "604": 105.09999999999974, + "605": 103.74999999999977, + "606": 102.89999999999976, + "607": -78.65, + "608": 102.89999999999978, + "609": 107.24999999999973, + "610": 102.64999999999976, + "611": 106.94999999999973, + "612": -82.80000000000001, + "613": 104.09999999999977, + "614": 104.39999999999976, + "615": 104.14999999999976, + "616": 43.74999999999976, + "617": 104.49999999999976, + "618": 60.74999999999977, + "619": 105.39999999999975, + "620": 103.29999999999977, + "621": 106.49999999999993, + "622": 107.54999999999974, + "623": 107.99999999999974, + "624": 76.69999999999978, + "625": 108.29999999999974, + "626": 102.99999999999977, + "627": 104.54999999999976, + "628": 103.74999999999977, + "629": 105.54999999999973, + "630": 104.64999999999975, + "631": 102.89999999999976, + "632": 105.39999999999974, + "633": 104.14999999999976, + "634": 104.59999999999975, + "635": 104.29999999999977, + "636": 103.94999999999976, + "637": 97.84999999999977, + "638": -79.04999999999998, + "639": 103.04999999999977, + "640": 100.74999999999979, + "641": 102.74999999999977, + "642": 104.09999999999977, + "643": 106.04999999999971, + "644": 106.64999999999989, + "645": 104.09999999999977, + "646": 103.24999999999976, + "647": 103.04999999999977, + "648": 103.99999999999976, + "649": 81.19999999999976, + "650": 102.79999999999977, + "651": 102.99999999999977, + "652": 101.94999999999978, + "653": 39.1, + "654": 105.84999999999972, + "655": 60.34999999999975, + "656": 96.39999999999979, + "657": 62.69999999999998, + "658": 105.24999999999974, + "659": 92.44999999999975, + "660": 103.69999999999976, + "661": 101.39999999999978, + "662": 103.09999999999977, + "663": 103.24999999999976, + "664": 94.4499999999998, + "665": 89.79999999999987, + "666": 103.54999999999976, + "667": 103.99999999999976, + "668": 73.64999999999976, + "669": 103.69999999999976, + "670": -14.500000000000007, + "671": 105.04999999999976, + "672": 104.94999999999975, + "673": 103.34999999999977, + "674": 90.89999999999982, + "675": 100.99999999999977, + "676": 105.09999999999981, + "677": 103.64999999999976, + "678": 71.59999999999977, + "679": 107.94999999999973, + "680": 73.14999999999976, + "681": 103.24999999999977, + "682": 103.29999999999977, + "683": 54.29999999999975, + "684": 98.69999999999975, + "685": 104.54999999999973, + "686": 105.6499999999998, + "687": 103.09999999999977, + "688": 103.84999999999977, + "689": 104.34999999999974, + "690": 83.54999999999977, + "691": 84.8499999999998, + "692": 105.44999999999982, + "693": 106.54999999999973, + "694": 106.24999999999983, + "695": 103.94999999999976, + "696": 105.94999999999973, + "697": 12.799999999999969, + "698": 103.29999999999984, + "699": 109.09999999999975, + "700": 101.99999999999974, + "701": 104.79999999999977, + "702": 103.79999999999976, + "703": 102.64999999999976, + "704": 103.29999999999977, + "705": 106.94999999999973, + "706": 104.69999999999976, + "707": 103.09999999999977, + "708": 103.74999999999976, + "709": 103.14999999999978, + "710": 102.79999999999974, + "711": 99.24999999999977, + "712": 103.04999999999977, + "713": 102.69999999999978, + "714": 103.74999999999976, + "715": 102.74999999999976, + "716": 83.99999999999983, + "717": 104.39999999999975, + "718": 104.84999999999975, + "719": 103.59999999999977, + "720": 103.39999999999976, + "721": 102.74999999999977, + "722": 104.84999999999974, + "723": 104.49999999999976, + "724": 105.64999999999974, + "725": 92.49999999999977, + "726": 102.49999999999976, + "727": 104.34999999999988, + "728": 104.39999999999975, + "729": 103.44999999999976, + "730": 106.94999999999979, + "731": 103.14999999999978, + "732": 103.69999999999976, + "733": 111.44999999999993, + "734": 102.94999999999978, + "735": 100.39999999999976, + "736": 99.54999999999978, + "737": 104.89999999999975, + "738": 104.19999999999976, + "739": 95.89999999999995, + "740": 105.29999999999994, + "741": 105.59999999999972, + "742": 104.19999999999976, + "743": 105.44999999999972, + "744": 105.84999999999974, + "745": 106.94999999999973, + "746": 107.84999999999972, + "747": 94.49999999999974, + "748": 104.84999999999975, + "749": 107.29999999999973, + "750": 104.04999999999976, + "751": 103.99999999999976, + "752": 62.34999999999977, + "753": 107.54999999999973, + "754": -84.6, + "755": 106.64999999999972, + "756": 85.69999999999983, + "757": 103.04999999999977, + "758": 57.54999999999978, + "759": 104.79999999999976, + "760": 96.04999999999976, + "761": 3.80000000000006, + "762": 102.79999999999977, + "763": -65.80000000000001, + "764": 106.64999999999974, + "765": 31.64999999999985, + "766": -68.35000000000001, + "767": 103.54999999999976, + "768": 104.84999999999977, + "769": 58.199999999999754, + "770": 103.89999999999976, + "771": 49.699999999999775, + "772": 109.94999999999985, + "773": 104.74999999999976, + "774": 104.59999999999975, + "775": 105.79999999999981, + "776": 31.39999999999987, + "777": 103.64999999999976, + "778": 103.34999999999977, + "779": 105.04999999999974, + "780": -68.1, + "781": 107.39999999999975, + "782": 109.50000000000018, + "783": -19.25, + "784": 108.39999999999989, + "785": 107.59999999999982, + "786": 102.39999999999978, + "787": 104.29999999999977, + "788": -84.00000000000003, + "789": 112.49999999999994, + "790": -77.4, + "791": 104.19999999999975, + "792": 92.74999999999983, + "793": 104.19999999999976, + "794": 104.29999999999976, + "795": -84.54999999999998, + "796": 103.89999999999979, + "797": 109.0499999999998, + "798": 105.29999999999977, + "799": 105.89999999999972, + "800": 103.14999999999976, + "801": 101.99999999999977, + "802": 105.19999999999973, + "803": 105.04999999999974, + "804": 105.74999999999972, + "805": 104.89999999999993, + "806": 105.34999999999974, + "807": 104.39999999999976, + "808": 103.64999999999976, + "809": 105.74999999999973, + "810": 49.74999999999981, + "811": 108.69999999999995, + "812": 106.39999999999971, + "813": -36.95000000000001, + "814": 105.59999999999975, + "815": 105.94999999999973, + "816": 103.34999999999977, + "817": 103.39999999999976, + "818": -76.6, + "819": 111.94999999999992, + "820": 103.34999999999977, + "821": 104.14999999999976, + "822": 106.59999999999972, + "823": 104.29999999999976, + "824": -3.8000000000000043, + "825": 103.29999999999977, + "826": 65.14999999999979, + "827": 103.99999999999976, + "828": 100.14999999999978, + "829": 104.44999999999976, + "830": 104.99999999999973, + "831": 78.94999999999978, + "832": -75.35, + "833": 102.49999999999977, + "834": -86.45000000000013, + "835": 116.35000000000032, + "836": 103.14999999999976, + "837": 105.34999999999972, + "838": 105.79999999999974, + "839": 108.69999999999975, + "840": 105.44999999999973, + "841": -88.44999999999999, + "842": 104.59999999999975, + "843": 104.24999999999976, + "844": 105.24999999999973, + "845": 113.80000000000021, + "846": 104.79999999999974, + "847": 104.94999999999982, + "848": 104.59999999999975, + "849": 103.39999999999976, + "850": 107.94999999999979, + "851": 105.69999999999972, + "852": 109.09999999999977, + "853": 106.29999999999971, + "854": 82.74999999999974, + "855": 71.29999999999978, + "856": -68.34999999999998, + "857": 106.49999999999996, + "858": 107.69999999999975, + "859": 105.39999999999972, + "860": 103.34999999999977, + "861": 107.74999999999974, + "862": 103.74999999999976, + "863": 100.79999999999973, + "864": 106.19999999999973, + "865": 100.79999999999976, + "866": -81.0, + "867": 105.69999999999986, + "868": 103.09999999999977, + "869": 104.09999999999977, + "870": 102.69999999999978, + "871": 103.94999999999976, + "872": 105.09999999999975, + "873": 103.94999999999973, + "874": 46.699999999999896, + "875": 94.54999999999978, + "876": 103.79999999999977, + "877": 106.24999999999973, + "878": 104.14999999999975, + "879": -73.69999999999997, + "880": 104.59999999999982, + "881": -77.44999999999999, + "882": -15.000000000000014, + "883": 104.84999999999975, + "884": -81.95, + "885": 105.14999999999975, + "886": 109.24999999999979, + "887": -77.85, + "888": 104.19999999999976, + "889": 113.75, + "890": -38.10000000000001, + "891": 104.69999999999976, + "892": -72.05000000000001, + "893": -73.80000000000001, + "894": 113.64999999999988, + "895": 104.19999999999976, + "896": 107.64999999999974, + "897": 109.29999999999978, + "898": 109.04999999999981, + "899": 109.24999999999976, + "900": 104.84999999999977, + "901": 104.24999999999976, + "902": 105.79999999999974, + "903": 104.04999999999977, + "904": 104.54999999999974, + "905": 104.94999999999975, + "906": 105.09999999999975, + "907": 101.49999999999972, + "908": -79.94999999999999, + "909": 103.29999999999977, + "910": 105.89999999999972, + "911": 102.64999999999976, + "912": 85.34999999999981, + "913": 104.69999999999976, + "914": 106.59999999999972, + "915": 106.44999999999972, + "916": 106.59999999999974, + "917": 107.64999999999974, + "918": 116.70000000000027, + "919": 59.150000000000034, + "920": 102.74999999999977, + "921": 104.89999999999972, + "922": 104.89999999999974, + "923": 107.19999999999972, + "924": 106.19999999999975, + "925": 104.79999999999976, + "926": 111.64999999999999, + "927": 109.04999999999976, + "928": 104.39999999999975, + "929": 105.34999999999975, + "930": 115.10000000000018, + "931": 108.39999999999975, + "932": 60.249999999999766, + "933": 40.69999999999997, + "934": 97.94999999999975, + "935": 105.39999999999974, + "936": 108.44999999999976, + "937": 105.89999999999974, + "938": 106.14999999999972, + "939": 106.09999999999972, + "940": 105.29999999999973, + "941": 104.44999999999978, + "942": 108.59999999999977, + "943": 105.79999999999973, + "944": 71.04999999999976, + "945": 106.94999999999973, + "946": 75.59999999999977, + "947": 103.14999999999978, + "948": 102.74999999999977, + "949": 106.99999999999973, + "950": 103.24999999999976, + "951": 110.54999999999983, + "952": 110.44999999999989, + "953": 104.49999999999974, + "954": 39.849999999999824, + "955": 104.94999999999975, + "956": -63.350000000000016, + "957": 104.04999999999977, + "958": -88.25, + "959": 103.24999999999977, + "960": 102.44999999999976, + "961": 83.34999999999975, + "962": -69.80000000000001, + "963": 108.59999999999974, + "964": 103.94999999999976, + "965": 105.39999999999974, + "966": 107.39999999999974, + "967": -45.80000000000007, + "968": 105.10000000000008, + "969": 103.69999999999973, + "970": 105.59999999999985, + "971": -79.0, + "972": 102.84999999999977, + "973": 103.44999999999976, + "974": 104.74999999999973, + "975": 103.29999999999977, + "976": -82.45000000000002, + "977": 105.59999999999974, + "978": 104.49999999999983, + "979": -83.35, + "980": 106.89999999999974, + "981": -83.85, + "982": -81.3, + "983": 103.49999999999972, + "984": 56.149999999999764, + "985": 106.19999999999978, + "986": 110.19999999999976, + "987": 108.69999999999976, + "988": 108.39999999999975, + "989": -41.05000000000001, + "990": 107.40000000000003, + "991": 46.79999999999997, + "992": 110.34999999999987, + "993": 106.39999999999972, + "994": 104.39999999999975, + "995": 106.09999999999972, + "996": 104.19999999999976, + "997": 107.14999999999974, + "998": 105.64999999999972, + "999": 103.14999999999976, + "1000": 107.24999999999979 + }, + "5": { + "1": -4.399999999999995, + "2": -48.50000000000004, + "3": -109.5, + "4": -54.500000000000085, + "5": -15.949999999999978, + "6": -80.89999999999992, + "7": -15.349999999999982, + "8": -23.29999999999995, + "9": -34.350000000000016, + "10": -49.800000000000054, + "11": -46.95000000000006, + "12": -22.699999999999953, + "13": -32.35000000000003, + "14": -24.199999999999942, + "15": -51.150000000000176, + "16": -52.20000000000008, + "17": -68.60000000000007, + "18": -30.400000000000006, + "19": -19.99999999999996, + "20": -73.15000000000002, + "21": -17.949999999999974, + "22": -12.949999999999987, + "23": -61.25, + "24": -35.19999999999998, + "25": -70.70000000000005, + "26": -96.6, + "27": -48.550000000000146, + "28": -4.599999999999975, + "29": -7.4, + "30": -44.050000000000175, + "31": -4.29999999999998, + "32": -21.999999999999957, + "33": -78.30000000000004, + "34": -15.099999999999985, + "35": -55.60000000000003, + "36": -51.800000000000075, + "37": -20.39999999999996, + "38": -22.499999999999954, + "39": -104.3, + "40": -45.75000000000005, + "41": 2.100000000000044, + "42": -21.099999999999987, + "43": -14.99999999999998, + "44": -94.15, + "45": -45.70000000000012, + "46": -17.399999999999974, + "47": -29.099999999999948, + "48": -13.749999999999986, + "49": -87.25, + "50": -47.04999999999999, + "51": -23.89999999999995, + "52": -47.75000000000007, + "53": -13.699999999999976, + "54": -17.74999999999997, + "55": -23.799999999999972, + "56": -16.49999999999998, + "57": -21.299999999999958, + "58": -13.099999999999985, + "59": -96.69999999999997, + "60": -23.44999999999995, + "61": -8.399999999999995, + "62": -37.65000000000005, + "63": -20.349999999999962, + "64": -19.049999999999958, + "65": -17.24999999999998, + "66": -8.550000000000006, + "67": -18.14999999999997, + "68": -69.45000000000005, + "69": -16.999999999999975, + "70": -72.19999999999999, + "71": -29.599999999999994, + "72": -19.049999999999965, + "73": -7.249999999999993, + "74": -16.049999999999983, + "75": -17.49999999999997, + "76": -18.29999999999997, + "77": -15.799999999999976, + "78": -6.299999999999986, + "79": -17.24999999999997, + "80": -20.999999999999957, + "81": -12.84999999999996, + "82": -77.1, + "83": -18.34999999999997, + "84": -16.24999999999998, + "85": -51.75000000000008, + "86": -19.649999999999963, + "87": -0.5999999999999621, + "88": 4.700000000000018, + "89": -39.45000000000005, + "90": -19.79999999999996, + "91": -15.999999999999979, + "92": -45.39999999999999, + "93": 9.800000000000018, + "94": -81.9, + "95": 0.5499999999999933, + "96": -3.149999999999971, + "97": -16.899999999999974, + "98": -3.899999999999987, + "99": -36.55000000000004, + "100": -63.0000000000001, + "101": 13.300000000000004, + "102": -51.25000000000008, + "103": -1.849999999999997, + "104": -42.54999999999998, + "105": -84.10000000000001, + "106": -97.94999999999999, + "107": -17.65, + "108": -18.44999999999997, + "109": -15.399999999999975, + "110": 24.44999999999998, + "111": -40.20000000000011, + "112": -6.250000000000002, + "113": -22.74999999999996, + "114": -5.699999999999991, + "115": -18.64999999999996, + "116": -1.3500000000000008, + "117": 14.250000000000053, + "118": -53.49999999999998, + "119": -71.89999999999999, + "120": -29.299999999999994, + "121": 24.949999999999925, + "122": 17.000000000000025, + "123": -26.649999999999945, + "124": -50.449999999999974, + "125": 27.949999999999967, + "126": -71.39999999999999, + "127": -21.999999999999954, + "128": -15.499999999999979, + "129": -19.799999999999965, + "130": 10.100000000000012, + "131": -56.80000000000011, + "132": 19.60000000000007, + "133": -1.2499999999999811, + "134": -16.149999999999945, + "135": 1.1000000000000354, + "136": -8.749999999999972, + "137": -9.65, + "138": -16.649999999999977, + "139": -14.499999999999984, + "140": -9.949999999999998, + "141": 3.2500000000000187, + "142": 32.10000000000004, + "143": -3.199999999999998, + "144": 9.300000000000034, + "145": -26.29999999999997, + "146": 11.149999999999995, + "147": -3.199999999999984, + "148": -26.599999999999973, + "149": -12.699999999999967, + "150": -0.19999999999997642, + "151": -18.649999999999967, + "152": -42.80000000000001, + "153": 14.649999999999956, + "154": 5.300000000000017, + "155": -9.89999999999999, + "156": -0.4499999999999653, + "157": -40.65000000000006, + "158": 0.2000000000000146, + "159": -2.250000000000001, + "160": -85.30000000000001, + "161": 2.050000000000021, + "162": 3.450000000000025, + "163": -85.69999999999999, + "164": 2.5000000000000036, + "165": -0.5999999999999849, + "166": -10.249999999999996, + "167": -24.849999999999977, + "168": -8.5, + "169": -25.899999999999984, + "170": 18.2, + "171": -94.3, + "172": 5.500000000000007, + "173": 17.050000000000065, + "174": -19.39999999999999, + "175": -8.04999999999999, + "176": -9.949999999999987, + "177": -42.550000000000054, + "178": 27.35000000000007, + "179": -0.19999999999995866, + "180": 23.549999999999894, + "181": 44.899999999999885, + "182": 32.14999999999996, + "183": -15.999999999999975, + "184": 57.5999999999998, + "185": 16.999999999999996, + "186": -10.549999999999995, + "187": 10.550000000000061, + "188": -90.0, + "189": -9.900000000000002, + "190": 20.500000000000007, + "191": 19.15000000000004, + "192": -2.2999999999999963, + "193": -1.799999999999986, + "194": 22.149999999999963, + "195": -14.949999999999976, + "196": 17.100000000000044, + "197": -13.999999999999964, + "198": -0.6499999999999884, + "199": 46.599999999999746, + "200": 43.94999999999977, + "201": 27.95000000000003, + "202": 20.10000000000007, + "203": 51.59999999999976, + "204": 5.600000000000055, + "205": 40.349999999999866, + "206": -56.4, + "207": -7.200000000000007, + "208": 10.650000000000082, + "209": 53.599999999999795, + "210": -49.849999999999994, + "211": 46.29999999999992, + "212": -30.24999999999998, + "213": 52.39999999999978, + "214": 87.45000000000012, + "215": -84.95, + "216": 67.34999999999988, + "217": 46.09999999999985, + "218": 77.1499999999999, + "219": 1.9499999999999933, + "220": 46.24999999999981, + "221": 21.699999999999953, + "222": 34.3499999999999, + "223": -7.899999999999994, + "224": 41.84999999999974, + "225": 7.3500000000000085, + "226": 66.79999999999977, + "227": -2.6999999999999664, + "228": 11.500000000000039, + "229": 0.800000000000008, + "230": -7.500000000000008, + "231": -87.85, + "232": 62.39999999999993, + "233": -1.3500000000000272, + "234": 36.59999999999988, + "235": 91.64999999999998, + "236": 8.9, + "237": -81.39999999999996, + "238": 47.749999999999886, + "239": -9.55000000000004, + "240": 28.299999999999844, + "241": 83.0500000000001, + "242": 40.69999999999978, + "243": 28.649999999999892, + "244": -62.500000000000014, + "245": 72.35000000000011, + "246": -23.900000000000006, + "247": 81.30000000000008, + "248": 63.649999999999764, + "249": 25.249999999999947, + "250": 12.100000000000067, + "251": 58.84999999999993, + "252": 14.199999999999969, + "253": 86.15000000000022, + "254": -10.150000000000007, + "255": 69.09999999999984, + "256": 42.04999999999995, + "257": 36.2, + "258": 56.79999999999995, + "259": 64.35000000000014, + "260": 68.44999999999978, + "261": 81.19999999999982, + "262": 35.15000000000003, + "263": -4.699999999999989, + "264": 106.55000000000028, + "265": 48.44999999999992, + "266": 24.25000000000001, + "267": -54.64999999999994, + "268": 59.049999999999926, + "269": 46.24999999999976, + "270": 32.99999999999999, + "271": 89.09999999999981, + "272": 65.14999999999978, + "273": 89.64999999999995, + "274": 43.44999999999994, + "275": -33.30000000000004, + "276": 103.50000000000017, + "277": -56.74999999999996, + "278": 42.0999999999999, + "279": 92.80000000000008, + "280": -25.349999999999973, + "281": -38.799999999999976, + "282": -83.99999999999997, + "283": 85.84999999999978, + "284": 25.099999999999923, + "285": 42.24999999999992, + "286": 19.150000000000002, + "287": 72.99999999999984, + "288": -71.55000000000001, + "289": 26.99999999999999, + "290": 41.49999999999989, + "291": 31.899999999999864, + "292": -70.84999999999997, + "293": 94.0500000000001, + "294": 36.04999999999999, + "295": -25.900000000000027, + "296": 107.00000000000024, + "297": 59.099999999999866, + "298": 106.05000000000018, + "299": -21.799999999999986, + "300": 31.29999999999999, + "301": 47.9499999999999, + "302": 67.9499999999999, + "303": -39.30000000000008, + "304": 87.04999999999998, + "305": -16.950000000000028, + "306": 57.3499999999999, + "307": 106.35000000000026, + "308": 62.04999999999991, + "309": -21.999999999999982, + "310": 60.59999999999983, + "311": -3.1500000000000057, + "312": 94.70000000000009, + "313": 102.45000000000014, + "314": 92.20000000000016, + "315": -74.55, + "316": 89.00000000000003, + "317": 9.649999999999999, + "318": -70.24999999999997, + "319": -43.899999999999984, + "320": -54.94999999999995, + "321": -13.600000000000005, + "322": 26.799999999999976, + "323": 66.69999999999987, + "324": -12.59999999999998, + "325": -16.349999999999984, + "326": -64.74999999999986, + "327": 61.29999999999982, + "328": 29.900000000000013, + "329": 59.699999999999875, + "330": 67.79999999999981, + "331": -45.15000000000005, + "332": -68.54999999999997, + "333": 21.650000000000002, + "334": 1.5999999999999868, + "335": 48.249999999999915, + "336": 84.09999999999981, + "337": 7.899999999999989, + "338": 78.59999999999984, + "339": -9.949999999999996, + "340": 75.14999999999996, + "341": -44.34999999999996, + "342": 91.85000000000001, + "343": 94.60000000000016, + "344": 73.64999999999999, + "345": 33.3, + "346": 13.299999999999997, + "347": 107.25000000000024, + "348": 40.049999999999976, + "349": -63.89999999999992, + "350": 102.9500000000002, + "351": 51.54999999999981, + "352": 77.19999999999999, + "353": 95.70000000000012, + "354": 47.54999999999994, + "355": 28.650000000000055, + "356": 6.55, + "357": 22.949999999999967, + "358": 103.40000000000018, + "359": 51.34999999999995, + "360": 93.05000000000014, + "361": 95.5000000000001, + "362": 31.199999999999985, + "363": 98.0500000000002, + "364": 52.69999999999979, + "365": -7.450000000000001, + "366": 37.69999999999999, + "367": 64.69999999999985, + "368": 66.89999999999988, + "369": 89.24999999999979, + "370": -78.4, + "371": 93.25000000000013, + "372": 94.99999999999991, + "373": -2.849999999999964, + "374": 75.34999999999977, + "375": 85.70000000000003, + "376": 98.55000000000013, + "377": 90.14999999999976, + "378": -72.09999999999992, + "379": 97.10000000000015, + "380": 24.199999999999978, + "381": 57.94999999999993, + "382": 72.89999999999978, + "383": 49.799999999999926, + "384": 86.60000000000001, + "385": 78.34999999999981, + "386": 86.70000000000007, + "387": 31.84999999999996, + "388": 51.24999999999995, + "389": 50.29999999999987, + "390": 65.79999999999991, + "391": 83.45, + "392": 61.59999999999988, + "393": 89.7500000000001, + "394": 81.09999999999984, + "395": 95.04999999999974, + "396": 70.14999999999976, + "397": 67.84999999999984, + "398": 0.1999999999999731, + "399": 66.84999999999991, + "400": 55.949999999999775, + "401": 91.90000000000013, + "402": 92.0000000000001, + "403": 81.7999999999998, + "404": 96.0999999999998, + "405": 35.499999999999794, + "406": 48.799999999999955, + "407": 40.050000000000004, + "408": 92.00000000000006, + "409": 104.35, + "410": 86.29999999999978, + "411": -5.849999999999988, + "412": 51.099999999999746, + "413": 64.79999999999974, + "414": 15.150000000000034, + "415": 77.00000000000006, + "416": 68.79999999999991, + "417": 59.64999999999974, + "418": 75.04999999999976, + "419": 38.39999999999998, + "420": 84.29999999999978, + "421": 51.8499999999998, + "422": 37.84999999999993, + "423": 92.69999999999979, + "424": 71.39999999999985, + "425": 75.04999999999986, + "426": 77.64999999999975, + "427": 15.799999999999992, + "428": 25.150000000000013, + "429": 96.44999999999975, + "430": 85.69999999999978, + "431": 78.09999999999994, + "432": 82.39999999999974, + "433": 103.0000000000002, + "434": 95.99999999999973, + "435": 15.200000000000014, + "436": 80.79999999999978, + "437": 63.09999999999979, + "438": 90.84999999999981, + "439": 58.799999999999876, + "440": 75.24999999999987, + "441": 99.05000000000011, + "442": 72.39999999999982, + "443": 94.69999999999992, + "444": 62.14999999999993, + "445": 8.450000000000015, + "446": 93.79999999999976, + "447": 75.60000000000014, + "448": 96.74999999999976, + "449": 44.54999999999987, + "450": -3.7999999999999967, + "451": -43.19999999999999, + "452": 97.99999999999974, + "453": 75.25000000000003, + "454": 90.29999999999978, + "455": 86.69999999999976, + "456": 94.09999999999978, + "457": 79.04999999999977, + "458": 66.74999999999987, + "459": 76.2499999999999, + "460": 101.99999999999974, + "461": 104.69999999999983, + "462": 85.34999999999978, + "463": 97.39999999999975, + "464": 32.35, + "465": 98.29999999999976, + "466": 79.89999999999982, + "467": 101.00000000000016, + "468": 84.14999999999975, + "469": 92.69999999999979, + "470": 93.59999999999977, + "471": 36.899999999999956, + "472": 86.34999999999977, + "473": 105.54999999999991, + "474": 66.39999999999993, + "475": 101.09999999999975, + "476": -5.149999999999967, + "477": 98.49999999999977, + "478": 104.34999999999987, + "479": 104.29999999999991, + "480": 99.94999999999979, + "481": 99.59999999999974, + "482": 95.54999999999986, + "483": 97.19999999999982, + "484": 93.89999999999976, + "485": 75.14999999999996, + "486": 98.19999999999982, + "487": 45.299999999999784, + "488": 92.29999999999977, + "489": 103.09999999999977, + "490": 94.74999999999977, + "491": 101.34999999999977, + "492": 99.19999999999976, + "493": 91.89999999999979, + "494": 86.89999999999976, + "495": 103.54999999999976, + "496": 41.999999999999964, + "497": 100.49999999999977, + "498": 95.24999999999977, + "499": 103.89999999999974, + "500": 96.69999999999976, + "501": 96.59999999999977, + "502": 69.49999999999974, + "503": 81.34999999999978, + "504": 101.54999999999977, + "505": 82.44999999999978, + "506": 97.84999999999975, + "507": 93.29999999999977, + "508": 61.34999999999976, + "509": 94.99999999999979, + "510": 68.74999999999973, + "511": 104.84999999999975, + "512": 102.64999999999974, + "513": 102.84999999999975, + "514": -2.3000000000000753, + "515": 102.99999999999974, + "516": 99.1999999999998, + "517": 103.54999999999978, + "518": 98.59999999999978, + "519": 104.39999999999974, + "520": -76.1, + "521": 50.99999999999976, + "522": 103.04999999999976, + "523": -25.400000000000066, + "524": 93.29999999999983, + "525": 71.04999999999976, + "526": 94.49999999999976, + "527": 98.24999999999976, + "528": 103.99999999999986, + "529": 99.59999999999977, + "530": 99.89999999999976, + "531": 106.84999999999974, + "532": 102.74999999999976, + "533": 103.14999999999976, + "534": 97.79999999999974, + "535": 98.84999999999975, + "536": 102.79999999999977, + "537": 26.35000000000006, + "538": 102.39999999999985, + "539": 96.04999999999976, + "540": 83.19999999999983, + "541": 105.34999999999974, + "542": 102.94999999999975, + "543": 98.44999999999975, + "544": 92.8999999999998, + "545": 101.44999999999975, + "546": 107.34999999999982, + "547": 103.99999999999973, + "548": 103.54999999999974, + "549": 22.50000000000004, + "550": 103.94999999999972, + "551": -46.300000000000004, + "552": 101.94999999999975, + "553": 108.94999999999999, + "554": 108.19999999999978, + "555": 105.94999999999972, + "556": 95.14999999999975, + "557": 102.74999999999973, + "558": 103.89999999999972, + "559": 101.54999999999978, + "560": 100.49999999999977, + "561": 87.5499999999998, + "562": 94.84999999999977, + "563": -74.69999999999999, + "564": 105.59999999999975, + "565": 102.74999999999976, + "566": 94.29999999999977, + "567": 96.29999999999978, + "568": 97.69999999999978, + "569": 99.24999999999977, + "570": 103.24999999999973, + "571": 100.19999999999973, + "572": 97.44999999999979, + "573": 102.44999999999972, + "574": 93.74999999999999, + "575": 90.54999999999976, + "576": 101.24999999999977, + "577": 95.69999999999978, + "578": 101.24999999999974, + "579": 78.54999999999987, + "580": 101.94999999999972, + "581": 103.34999999999975, + "582": 109.10000000000002, + "583": 103.49999999999976, + "584": 104.04999999999971, + "585": 106.39999999999972, + "586": 104.74999999999973, + "587": 103.04999999999977, + "588": 13.099999999999978, + "589": 105.45000000000007, + "590": 14.149999999999906, + "591": 104.39999999999975, + "592": 104.3999999999998, + "593": 111.14999999999989, + "594": 102.44999999999976, + "595": 104.99999999999976, + "596": 76.74999999999986, + "597": 102.49999999999976, + "598": 76.04999999999984, + "599": 99.79999999999977, + "600": 49.79999999999981, + "601": 102.39999999999976, + "602": 101.24999999999977, + "603": 78.44999999999993, + "604": 39.39999999999976, + "605": 45.299999999999955, + "606": -85.6, + "607": 103.74999999999976, + "608": 104.19999999999995, + "609": 98.99999999999976, + "610": 95.99999999999974, + "611": 102.59999999999985, + "612": 97.64999999999979, + "613": -56.74999999999997, + "614": 27.650000000000027, + "615": 63.849999999999724, + "616": 103.99999999999976, + "617": 105.04999999999991, + "618": 101.79999999999977, + "619": 101.84999999999977, + "620": 82.54999999999974, + "621": 99.34999999999972, + "622": -76.30000000000007, + "623": 104.09999999999975, + "624": 103.39999999999975, + "625": 101.04999999999976, + "626": 96.29999999999986, + "627": -87.0, + "628": 101.74999999999977, + "629": 104.04999999999977, + "630": 106.84999999999974, + "631": 86.64999999999978, + "632": 102.49999999999974, + "633": 100.34999999999974, + "634": 55.89999999999977, + "635": 102.14999999999975, + "636": 104.34999999999974, + "637": -74.10000000000002, + "638": 105.44999999999972, + "639": 104.09999999999977, + "640": 105.1499999999998, + "641": 82.19999999999985, + "642": -68.75, + "643": 87.99999999999983, + "644": 104.09999999999977, + "645": 105.24999999999974, + "646": 100.54999999999974, + "647": 105.39999999999974, + "648": 103.19999999999976, + "649": 102.29999999999977, + "650": 102.94999999999976, + "651": 103.59999999999977, + "652": 102.04999999999976, + "653": 102.44999999999976, + "654": 99.94999999999976, + "655": 105.44999999999973, + "656": 42.85000000000001, + "657": 103.99999999999976, + "658": 104.19999999999976, + "659": 103.74999999999974, + "660": 53.79999999999975, + "661": 104.19999999999976, + "662": 109.49999999999976, + "663": 87.64999999999975, + "664": 102.49999999999973, + "665": -44.65000000000006, + "666": 104.14999999999976, + "667": 49.89999999999995, + "668": 105.79999999999973, + "669": 105.14999999999974, + "670": 73.8999999999998, + "671": 85.89999999999984, + "672": 97.04999999999978, + "673": 104.59999999999975, + "674": 103.99999999999976, + "675": 101.59999999999977, + "676": 106.14999999999982, + "677": 98.69999999999978, + "678": 106.69999999999975, + "679": 99.94999999999978, + "680": 99.24999999999976, + "681": 104.19999999999976, + "682": 104.14999999999976, + "683": 81.3999999999999, + "684": 98.69999999999976, + "685": 101.99999999999972, + "686": 105.24999999999974, + "687": 99.84999999999977, + "688": 103.49999999999976, + "689": 103.69999999999975, + "690": 104.09999999999972, + "691": 101.89999999999976, + "692": 106.94999999999976, + "693": 103.84999999999974, + "694": 104.44999999999973, + "695": 104.74999999999973, + "696": 87.49999999999972, + "697": 102.79999999999974, + "698": 103.69999999999976, + "699": 79.29999999999987, + "700": 108.04999999999973, + "701": 57.749999999999766, + "702": 106.29999999999973, + "703": 103.79999999999977, + "704": 107.54999999999983, + "705": -0.600000000000033, + "706": -80.14999999999999, + "707": 99.44999999999975, + "708": 107.99999999999976, + "709": 97.29999999999976, + "710": 89.29999999999977, + "711": 102.24999999999973, + "712": -38.75000000000003, + "713": -34.04999999999999, + "714": 103.69999999999973, + "715": 102.09999999999974, + "716": -43.19999999999999, + "717": 104.39999999999975, + "718": 0.5999999999999659, + "719": 99.69999999999976, + "720": 105.79999999999973, + "721": 103.09999999999977, + "722": 105.39999999999976, + "723": 105.14999999999976, + "724": 104.34999999999977, + "725": 104.04999999999976, + "726": -65.4, + "727": -42.550000000000054, + "728": 104.29999999999984, + "729": 103.44999999999976, + "730": -78.75, + "731": 103.84999999999975, + "732": 105.54999999999973, + "733": 91.7499999999998, + "734": 109.29999999999976, + "735": 110.54999999999991, + "736": 103.84999999999975, + "737": 108.04999999999973, + "738": -72.50000000000001, + "739": 109.09999999999977, + "740": 89.24999999999977, + "741": 103.29999999999976, + "742": 109.34999999999975, + "743": 102.84999999999977, + "744": 108.84999999999975, + "745": 105.59999999999974, + "746": 81.19999999999978, + "747": 100.99999999999977, + "748": 105.19999999999972, + "749": 58.29999999999976, + "750": 46.79999999999987, + "751": 67.84999999999987, + "752": 103.54999999999974, + "753": 88.74999999999976, + "754": 105.14999999999974, + "755": 109.55, + "756": 70.69999999999975, + "757": 103.94999999999975, + "758": 101.74999999999972, + "759": 105.14999999999972, + "760": 103.99999999999974, + "761": 102.69999999999978, + "762": 104.19999999999975, + "763": 104.39999999999975, + "764": -77.95, + "765": 25.599999999999895, + "766": 108.89999999999975, + "767": 106.34999999999977, + "768": 96.54999999999981, + "769": 104.24999999999976, + "770": 106.89999999999972, + "771": 105.19999999999973, + "772": 103.24999999999977, + "773": 103.14999999999976, + "774": 97.49999999999976, + "775": 104.24999999999977, + "776": 105.34999999999978, + "777": 84.54999999999984, + "778": 104.84999999999975, + "779": 104.04999999999973, + "780": 103.84999999999977, + "781": 106.94999999999973, + "782": 100.54999999999976, + "783": 80.19999999999978, + "784": 105.39999999999972, + "785": 103.74999999999977, + "786": 104.79999999999976, + "787": 107.49999999999973, + "788": 106.54999999999973, + "789": -39.34999999999994, + "790": 107.29999999999974, + "791": -74.0, + "792": 107.14999999999974, + "793": 102.84999999999977, + "794": 93.24999999999972, + "795": 108.14999999999974, + "796": -67.60000000000002, + "797": 103.89999999999976, + "798": 105.39999999999972, + "799": 104.99999999999973, + "800": 102.39999999999975, + "801": 106.74999999999977, + "802": 103.09999999999972, + "803": 105.39999999999974, + "804": 100.54999999999977, + "805": 109.39999999999976, + "806": 111.59999999999977, + "807": 104.84999999999974, + "808": 104.09999999999977, + "809": -102.30000000000001, + "810": 104.74999999999974, + "811": 106.19999999999973, + "812": 104.89999999999974, + "813": -72.50000000000001, + "814": 104.94999999999975, + "815": 103.84999999999977, + "816": 103.99999999999974, + "817": -64.64999999999999, + "818": 105.09999999999974, + "819": 105.99999999999972, + "820": 24.24999999999989, + "821": 102.74999999999977, + "822": 100.09999999999977, + "823": 104.19999999999976, + "824": 109.59999999999981, + "825": 105.09999999999972, + "826": 102.59999999999977, + "827": 102.94999999999976, + "828": -76.85000000000002, + "829": 106.19999999999975, + "830": 90.54999999999974, + "831": 41.94999999999977, + "832": -87.19999999999999, + "833": 106.49999999999974, + "834": 103.29999999999977, + "835": 106.24999999999972, + "836": 106.24999999999973, + "837": 104.84999999999975, + "838": 105.29999999999974, + "839": 103.59999999999977, + "840": 91.04999999999981, + "841": 103.59999999999975, + "842": 103.99999999999976, + "843": 106.24999999999973, + "844": 74.99999999999987, + "845": 103.29999999999977, + "846": 104.04999999999976, + "847": 106.99999999999973, + "848": -83.75000000000001, + "849": 105.79999999999973, + "850": -76.30000000000001, + "851": 105.24999999999972, + "852": 105.79999999999973, + "853": 100.84999999999977, + "854": 104.99999999999976, + "855": 105.09999999999972, + "856": 83.89999999999976, + "857": 107.24999999999983, + "858": 103.54999999999977, + "859": -72.05, + "860": 104.09999999999972, + "861": 103.59999999999977, + "862": 104.84999999999975, + "863": -74.89999999999999, + "864": 103.04999999999977, + "865": 104.29999999999977, + "866": 99.69999999999975, + "867": 104.24999999999974, + "868": 95.74999999999976, + "869": 104.59999999999975, + "870": 100.24999999999977, + "871": 104.04999999999976, + "872": 102.64999999999976, + "873": 104.59999999999975, + "874": 102.74999999999977, + "875": 104.39999999999975, + "876": 102.89999999999978, + "877": 104.54999999999977, + "878": 103.74999999999977, + "879": -79.10000000000001, + "880": 104.24999999999976, + "881": 103.49999999999977, + "882": -86.35000000000002, + "883": 103.39999999999976, + "884": 105.39999999999975, + "885": 100.3499999999998, + "886": 107.29999999999973, + "887": 104.09999999999975, + "888": 102.69999999999978, + "889": 101.84999999999977, + "890": 105.29999999999974, + "891": 103.54999999999977, + "892": 102.24999999999976, + "893": 105.29999999999973, + "894": 102.24999999999977, + "895": 97.74999999999973, + "896": 105.94999999999972, + "897": 103.84999999999977, + "898": 68.49999999999977, + "899": 97.24999999999977, + "900": -85.44999999999999, + "901": 103.79999999999977, + "902": 101.29999999999978, + "903": 101.94999999999976, + "904": 105.84999999999981, + "905": 105.44999999999982, + "906": 104.09999999999975, + "907": 109.04999999999977, + "908": 105.44999999999975, + "909": 103.19999999999978, + "910": 105.14999999999979, + "911": -85.65, + "912": 101.89999999999976, + "913": 108.25000000000006, + "914": 107.04999999999971, + "915": 107.29999999999977, + "916": 104.89999999999978, + "917": 104.24999999999976, + "918": 104.69999999999975, + "919": 105.4499999999998, + "920": 108.49999999999986, + "921": 108.34999999999987, + "922": 99.99999999999974, + "923": 2.0499999999999616, + "924": 103.64999999999975, + "925": 104.49999999999974, + "926": 103.84999999999977, + "927": 107.3, + "928": 104.59999999999977, + "929": 103.84999999999977, + "930": 10.249999999999922, + "931": 103.24999999999976, + "932": 105.59999999999974, + "933": 105.59999999999977, + "934": 97.09999999999977, + "935": 105.44999999999973, + "936": 104.09999999999972, + "937": 103.69999999999976, + "938": 105.29999999999974, + "939": 25.800000000000054, + "940": 105.59999999999975, + "941": 105.49999999999974, + "942": -74.49999999999999, + "943": 105.54999999999974, + "944": 104.14999999999976, + "945": 103.39999999999976, + "946": 104.79999999999976, + "947": 103.09999999999977, + "948": 54.35, + "949": 87.79999999999978, + "950": 104.19999999999976, + "951": 105.64999999999974, + "952": 104.49999999999974, + "953": 103.44999999999976, + "954": 61.849999999999945, + "955": 104.64999999999974, + "956": 103.54999999999977, + "957": 104.39999999999976, + "958": 102.69999999999978, + "959": 103.19999999999976, + "960": 103.04999999999977, + "961": 104.39999999999976, + "962": 82.99999999999973, + "963": 105.14999999999974, + "964": 104.04999999999974, + "965": 105.29999999999981, + "966": 105.04999999999974, + "967": -91.4, + "968": 105.09999999999974, + "969": 106.94999999999995, + "970": -50.55, + "971": 104.24999999999976, + "972": 104.09999999999981, + "973": -86.0, + "974": -32.00000000000002, + "975": 108.34999999999977, + "976": 106.34999999999984, + "977": -85.35, + "978": -45.9, + "979": 110.29999999999991, + "980": 108.49999999999976, + "981": 105.74999999999972, + "982": 104.59999999999977, + "983": 106.44999999999972, + "984": 105.59999999999974, + "985": -87.0, + "986": 106.69999999999978, + "987": 104.34999999999975, + "988": -53.199999999999974, + "989": 112.05000000000018, + "990": 104.34999999999972, + "991": 102.64999999999976, + "992": -84.9, + "993": -39.350000000000044, + "994": 103.94999999999976, + "995": 102.04999999999977, + "996": 103.64999999999976, + "997": 100.3499999999998, + "998": 84.7999999999998, + "999": 105.09999999999974, + "1000": 106.89999999999974 + } + }, + "config": { + "io_settings": { + "save_agent_actions": true, + "save_step_metadata": false, + "save_pcap_logs": false, + "save_sys_logs": false, + "sys_log_level": "WARNING" + }, + "game": { + "max_episode_length": 128, + "ports": [ + "HTTP", + "POSTGRES_SERVER" + ], + "protocols": [ + "ICMP", + "TCP", + "UDP" + ], + "thresholds": { + "nmne": { + "high": 10, + "medium": 5, + "low": 0 + } + } + }, + "agents": [ + { + "ref": "client_2_green_user", + "team": "GREEN", + "type": "ProbabilisticAgent", + "agent_settings": { + "action_probabilities": { + "0": 0.3, + "1": 0.6, + "2": 0.1 + } + }, + "observation_space": null, + "action_space": { + "action_list": [ + { + "type": "DONOTHING" + }, + { + "type": "NODE_APPLICATION_EXECUTE" + } + ], + "options": { + "nodes": [ + { + "node_name": "client_2", + "applications": [ + { + "application_name": "WebBrowser" + }, + { + "application_name": "DatabaseClient" + } + ] + } + ], + "max_folders_per_node": 1, + "max_files_per_folder": 1, + "max_services_per_node": 1, + "max_applications_per_node": 2 + }, + "action_map": { + "0": { + "action": "DONOTHING", + "options": {} + }, + "1": { + "action": "NODE_APPLICATION_EXECUTE", + "options": { + "node_id": 0, + "application_id": 0 + } + }, + "2": { + "action": "NODE_APPLICATION_EXECUTE", + "options": { + "node_id": 0, + "application_id": 1 + } + } + } + }, + "reward_function": { + "reward_components": [ + { + "type": "WEBPAGE_UNAVAILABLE_PENALTY", + "weight": 0.25, + "options": { + "node_hostname": "client_2" + } + }, + { + "type": "GREEN_ADMIN_DATABASE_UNREACHABLE_PENALTY", + "weight": 0.05, + "options": { + "node_hostname": "client_2" + } + } + ] + } + }, + { + "ref": "client_1_green_user", + "team": "GREEN", + "type": "ProbabilisticAgent", + "agent_settings": { + "action_probabilities": { + "0": 0.3, + "1": 0.6, + "2": 0.1 + } + }, + "observation_space": null, + "action_space": { + "action_list": [ + { + "type": "DONOTHING" + }, + { + "type": "NODE_APPLICATION_EXECUTE" + } + ], + "options": { + "nodes": [ + { + "node_name": "client_1", + "applications": [ + { + "application_name": "WebBrowser" + }, + { + "application_name": "DatabaseClient" + } + ] + } + ], + "max_folders_per_node": 1, + "max_files_per_folder": 1, + "max_services_per_node": 1, + "max_applications_per_node": 2 + }, + "action_map": { + "0": { + "action": "DONOTHING", + "options": {} + }, + "1": { + "action": "NODE_APPLICATION_EXECUTE", + "options": { + "node_id": 0, + "application_id": 0 + } + }, + "2": { + "action": "NODE_APPLICATION_EXECUTE", + "options": { + "node_id": 0, + "application_id": 1 + } + } + } + }, + "reward_function": { + "reward_components": [ + { + "type": "WEBPAGE_UNAVAILABLE_PENALTY", + "weight": 0.25, + "options": { + "node_hostname": "client_1" + } + }, + { + "type": "GREEN_ADMIN_DATABASE_UNREACHABLE_PENALTY", + "weight": 0.05, + "options": { + "node_hostname": "client_1" + } + } + ] + } + }, + { + "ref": "data_manipulation_attacker", + "team": "RED", + "type": "RedDatabaseCorruptingAgent", + "observation_space": null, + "action_space": { + "action_list": [ + { + "type": "DONOTHING" + }, + { + "type": "NODE_APPLICATION_EXECUTE" + } + ], + "options": { + "nodes": [ + { + "node_name": "client_1", + "applications": [ + { + "application_name": "DataManipulationBot" + } + ] + }, + { + "node_name": "client_2", + "applications": [ + { + "application_name": "DataManipulationBot" + } + ] + } + ], + "max_folders_per_node": 1, + "max_files_per_folder": 1, + "max_services_per_node": 1 + } + }, + "reward_function": { + "reward_components": [ + { + "type": "DUMMY" + } + ] + }, + "agent_settings": { + "start_settings": { + "start_step": 25, + "frequency": 20, + "variance": 5 + } + } + }, + { + "ref": "defender", + "team": "BLUE", + "type": "ProxyAgent", + "observation_space": { + "type": "CUSTOM", + "options": { + "components": [ + { + "type": "NODES", + "label": "NODES", + "options": { + "hosts": [ + { + "hostname": "domain_controller" + }, + { + "hostname": "web_server", + "services": [ + { + "service_name": "WebServer" + } + ] + }, + { + "hostname": "database_server", + "folders": [ + { + "folder_name": "database", + "files": [ + { + "file_name": "database.db" + } + ] + } + ] + }, + { + "hostname": "backup_server" + }, + { + "hostname": "security_suite" + }, + { + "hostname": "client_1" + }, + { + "hostname": "client_2" + } + ], + "num_services": 1, + "num_applications": 0, + "num_folders": 1, + "num_files": 1, + "num_nics": 2, + "include_num_access": false, + "include_nmne": true, + "monitored_traffic": { + "icmp": [ + "NONE" + ], + "tcp": [ + "DNS" + ] + }, + "routers": [ + { + "hostname": "router_1" + } + ], + "num_ports": 0, + "ip_list": [ + "192.168.1.10", + "192.168.1.12", + "192.168.1.14", + "192.168.1.16", + "192.168.1.110", + "192.168.10.21", + "192.168.10.22", + "192.168.10.110" + ], + "wildcard_list": [ + "0.0.0.1" + ], + "port_list": [ + 80, + 5432 + ], + "protocol_list": [ + "ICMP", + "TCP", + "UDP" + ], + "num_rules": 10 + } + }, + { + "type": "LINKS", + "label": "LINKS", + "options": { + "link_references": [ + "router_1:eth-1<->switch_1:eth-8", + "router_1:eth-2<->switch_2:eth-8", + "switch_1:eth-1<->domain_controller:eth-1", + "switch_1:eth-2<->web_server:eth-1", + "switch_1:eth-3<->database_server:eth-1", + "switch_1:eth-4<->backup_server:eth-1", + "switch_1:eth-7<->security_suite:eth-1", + "switch_2:eth-1<->client_1:eth-1", + "switch_2:eth-2<->client_2:eth-1", + "switch_2:eth-7<->security_suite:eth-2" + ] + } + }, + { + "type": "NONE", + "label": "ICS", + "options": {} + } + ] + } + }, + "action_space": { + "action_list": [ + { + "type": "DONOTHING" + }, + { + "type": "NODE_SERVICE_SCAN" + }, + { + "type": "NODE_SERVICE_STOP" + }, + { + "type": "NODE_SERVICE_START" + }, + { + "type": "NODE_SERVICE_PAUSE" + }, + { + "type": "NODE_SERVICE_RESUME" + }, + { + "type": "NODE_SERVICE_RESTART" + }, + { + "type": "NODE_SERVICE_DISABLE" + }, + { + "type": "NODE_SERVICE_ENABLE" + }, + { + "type": "NODE_SERVICE_FIX" + }, + { + "type": "NODE_FILE_SCAN" + }, + { + "type": "NODE_FILE_CHECKHASH" + }, + { + "type": "NODE_FILE_DELETE" + }, + { + "type": "NODE_FILE_REPAIR" + }, + { + "type": "NODE_FILE_RESTORE" + }, + { + "type": "NODE_FOLDER_SCAN" + }, + { + "type": "NODE_FOLDER_CHECKHASH" + }, + { + "type": "NODE_FOLDER_REPAIR" + }, + { + "type": "NODE_FOLDER_RESTORE" + }, + { + "type": "NODE_OS_SCAN" + }, + { + "type": "NODE_SHUTDOWN" + }, + { + "type": "NODE_STARTUP" + }, + { + "type": "NODE_RESET" + }, + { + "type": "ROUTER_ACL_ADDRULE" + }, + { + "type": "ROUTER_ACL_REMOVERULE" + }, + { + "type": "HOST_NIC_ENABLE" + }, + { + "type": "HOST_NIC_DISABLE" + } + ], + "action_map": { + "0": { + "action": "DONOTHING", + "options": {} + }, + "1": { + "action": "NODE_SERVICE_SCAN", + "options": { + "node_id": 1, + "service_id": 0 + } + }, + "2": { + "action": "NODE_SERVICE_STOP", + "options": { + "node_id": 1, + "service_id": 0 + } + }, + "3": { + "action": "NODE_SERVICE_START", + "options": { + "node_id": 1, + "service_id": 0 + } + }, + "4": { + "action": "NODE_SERVICE_PAUSE", + "options": { + "node_id": 1, + "service_id": 0 + } + }, + "5": { + "action": "NODE_SERVICE_RESUME", + "options": { + "node_id": 1, + "service_id": 0 + } + }, + "6": { + "action": "NODE_SERVICE_RESTART", + "options": { + "node_id": 1, + "service_id": 0 + } + }, + "7": { + "action": "NODE_SERVICE_DISABLE", + "options": { + "node_id": 1, + "service_id": 0 + } + }, + "8": { + "action": "NODE_SERVICE_ENABLE", + "options": { + "node_id": 1, + "service_id": 0 + } + }, + "9": { + "action": "NODE_FILE_SCAN", + "options": { + "node_id": 2, + "folder_id": 0, + "file_id": 0 + } + }, + "10": { + "action": "NODE_FILE_CHECKHASH", + "options": { + "node_id": 2, + "folder_id": 0, + "file_id": 0 + } + }, + "11": { + "action": "NODE_FILE_DELETE", + "options": { + "node_id": 2, + "folder_id": 0, + "file_id": 0 + } + }, + "12": { + "action": "NODE_FILE_REPAIR", + "options": { + "node_id": 2, + "folder_id": 0, + "file_id": 0 + } + }, + "13": { + "action": "NODE_SERVICE_FIX", + "options": { + "node_id": 2, + "service_id": 0 + } + }, + "14": { + "action": "NODE_FOLDER_SCAN", + "options": { + "node_id": 2, + "folder_id": 0 + } + }, + "15": { + "action": "NODE_FOLDER_CHECKHASH", + "options": { + "node_id": 2, + "folder_id": 0 + } + }, + "16": { + "action": "NODE_FOLDER_REPAIR", + "options": { + "node_id": 2, + "folder_id": 0 + } + }, + "17": { + "action": "NODE_FOLDER_RESTORE", + "options": { + "node_id": 2, + "folder_id": 0 + } + }, + "18": { + "action": "NODE_OS_SCAN", + "options": { + "node_id": 0 + } + }, + "19": { + "action": "NODE_SHUTDOWN", + "options": { + "node_id": 0 + } + }, + "20": { + "action": "NODE_STARTUP", + "options": { + "node_id": 0 + } + }, + "21": { + "action": "NODE_RESET", + "options": { + "node_id": 0 + } + }, + "22": { + "action": "NODE_OS_SCAN", + "options": { + "node_id": 1 + } + }, + "23": { + "action": "NODE_SHUTDOWN", + "options": { + "node_id": 1 + } + }, + "24": { + "action": "NODE_STARTUP", + "options": { + "node_id": 1 + } + }, + "25": { + "action": "NODE_RESET", + "options": { + "node_id": 1 + } + }, + "26": { + "action": "NODE_OS_SCAN", + "options": { + "node_id": 2 + } + }, + "27": { + "action": "NODE_SHUTDOWN", + "options": { + "node_id": 2 + } + }, + "28": { + "action": "NODE_STARTUP", + "options": { + "node_id": 2 + } + }, + "29": { + "action": "NODE_RESET", + "options": { + "node_id": 2 + } + }, + "30": { + "action": "NODE_OS_SCAN", + "options": { + "node_id": 3 + } + }, + "31": { + "action": "NODE_SHUTDOWN", + "options": { + "node_id": 3 + } + }, + "32": { + "action": "NODE_STARTUP", + "options": { + "node_id": 3 + } + }, + "33": { + "action": "NODE_RESET", + "options": { + "node_id": 3 + } + }, + "34": { + "action": "NODE_OS_SCAN", + "options": { + "node_id": 4 + } + }, + "35": { + "action": "NODE_SHUTDOWN", + "options": { + "node_id": 4 + } + }, + "36": { + "action": "NODE_STARTUP", + "options": { + "node_id": 4 + } + }, + "37": { + "action": "NODE_RESET", + "options": { + "node_id": 4 + } + }, + "38": { + "action": "NODE_OS_SCAN", + "options": { + "node_id": 5 + } + }, + "39": { + "action": "NODE_SHUTDOWN", + "options": { + "node_id": 5 + } + }, + "40": { + "action": "NODE_STARTUP", + "options": { + "node_id": 5 + } + }, + "41": { + "action": "NODE_RESET", + "options": { + "node_id": 5 + } + }, + "42": { + "action": "NODE_OS_SCAN", + "options": { + "node_id": 6 + } + }, + "43": { + "action": "NODE_SHUTDOWN", + "options": { + "node_id": 6 + } + }, + "44": { + "action": "NODE_STARTUP", + "options": { + "node_id": 6 + } + }, + "45": { + "action": "NODE_RESET", + "options": { + "node_id": 6 + } + }, + "46": { + "action": "ROUTER_ACL_ADDRULE", + "options": { + "target_router": "router_1", + "position": 1, + "permission": 2, + "source_ip_id": 7, + "dest_ip_id": 1, + "source_port_id": 1, + "dest_port_id": 1, + "protocol_id": 1, + "source_wildcard_id": 0, + "dest_wildcard_id": 0 + } + }, + "47": { + "action": "ROUTER_ACL_ADDRULE", + "options": { + "target_router": "router_1", + "position": 2, + "permission": 2, + "source_ip_id": 8, + "dest_ip_id": 1, + "source_port_id": 1, + "dest_port_id": 1, + "protocol_id": 1, + "source_wildcard_id": 0, + "dest_wildcard_id": 0 + } + }, + "48": { + "action": "ROUTER_ACL_ADDRULE", + "options": { + "target_router": "router_1", + "position": 3, + "permission": 2, + "source_ip_id": 7, + "dest_ip_id": 3, + "source_port_id": 1, + "dest_port_id": 1, + "protocol_id": 3, + "source_wildcard_id": 0, + "dest_wildcard_id": 0 + } + }, + "49": { + "action": "ROUTER_ACL_ADDRULE", + "options": { + "target_router": "router_1", + "position": 4, + "permission": 2, + "source_ip_id": 8, + "dest_ip_id": 3, + "source_port_id": 1, + "dest_port_id": 1, + "protocol_id": 3, + "source_wildcard_id": 0, + "dest_wildcard_id": 0 + } + }, + "50": { + "action": "ROUTER_ACL_ADDRULE", + "options": { + "target_router": "router_1", + "position": 5, + "permission": 2, + "source_ip_id": 7, + "dest_ip_id": 4, + "source_port_id": 1, + "dest_port_id": 1, + "protocol_id": 3, + "source_wildcard_id": 0, + "dest_wildcard_id": 0 + } + }, + "51": { + "action": "ROUTER_ACL_ADDRULE", + "options": { + "target_router": "router_1", + "position": 6, + "permission": 2, + "source_ip_id": 8, + "dest_ip_id": 4, + "source_port_id": 1, + "dest_port_id": 1, + "protocol_id": 3, + "source_wildcard_id": 0, + "dest_wildcard_id": 0 + } + }, + "52": { + "action": "ROUTER_ACL_REMOVERULE", + "options": { + "target_router": "router_1", + "position": 0 + } + }, + "53": { + "action": "ROUTER_ACL_REMOVERULE", + "options": { + "target_router": "router_1", + "position": 1 + } + }, + "54": { + "action": "ROUTER_ACL_REMOVERULE", + "options": { + "target_router": "router_1", + "position": 2 + } + }, + "55": { + "action": "ROUTER_ACL_REMOVERULE", + "options": { + "target_router": "router_1", + "position": 3 + } + }, + "56": { + "action": "ROUTER_ACL_REMOVERULE", + "options": { + "target_router": "router_1", + "position": 4 + } + }, + "57": { + "action": "ROUTER_ACL_REMOVERULE", + "options": { + "target_router": "router_1", + "position": 5 + } + }, + "58": { + "action": "ROUTER_ACL_REMOVERULE", + "options": { + "target_router": "router_1", + "position": 6 + } + }, + "59": { + "action": "ROUTER_ACL_REMOVERULE", + "options": { + "target_router": "router_1", + "position": 7 + } + }, + "60": { + "action": "ROUTER_ACL_REMOVERULE", + "options": { + "target_router": "router_1", + "position": 8 + } + }, + "61": { + "action": "ROUTER_ACL_REMOVERULE", + "options": { + "target_router": "router_1", + "position": 9 + } + }, + "62": { + "action": "HOST_NIC_DISABLE", + "options": { + "node_id": 0, + "nic_id": 0 + } + }, + "63": { + "action": "HOST_NIC_ENABLE", + "options": { + "node_id": 0, + "nic_id": 0 + } + }, + "64": { + "action": "HOST_NIC_DISABLE", + "options": { + "node_id": 1, + "nic_id": 0 + } + }, + "65": { + "action": "HOST_NIC_ENABLE", + "options": { + "node_id": 1, + "nic_id": 0 + } + }, + "66": { + "action": "HOST_NIC_DISABLE", + "options": { + "node_id": 2, + "nic_id": 0 + } + }, + "67": { + "action": "HOST_NIC_ENABLE", + "options": { + "node_id": 2, + "nic_id": 0 + } + }, + "68": { + "action": "HOST_NIC_DISABLE", + "options": { + "node_id": 3, + "nic_id": 0 + } + }, + "69": { + "action": "HOST_NIC_ENABLE", + "options": { + "node_id": 3, + "nic_id": 0 + } + }, + "70": { + "action": "HOST_NIC_DISABLE", + "options": { + "node_id": 4, + "nic_id": 0 + } + }, + "71": { + "action": "HOST_NIC_ENABLE", + "options": { + "node_id": 4, + "nic_id": 0 + } + }, + "72": { + "action": "HOST_NIC_DISABLE", + "options": { + "node_id": 4, + "nic_id": 1 + } + }, + "73": { + "action": "HOST_NIC_ENABLE", + "options": { + "node_id": 4, + "nic_id": 1 + } + }, + "74": { + "action": "HOST_NIC_DISABLE", + "options": { + "node_id": 5, + "nic_id": 0 + } + }, + "75": { + "action": "HOST_NIC_ENABLE", + "options": { + "node_id": 5, + "nic_id": 0 + } + }, + "76": { + "action": "HOST_NIC_DISABLE", + "options": { + "node_id": 6, + "nic_id": 0 + } + }, + "77": { + "action": "HOST_NIC_ENABLE", + "options": { + "node_id": 6, + "nic_id": 0 + } + } + }, + "options": { + "nodes": [ + { + "node_name": "domain_controller" + }, + { + "node_name": "web_server", + "applications": [ + { + "application_name": "DatabaseClient" + } + ], + "services": [ + { + "service_name": "WebServer" + } + ] + }, + { + "node_name": "database_server", + "folders": [ + { + "folder_name": "database", + "files": [ + { + "file_name": "database.db" + } + ] + } + ], + "services": [ + { + "service_name": "DatabaseService" + } + ] + }, + { + "node_name": "backup_server" + }, + { + "node_name": "security_suite" + }, + { + "node_name": "client_1" + }, + { + "node_name": "client_2" + } + ], + "max_folders_per_node": 2, + "max_files_per_folder": 2, + "max_services_per_node": 2, + "max_nics_per_node": 8, + "max_acl_rules": 10, + "ip_list": [ + "192.168.1.10", + "192.168.1.12", + "192.168.1.14", + "192.168.1.16", + "192.168.1.110", + "192.168.10.21", + "192.168.10.22", + "192.168.10.110" + ] + } + }, + "reward_function": { + "reward_components": [ + { + "type": "DATABASE_FILE_INTEGRITY", + "weight": 0.4, + "options": { + "node_hostname": "database_server", + "folder_name": "database", + "file_name": "database.db" + } + }, + { + "type": "SHARED_REWARD", + "weight": 1.0, + "options": { + "agent_name": "client_1_green_user" + } + }, + { + "type": "SHARED_REWARD", + "weight": 1.0, + "options": { + "agent_name": "client_2_green_user" + } + } + ] + }, + "agent_settings": { + "flatten_obs": true, + "action_masking": true + } + } + ], + "simulation": { + "network": { + "nmne_config": { + "capture_nmne": true, + "nmne_capture_keywords": [ + "DELETE" + ] + }, + "nodes": [ + { + "hostname": "router_1", + "type": "router", + "num_ports": 5, + "ports": { + "1": { + "ip_address": "192.168.1.1", + "subnet_mask": "255.255.255.0" + }, + "2": { + "ip_address": "192.168.10.1", + "subnet_mask": "255.255.255.0" + } + }, + "acl": { + "18": { + "action": "PERMIT", + "src_port": "POSTGRES_SERVER", + "dst_port": "POSTGRES_SERVER" + }, + "19": { + "action": "PERMIT", + "src_port": "DNS", + "dst_port": "DNS" + }, + "20": { + "action": "PERMIT", + "src_port": "FTP", + "dst_port": "FTP" + }, + "21": { + "action": "PERMIT", + "src_port": "HTTP", + "dst_port": "HTTP" + }, + "22": { + "action": "PERMIT", + "src_port": "ARP", + "dst_port": "ARP" + }, + "23": { + "action": "PERMIT", + "protocol": "ICMP" + } + } + }, + { + "hostname": "switch_1", + "type": "switch", + "num_ports": 8 + }, + { + "hostname": "switch_2", + "type": "switch", + "num_ports": 8 + }, + { + "hostname": "domain_controller", + "type": "server", + "ip_address": "192.168.1.10", + "subnet_mask": "255.255.255.0", + "default_gateway": "192.168.1.1", + "services": [ + { + "type": "DNSServer", + "options": { + "domain_mapping": { + "arcd.com": "192.168.1.12" + } + } + } + ] + }, + { + "hostname": "web_server", + "type": "server", + "ip_address": "192.168.1.12", + "subnet_mask": "255.255.255.0", + "default_gateway": "192.168.1.1", + "dns_server": "192.168.1.10", + "services": [ + { + "type": "WebServer" + } + ], + "applications": [ + { + "type": "DatabaseClient", + "options": { + "db_server_ip": "192.168.1.14" + } + } + ] + }, + { + "hostname": "database_server", + "type": "server", + "ip_address": "192.168.1.14", + "subnet_mask": "255.255.255.0", + "default_gateway": "192.168.1.1", + "dns_server": "192.168.1.10", + "services": [ + { + "type": "DatabaseService", + "options": { + "backup_server_ip": "192.168.1.16" + } + }, + { + "type": "FTPClient" + } + ] + }, + { + "hostname": "backup_server", + "type": "server", + "ip_address": "192.168.1.16", + "subnet_mask": "255.255.255.0", + "default_gateway": "192.168.1.1", + "dns_server": "192.168.1.10", + "services": [ + { + "type": "FTPServer" + } + ] + }, + { + "hostname": "security_suite", + "type": "server", + "ip_address": "192.168.1.110", + "subnet_mask": "255.255.255.0", + "default_gateway": "192.168.1.1", + "dns_server": "192.168.1.10", + "network_interfaces": { + "2": { + "ip_address": "192.168.10.110", + "subnet_mask": "255.255.255.0" + } + } + }, + { + "hostname": "client_1", + "type": "computer", + "ip_address": "192.168.10.21", + "subnet_mask": "255.255.255.0", + "default_gateway": "192.168.10.1", + "dns_server": "192.168.1.10", + "applications": [ + { + "type": "DataManipulationBot", + "options": { + "port_scan_p_of_success": 0.8, + "data_manipulation_p_of_success": 0.8, + "payload": "DELETE", + "server_ip": "192.168.1.14" + } + }, + { + "type": "WebBrowser", + "options": { + "target_url": "http://arcd.com/users/" + } + }, + { + "type": "DatabaseClient", + "options": { + "db_server_ip": "192.168.1.14" + } + } + ], + "services": [ + { + "type": "DNSClient" + } + ] + }, + { + "hostname": "client_2", + "type": "computer", + "ip_address": "192.168.10.22", + "subnet_mask": "255.255.255.0", + "default_gateway": "192.168.10.1", + "dns_server": "192.168.1.10", + "applications": [ + { + "type": "WebBrowser", + "options": { + "target_url": "http://arcd.com/users/" + } + }, + { + "type": "DataManipulationBot", + "options": { + "port_scan_p_of_success": 0.8, + "data_manipulation_p_of_success": 0.8, + "payload": "DELETE", + "server_ip": "192.168.1.14" + } + }, + { + "type": "DatabaseClient", + "options": { + "db_server_ip": "192.168.1.14" + } + } + ], + "services": [ + { + "type": "DNSClient" + } + ] + } + ], + "links": [ + { + "endpoint_a_hostname": "router_1", + "endpoint_a_port": 1, + "endpoint_b_hostname": "switch_1", + "endpoint_b_port": 8 + }, + { + "endpoint_a_hostname": "router_1", + "endpoint_a_port": 2, + "endpoint_b_hostname": "switch_2", + "endpoint_b_port": 8 + }, + { + "endpoint_a_hostname": "switch_1", + "endpoint_a_port": 1, + "endpoint_b_hostname": "domain_controller", + "endpoint_b_port": 1 + }, + { + "endpoint_a_hostname": "switch_1", + "endpoint_a_port": 2, + "endpoint_b_hostname": "web_server", + "endpoint_b_port": 1 + }, + { + "endpoint_a_hostname": "switch_1", + "endpoint_a_port": 3, + "endpoint_b_hostname": "database_server", + "endpoint_b_port": 1 + }, + { + "endpoint_a_hostname": "switch_1", + "endpoint_a_port": 4, + "endpoint_b_hostname": "backup_server", + "endpoint_b_port": 1 + }, + { + "endpoint_a_hostname": "switch_1", + "endpoint_a_port": 7, + "endpoint_b_hostname": "security_suite", + "endpoint_b_port": 1 + }, + { + "endpoint_a_hostname": "switch_2", + "endpoint_a_port": 1, + "endpoint_b_hostname": "client_1", + "endpoint_b_port": 1 + }, + { + "endpoint_a_hostname": "switch_2", + "endpoint_a_port": 2, + "endpoint_b_hostname": "client_2", + "endpoint_b_port": 1 + }, + { + "endpoint_a_hostname": "switch_2", + "endpoint_a_port": 7, + "endpoint_b_hostname": "security_suite", + "endpoint_b_port": 2 + } + ] + } + } + } +} \ No newline at end of file From a5d84c12544e23eaa8766b92d16b78b2ce6675aa Mon Sep 17 00:00:00 2001 From: Marek Wolan Date: Mon, 2 Sep 2024 11:40:39 +0100 Subject: [PATCH 04/58] Reduce evaluation on Ray notebooks and fix precommit issues [skip ci] --- benchmark/results/v3/v3.3.0/session_metadata/1.json | 2 +- benchmark/results/v3/v3.3.0/session_metadata/2.json | 2 +- benchmark/results/v3/v3.3.0/session_metadata/3.json | 2 +- benchmark/results/v3/v3.3.0/session_metadata/4.json | 2 +- benchmark/results/v3/v3.3.0/session_metadata/5.json | 2 +- benchmark/results/v3/v3.3.0/v3.3.0_benchmark_metadata.json | 2 +- src/primaite/notebooks/Training-an-RLLIB-MARL-System.ipynb | 1 + src/primaite/notebooks/Training-an-RLLib-Agent.ipynb | 1 + 8 files changed, 8 insertions(+), 6 deletions(-) diff --git a/benchmark/results/v3/v3.3.0/session_metadata/1.json b/benchmark/results/v3/v3.3.0/session_metadata/1.json index 836363b8..c2a234ec 100644 --- a/benchmark/results/v3/v3.3.0/session_metadata/1.json +++ b/benchmark/results/v3/v3.3.0/session_metadata/1.json @@ -1006,4 +1006,4 @@ "999": 85.40000000000005, "1000": 38.94999999999991 } -} \ No newline at end of file +} diff --git a/benchmark/results/v3/v3.3.0/session_metadata/2.json b/benchmark/results/v3/v3.3.0/session_metadata/2.json index 62f351cb..bc5243d2 100644 --- a/benchmark/results/v3/v3.3.0/session_metadata/2.json +++ b/benchmark/results/v3/v3.3.0/session_metadata/2.json @@ -1006,4 +1006,4 @@ "999": -70.9, "1000": 103.34999999999977 } -} \ No newline at end of file +} diff --git a/benchmark/results/v3/v3.3.0/session_metadata/3.json b/benchmark/results/v3/v3.3.0/session_metadata/3.json index 7b4fd0a2..fb81d2b1 100644 --- a/benchmark/results/v3/v3.3.0/session_metadata/3.json +++ b/benchmark/results/v3/v3.3.0/session_metadata/3.json @@ -1006,4 +1006,4 @@ "999": 101.74999999999973, "1000": -39.899999999999984 } -} \ No newline at end of file +} diff --git a/benchmark/results/v3/v3.3.0/session_metadata/4.json b/benchmark/results/v3/v3.3.0/session_metadata/4.json index cd4acfc0..49d8728b 100644 --- a/benchmark/results/v3/v3.3.0/session_metadata/4.json +++ b/benchmark/results/v3/v3.3.0/session_metadata/4.json @@ -1006,4 +1006,4 @@ "999": 103.14999999999976, "1000": 107.24999999999979 } -} \ No newline at end of file +} diff --git a/benchmark/results/v3/v3.3.0/session_metadata/5.json b/benchmark/results/v3/v3.3.0/session_metadata/5.json index d6fc6124..018d05a9 100644 --- a/benchmark/results/v3/v3.3.0/session_metadata/5.json +++ b/benchmark/results/v3/v3.3.0/session_metadata/5.json @@ -1006,4 +1006,4 @@ "999": 105.09999999999974, "1000": 106.89999999999974 } -} \ No newline at end of file +} diff --git a/benchmark/results/v3/v3.3.0/v3.3.0_benchmark_metadata.json b/benchmark/results/v3/v3.3.0/v3.3.0_benchmark_metadata.json index b87c59c4..5aa47d95 100644 --- a/benchmark/results/v3/v3.3.0/v3.3.0_benchmark_metadata.json +++ b/benchmark/results/v3/v3.3.0/v3.3.0_benchmark_metadata.json @@ -7442,4 +7442,4 @@ } } } -} \ No newline at end of file +} diff --git a/src/primaite/notebooks/Training-an-RLLIB-MARL-System.ipynb b/src/primaite/notebooks/Training-an-RLLIB-MARL-System.ipynb index 49801a2c..19e95a95 100644 --- a/src/primaite/notebooks/Training-an-RLLIB-MARL-System.ipynb +++ b/src/primaite/notebooks/Training-an-RLLIB-MARL-System.ipynb @@ -62,6 +62,7 @@ " .environment(env=PrimaiteRayMARLEnv, env_config=cfg)\n", " .env_runners(num_env_runners=0)\n", " .training(train_batch_size=128)\n", + " .evaluation(evaluation_duration=1)\n", " )\n" ] }, diff --git a/src/primaite/notebooks/Training-an-RLLib-Agent.ipynb b/src/primaite/notebooks/Training-an-RLLib-Agent.ipynb index 2c35048d..dbe8871c 100644 --- a/src/primaite/notebooks/Training-an-RLLib-Agent.ipynb +++ b/src/primaite/notebooks/Training-an-RLLib-Agent.ipynb @@ -55,6 +55,7 @@ " .environment(env=PrimaiteRayEnv, env_config=env_config)\n", " .env_runners(num_env_runners=0)\n", " .training(train_batch_size=128)\n", + " .evaluation(evaluation_duration=1)\n", ")\n" ] }, From d282575467257bd3fe8095fe7dcd2f2b7cd5f3a6 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Wed, 4 Sep 2024 12:07:32 +0100 Subject: [PATCH 05/58] #2837 - Updating the User Guide as per review comments. [skip ci] --- .../nodes/common/common_node_attributes.rst | 9 +++----- docs/source/primaite-dependencies.rst | 10 ++++---- .../network/nodes/wireless_router.rst | 2 +- .../system/applications/c2_suite.rst | 20 ++++++++-------- .../system/common/common_configuration.rst | 8 +++---- .../system/services/terminal.rst | 23 +++++++++++++------ .../Command-&-Control-E2E-Demonstration.ipynb | 10 ++++---- 7 files changed, 43 insertions(+), 39 deletions(-) diff --git a/docs/source/configuration/simulation/nodes/common/common_node_attributes.rst b/docs/source/configuration/simulation/nodes/common/common_node_attributes.rst index 7cf11eb4..6a95911f 100644 --- a/docs/source/configuration/simulation/nodes/common/common_node_attributes.rst +++ b/docs/source/configuration/simulation/nodes/common/common_node_attributes.rst @@ -58,7 +58,7 @@ The number of time steps required to occur in order for the node to cycle from ` --------- The list of pre-existing users that are additional to the default admin user (``username=admin``, ``password=admin``). -Additional users are configured as an array nd must contain a ``username``, ``password``, and can contain an optional +Additional users are configured as an array and must contain a ``username``, ``password``, and can contain an optional boolean ``is_admin``. Example of adding two additional users to a node: @@ -68,11 +68,8 @@ Example of adding two additional users to a node: simulation: network: nodes: - - hostname: client_1 - type: computer - ip_address: 192.168.10.11 - subnet_mask: 255.255.255.0 - default_gateway: 192.168.10.1 + - hostname: [hostname] + type: [Node Type] users: - username: jane.doe password: '1234' diff --git a/docs/source/primaite-dependencies.rst b/docs/source/primaite-dependencies.rst index 04987054..8367ee61 100644 --- a/docs/source/primaite-dependencies.rst +++ b/docs/source/primaite-dependencies.rst @@ -7,7 +7,7 @@ +===================+=========+====================================+=======================================================================================================+====================================================================+ | gymnasium | 0.28.1 | MIT License | A standard API for reinforcement learning and a diverse set of reference environments (formerly Gym). | https://farama.org | +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ -| ipywidgets | 8.1.3 | BSD License | Jupyter interactive widgets | http://jupyter.org | +| ipywidgets | 8.1.5 | BSD License | Jupyter interactive widgets | http://jupyter.org | +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ | jupyterlab | 3.6.1 | BSD License | JupyterLab computational environment | https://jupyter.org | +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ @@ -23,7 +23,7 @@ +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ | plotly | 5.15.0 | MIT License | An open-source, interactive data visualization library for Python | https://plotly.com/python/ | +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ -| polars | 0.18.4 | MIT License | Blazingly fast DataFrame library | https://www.pola.rs/ | +| polars | 0.20.30 | MIT License | Blazingly fast DataFrame library | https://www.pola.rs/ | +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ | prettytable | 3.8.0 | BSD License (BSD (3 clause)) | A simple Python library for easily displaying tabular data in a visually appealing ASCII table format | https://github.com/jazzband/prettytable | +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ @@ -31,7 +31,7 @@ +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ | PyYAML | 6.0 | MIT License | YAML parser and emitter for Python | https://pyyaml.org/ | +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ -| ray | 2.23.0 | Apache 2.0 | Ray provides a simple, universal API for building distributed applications. | https://github.com/ray-project/ray | +| ray | 2.32.0 | Apache 2.0 | Ray provides a simple, universal API for building distributed applications. | https://github.com/ray-project/ray | +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ | stable-baselines3 | 2.1.0 | MIT | Pytorch version of Stable Baselines, implementations of reinforcement learning algorithms. | https://github.com/DLR-RM/stable-baselines3 | +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ @@ -39,7 +39,7 @@ +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ | typer | 0.9.0 | MIT License | Typer, build great CLIs. Easy to code. Based on Python type hints. | https://github.com/tiangolo/typer | +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ -| Deepdiff | 7.0.1 | MIT License | Deep difference of dictionaries, iterables, strings, and any other object objects. | https://github.com/seperman/deepdiff | +| Deepdiff | 8.0.1 | MIT License | Deep difference of dictionaries, iterables, strings, and any other object objects. | https://github.com/seperman/deepdiff | +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ -| sb3_contrib | 2.3.0 | MIT License | Contrib package for Stable-Baselines3 - Experimental reinforcement learning (RL) code (Action Masking)| https://github.com/Stable-Baselines-Team/stable-baselines3-contrib | +| sb3_contrib | 2.1.0 | MIT License | Contrib package for Stable-Baselines3 - Experimental reinforcement learning (RL) code (Action Masking)| https://github.com/Stable-Baselines-Team/stable-baselines3-contrib | +-------------------+---------+------------------------------------+-------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+ diff --git a/docs/source/simulation_components/network/nodes/wireless_router.rst b/docs/source/simulation_components/network/nodes/wireless_router.rst index c78c8419..80f0e124 100644 --- a/docs/source/simulation_components/network/nodes/wireless_router.rst +++ b/docs/source/simulation_components/network/nodes/wireless_router.rst @@ -3,7 +3,7 @@ © Crown-owned copyright 2024, Defence Science and Technology Laboratory UK ###### -Router +Wireless Router ###### The ``WirelessRouter`` class extends the functionality of the standard ``Router`` class within PrimAITE, diff --git a/docs/source/simulation_components/system/applications/c2_suite.rst b/docs/source/simulation_components/system/applications/c2_suite.rst index 034158d7..5fd1021e 100644 --- a/docs/source/simulation_components/system/applications/c2_suite.rst +++ b/docs/source/simulation_components/system/applications/c2_suite.rst @@ -7,8 +7,8 @@ Command and Control Application Suite ##################################### -Comprising of two applications, the Command and Control (C2) suites intends to introduce -malicious network architecture and begin to further the realism of red agents within primAITE. +Comprising of two applications, the Command and Control (C2) suite intends to introduce +malicious network architecture and further the realism of red agents within PrimAITE. Overview: ========= @@ -24,7 +24,7 @@ The C2 Server application is intended to represent the malicious infrastructure The C2 Server is configured to listen and await ``keep alive`` traffic from a C2 beacon. Once received the C2 Server is able to send and receive C2 commands. -Currently, the C2 Server offers three commands: +Currently, the C2 Server offers four commands: +---------------------+---------------------------------------------------------------------------+ |C2 Command | Meaning | @@ -40,12 +40,12 @@ Currently, the C2 Server offers three commands: It's important to note that in order to keep PrimAITE realistic from a cyber perspective, -The C2 Server application should never be visible or actionable upon directly by the blue agent. +the C2 Server application should never be visible or actionable upon directly by the blue agent. This is because in the real world, C2 servers are hosted on ephemeral public domains that would not be accessible by private network blue agent. Therefore granting blue agent(s) the ability to perform counter measures directly against the application would be unrealistic. -It is more accurate to see the host that the C2 Server is installed on as being able to route to the C2 Server (Internet Access). +It is more accurate to see the host that the C2 Beacon is installed on as being able to route to the C2 Server (Internet Access). ``C2 Beacon`` """"""""""""" @@ -54,19 +54,19 @@ The C2 Beacon application is intended to represent malware that is used to estab A C2 Beacon will need to be first configured with the C2 Server IP Address which can be done via the ``configure`` method. -Once installed and configured; the c2 beacon can establish connection with the C2 Server via executing the application. +Once installed and configured; the C2 beacon can establish connection with the C2 Server via executing the application. This will send an initial ``keep alive`` to the given C2 Server (The C2 Server IPv4Address must be given upon C2 Beacon configuration). -Which is then resolved and responded by another ``Keep Alive`` by the c2 server back to the C2 beacon to confirm connection. +Which is then resolved and responded by another ``Keep Alive`` by the C2 server back to the C2 beacon to confirm connection. -The C2 Beacon will send out periodic keep alive based on it's configuration parameters to configure it's active connection with the c2 server. +The C2 Beacon will send out periodic keep alive based on it's configuration parameters to configure it's active connection with the C2 server. It's recommended that a C2 Beacon is installed and configured mid episode by a Red Agent for a more cyber realistic simulation. Usage ===== -As mentioned, the C2 Suite is intended to grant Red Agents further flexibility whilst also expanding a blue agent's observation_space. +As mentioned, the C2 Suite is intended to grant Red Agents further flexibility whilst also expanding a blue agent's observation space. Adding to this, the following behaviour of the C2 beacon can be configured by users for increased domain randomisation: @@ -301,7 +301,7 @@ What port that the C2 Beacon will use to communicate to the C2 Server with. Currently only ``FTP``, ``HTTP`` and ``DNS`` are valid masquerade port options. -It's worth noting that this may be useful option to bypass ACL rules. +It's worth noting that this may be a useful option to bypass ACL rules. This must be a string i.e ``DNS``. Defaults to ``HTTP``. diff --git a/docs/source/simulation_components/system/common/common_configuration.rst b/docs/source/simulation_components/system/common/common_configuration.rst index 420166dd..49e3188b 100644 --- a/docs/source/simulation_components/system/common/common_configuration.rst +++ b/docs/source/simulation_components/system/common/common_configuration.rst @@ -30,7 +30,7 @@ The number of timesteps the |SOFTWARE_NAME| will remain in a ``FIXING`` state be ``listen_on_ports`` """"""""""""""""""" -The set of ports to listen on. This is in addition to the main port the software is designated. This set can either be +The set of ports to listen on. This is in addition to the main port the software is designated. This can either be the string name of ports or the port integers Example: @@ -46,14 +46,12 @@ Example: subnet_mask: 255.255.255.0 default_gateway: 192.168.10.1 services: - - type: DatabaseService + - type: [Service Type] options: - backup_server_ip: 10.10.1.12 listen_on_ports: - 631 applications: - - type: WebBrowser + - type: [Application Type] options: - target_url: http://sometech.ai listen_on_ports: - SMB diff --git a/docs/source/simulation_components/system/services/terminal.rst b/docs/source/simulation_components/system/services/terminal.rst index f982145d..9db2ac7a 100644 --- a/docs/source/simulation_components/system/services/terminal.rst +++ b/docs/source/simulation_components/system/services/terminal.rst @@ -23,13 +23,6 @@ Key capabilities - Simulates common Terminal processes/commands. - Leverages the Service base class for install/uninstall, status tracking etc. -Usage -""""" - - - Pre-Installs on any `Node` (component with the exception of `Switches`). - - Terminal Clients connect, execute commands and disconnect from remote nodes. - - Ensures that users are logged in to the component before executing any commands. - - Service runs on SSH port 22 by default. Implementation """""""""""""" @@ -40,6 +33,14 @@ Implementation - A detailed guide on the implementation and functionality of the Terminal class can be found in the "Terminal-Processing" jupyter notebook. +Usage +""""" + + - Pre-Installs on all ``Node`` (with the exception of ``Switch``). + - Terminal Clients connect, execute commands and disconnect from remote nodes. + - Ensures that users are logged in to the component before executing any commands. + - Service runs on SSH port 22 by default. + Usage ===== @@ -172,3 +173,11 @@ Disconnect from Remote Node term_a_term_b_remote_connection: RemoteTerminalConnection = terminal_a.login(username="admin", password="Admin123!", ip_address="192.168.0.11") term_a_term_b_remote_connection.disconnect() + +Configuration +============= + +.. include:: ../common/common_configuration.rst + +.. |SOFTWARE_NAME| replace:: Terminal +.. |SOFTWARE_NAME_BACKTICK| replace:: ``Terminal`` \ No newline at end of file diff --git a/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb b/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb index b6b13f28..4e36db17 100644 --- a/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb +++ b/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb @@ -188,7 +188,7 @@ "source": [ "## **Notebook Setup** | Network Prerequisites\n", "\n", - "Before the Red Agent is able to perform any C2 specific actions, the C2 Server needs to be installed and run before the Red Agent can perform any C2 specific action.\n", + "Before the Red Agent is able to perform any C2 specific actions, the C2 Server needs to be installed and run.\n", "This is because in higher fidelity environments (and the real-world) a C2 server would not be accessible by a private network blue agent and the C2 Server would already be in place before the an adversary (Red Agent) starts.\n", "\n", "The cells below install and run the C2 Server on client_1 directly via the simulation API." @@ -1164,7 +1164,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we are unable to do so as the C2 Server is unable has lost it's connection to the C2 Beacon:" + "Now we are unable to do so as the C2 Server has lost it's connection to the C2 Beacon:" ] }, { @@ -1276,7 +1276,7 @@ "source": [ "#### Blocking C2 Traffic via ACL.\n", "\n", - "Another potential option a blue agent could take is by placing an ACL rule which blocks traffic between the C2 Server can C2 Beacon.\n", + "Another potential option a blue agent could take is by placing an ACL rule which blocks traffic between the C2 Server and C2 Beacon.\n", "\n", "It's worth noting the potential effectiveness of this approach is connected to the current green agent traffic on the network. For example, if there are multiple green agents using the C2 Beacon's host node then blocking all traffic would lead to a negative reward. The same applies for the previous example." ] @@ -1450,7 +1450,7 @@ "source": [ "### **Command and Control** | Configurability | C2 Server IP Address\n", "\n", - "As with a majority of client and server based application configuration in primaite, the remote IP of server must be supplied.\n", + "As with a majority of client and server based application configuration in primaite, the remote IP of a server must be supplied.\n", "\n", "In the case of the C2 Beacon, the C2 Server's IP address must be supplied before the C2 beacon will be able to perform any other actions (including ``APPLICATION EXECUTE``).\n", "\n", @@ -1727,7 +1727,7 @@ "\n", "\n", "\n", - "The next set of code cells will demonstrate the impact this option from a blue agent perspective." + "The next set of code cells will demonstrate the impact of this option from a blue agent perspective." ] }, { From b3080100fd9883edffa6141c986109cb4fe8441c Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Wed, 4 Sep 2024 12:08:12 +0100 Subject: [PATCH 06/58] #2837 - Updating the User Guide as per review comments. [skip ci] --- docs/source/simulation_components/system/services/terminal.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/simulation_components/system/services/terminal.rst b/docs/source/simulation_components/system/services/terminal.rst index 9db2ac7a..041169b1 100644 --- a/docs/source/simulation_components/system/services/terminal.rst +++ b/docs/source/simulation_components/system/services/terminal.rst @@ -180,4 +180,4 @@ Configuration .. include:: ../common/common_configuration.rst .. |SOFTWARE_NAME| replace:: Terminal -.. |SOFTWARE_NAME_BACKTICK| replace:: ``Terminal`` \ No newline at end of file +.. |SOFTWARE_NAME_BACKTICK| replace:: ``Terminal`` From f0cc821ff85b2f2cfbeef76cf416f7b73a8e0f84 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Wed, 4 Sep 2024 14:12:10 +0100 Subject: [PATCH 07/58] #2837 - Updates to some more documentation files to cover new features [skip ci] --- CHANGELOG.md | 3 ++- docs/source/configuration/agents.rst | 5 +++++ docs/source/configuration/game.rst | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d08974c..3c4b949a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,8 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [3.3.0] - 2024-08-30 + ### Added - Random Number Generator Seeding by specifying a random number seed in the config file. - Implemented Terminal service class, providing a generic terminal simulation. diff --git a/docs/source/configuration/agents.rst b/docs/source/configuration/agents.rst index 2fe35ac7..39a71fb5 100644 --- a/docs/source/configuration/agents.rst +++ b/docs/source/configuration/agents.rst @@ -172,3 +172,8 @@ The amount of timesteps that the frequency can randomly change. --------------- If ``True``, gymnasium flattening will be performed on the observation space before sending to the agent. Set this to ``True`` if your agent does not support nested observation spaces. + +``Agent History`` +----------------- + +Agents will record their action log for each step. This is a summary of what the agent did, along with response information from requests within the simulation. \ No newline at end of file diff --git a/docs/source/configuration/game.rst b/docs/source/configuration/game.rst index 02ee8110..1d08b8e4 100644 --- a/docs/source/configuration/game.rst +++ b/docs/source/configuration/game.rst @@ -28,6 +28,7 @@ This section defines high-level settings that apply across the game, currently i high: 10 medium: 5 low: 0 + seed: 1 ``max_episode_length`` ---------------------- @@ -54,3 +55,8 @@ See :ref:`List of IPProtocols ` for a list of protocols. -------------- These are used to determine the thresholds of high, medium and low categories for counted observation occurrences. + +``seed`` +-------- + +Used to configure the random seeds used within PrimAITE, ensuring determinism within episode/session runs. If empty or set to -1, no seed is set. \ No newline at end of file From 16e0df5cfc9422548b9c292164cf851f0c19208d Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Wed, 4 Sep 2024 14:12:39 +0100 Subject: [PATCH 08/58] #2837 - Updates to some more documentation files to cover new features [skip ci] --- docs/source/configuration/agents.rst | 2 +- docs/source/configuration/game.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/configuration/agents.rst b/docs/source/configuration/agents.rst index 39a71fb5..dece94c5 100644 --- a/docs/source/configuration/agents.rst +++ b/docs/source/configuration/agents.rst @@ -176,4 +176,4 @@ If ``True``, gymnasium flattening will be performed on the observation space bef ``Agent History`` ----------------- -Agents will record their action log for each step. This is a summary of what the agent did, along with response information from requests within the simulation. \ No newline at end of file +Agents will record their action log for each step. This is a summary of what the agent did, along with response information from requests within the simulation. diff --git a/docs/source/configuration/game.rst b/docs/source/configuration/game.rst index 1d08b8e4..2048708c 100644 --- a/docs/source/configuration/game.rst +++ b/docs/source/configuration/game.rst @@ -59,4 +59,4 @@ These are used to determine the thresholds of high, medium and low categories fo ``seed`` -------- -Used to configure the random seeds used within PrimAITE, ensuring determinism within episode/session runs. If empty or set to -1, no seed is set. \ No newline at end of file +Used to configure the random seeds used within PrimAITE, ensuring determinism within episode/session runs. If empty or set to -1, no seed is set. From ba737c57a8fac390dcf00c46feabaea2463d0441 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Wed, 4 Sep 2024 20:46:35 +0100 Subject: [PATCH 09/58] #2837 - Minor structure reshuffle to address confusion around the listen_on_ports variable [skip ci] --- .../system/applications/c2_suite.rst | 9 ++-- .../applications/data_manipulation_bot.rst | 4 -- .../system/applications/database_client.rst | 5 --- .../system/applications/dos_bot.rst | 3 ++ .../system/applications/nmap.rst | 8 ++-- .../system/applications/ransomware_script.rst | 4 -- .../system/applications/web_browser.rst | 4 -- .../system/common/common_configuration.rst | 42 +++++++++---------- .../system/services/database_service.rst | 10 ++--- .../system/services/dns_client.rst | 4 -- .../system/services/dns_server.rst | 8 +--- .../system/services/ftp_client.rst | 5 --- .../system/services/ftp_server.rst | 5 --- .../system/services/ntp_client.rst | 5 --- .../system/services/ntp_server.rst | 8 ---- .../system/services/terminal.rst | 8 ---- .../system/services/web_server.rst | 8 ++-- .../simulation_components/system/software.rst | 9 ++++ 18 files changed, 49 insertions(+), 100 deletions(-) diff --git a/docs/source/simulation_components/system/applications/c2_suite.rst b/docs/source/simulation_components/system/applications/c2_suite.rst index 5fd1021e..82519ab6 100644 --- a/docs/source/simulation_components/system/applications/c2_suite.rst +++ b/docs/source/simulation_components/system/applications/c2_suite.rst @@ -254,6 +254,9 @@ Via Configuration C2 Beacon Configuration ======================= +``Common Configuration`` +"""""""""""""""""""""""" + .. include:: ../common/common_configuration.rst .. |SOFTWARE_NAME| replace:: C2Beacon @@ -311,9 +314,3 @@ C2 Server Configuration ======================= *The C2 Server does not currently offer any unique configuration options and will configure itself to match the C2 beacon's network behaviour.* - - -.. include:: ../common/common_configuration.rst - -.. |SOFTWARE_NAME| replace:: C2Server -.. |SOFTWARE_NAME_BACKTICK| replace:: ``C2Server`` diff --git a/docs/source/simulation_components/system/applications/data_manipulation_bot.rst b/docs/source/simulation_components/system/applications/data_manipulation_bot.rst index 8bcbb265..dd8b7114 100644 --- a/docs/source/simulation_components/system/applications/data_manipulation_bot.rst +++ b/docs/source/simulation_components/system/applications/data_manipulation_bot.rst @@ -158,10 +158,6 @@ If not using the data manipulation bot manually, it needs to be used with a data Configuration ============= -.. include:: ../common/common_configuration.rst - -.. |SOFTWARE_NAME| replace:: DataManipulationBot -.. |SOFTWARE_NAME_BACKTICK| replace:: ``DataManipulationBot`` ``server_ip`` """"""""""""" diff --git a/docs/source/simulation_components/system/applications/database_client.rst b/docs/source/simulation_components/system/applications/database_client.rst index d51465b2..45252e67 100644 --- a/docs/source/simulation_components/system/applications/database_client.rst +++ b/docs/source/simulation_components/system/applications/database_client.rst @@ -90,11 +90,6 @@ Via Configuration Configuration ============= -.. include:: ../common/common_configuration.rst - -.. |SOFTWARE_NAME| replace:: DatabaseClient -.. |SOFTWARE_NAME_BACKTICK| replace:: ``DatabaseClient`` - ``db_server_ip`` """""""""""""""" diff --git a/docs/source/simulation_components/system/applications/dos_bot.rst b/docs/source/simulation_components/system/applications/dos_bot.rst index 9925dc93..5be5383e 100644 --- a/docs/source/simulation_components/system/applications/dos_bot.rst +++ b/docs/source/simulation_components/system/applications/dos_bot.rst @@ -98,6 +98,9 @@ Via Configuration Configuration ============= +``Common Configuration`` +"""""""""""""""""""""""" + .. include:: ../common/common_configuration.rst .. |SOFTWARE_NAME| replace:: DoSBot diff --git a/docs/source/simulation_components/system/applications/nmap.rst b/docs/source/simulation_components/system/applications/nmap.rst index 1e7f5ea4..dbb8a022 100644 --- a/docs/source/simulation_components/system/applications/nmap.rst +++ b/docs/source/simulation_components/system/applications/nmap.rst @@ -346,10 +346,8 @@ Perform a full box scan on all ports, over both TCP and UDP, on a whole subnet: | 192.168.1.13 | 219 | ARP | UDP | +--------------+------+-----------------+----------+ -Configuration -============= -.. include:: ../common/common_configuration.rst +``Common Attributes`` +""""""""""""""""""""" -.. |SOFTWARE_NAME| replace:: NMAP -.. |SOFTWARE_NAME_BACKTICK| replace:: ``NMAP`` +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/applications/ransomware_script.rst b/docs/source/simulation_components/system/applications/ransomware_script.rst index a2a853e9..a5ee990c 100644 --- a/docs/source/simulation_components/system/applications/ransomware_script.rst +++ b/docs/source/simulation_components/system/applications/ransomware_script.rst @@ -72,10 +72,6 @@ Configuration The RansomwareScript inherits configuration options such as ``fix_duration`` from its parent class. However, for the ``RansomwareScript`` the most relevant option is ``server_ip``. -.. include:: ../common/common_configuration.rst - -.. |SOFTWARE_NAME| replace:: RansomwareScript -.. |SOFTWARE_NAME_BACKTICK| replace:: ``RansomwareScript`` ``server_ip`` """"""""""""" diff --git a/docs/source/simulation_components/system/applications/web_browser.rst b/docs/source/simulation_components/system/applications/web_browser.rst index dbe2da28..52cfce28 100644 --- a/docs/source/simulation_components/system/applications/web_browser.rst +++ b/docs/source/simulation_components/system/applications/web_browser.rst @@ -92,10 +92,6 @@ Via Configuration Configuration ============= -.. include:: ../common/common_configuration.rst - -.. |SOFTWARE_NAME| replace:: WebBrowser -.. |SOFTWARE_NAME_BACKTICK| replace:: ``WebBrowser`` ``target_url`` """""""""""""" diff --git a/docs/source/simulation_components/system/common/common_configuration.rst b/docs/source/simulation_components/system/common/common_configuration.rst index 49e3188b..73971b37 100644 --- a/docs/source/simulation_components/system/common/common_configuration.rst +++ b/docs/source/simulation_components/system/common/common_configuration.rst @@ -2,35 +2,38 @@ © Crown-owned copyright 2024, Defence Science and Technology Laboratory UK -``ref`` -======= +.. _Common Configuration: -Human readable name used as reference for the |SOFTWARE_NAME_BACKTICK|. Not used in code. +Common Configuration +-------------------- -``type`` -======== +ref +""" -The type of software that should be added. To add |SOFTWARE_NAME| this must be |SOFTWARE_NAME_BACKTICK|. +Human readable name used as reference for the software class. Not used in code. -``options`` -=========== +type +"""" + +The type of software that should be added. To add the required software, this must be it's name. + +options +""""""" The configuration options are the attributes that fall under the options for an application. - - -``fix_duration`` -"""""""""""""""" +fix_duration +"""""""""""" Optional. Default value is ``2``. -The number of timesteps the |SOFTWARE_NAME| will remain in a ``FIXING`` state before going into a ``GOOD`` state. +The number of timesteps the software will remain in a ``FIXING`` state before going into a ``GOOD`` state. -``listen_on_ports`` -""""""""""""""""""" +listen_on_ports +^^^^^^^^^^^^^^^ -The set of ports to listen on. This is in addition to the main port the software is designated. This can either be +Optional. The set of ports to listen on. This is in addition to the main port the software is designated. This can either be the string name of ports or the port integers Example: @@ -40,11 +43,8 @@ Example: simulation: network: nodes: - - hostname: client - type: computer - ip_address: 192.168.10.11 - subnet_mask: 255.255.255.0 - default_gateway: 192.168.10.1 + - hostname: [hostname] + type: [Node Type] services: - type: [Service Type] options: diff --git a/docs/source/simulation_components/system/services/database_service.rst b/docs/source/simulation_components/system/services/database_service.rst index 2f0452f0..7613b8ca 100644 --- a/docs/source/simulation_components/system/services/database_service.rst +++ b/docs/source/simulation_components/system/services/database_service.rst @@ -94,11 +94,6 @@ Via Configuration Configuration ============= -.. include:: ../common/common_configuration.rst - -.. |SOFTWARE_NAME| replace:: DatabaseService -.. |SOFTWARE_NAME_BACKTICK| replace:: ``DatabaseService`` - ``backup_server_ip`` """""""""""""""""""" @@ -114,3 +109,8 @@ This must be a valid octet i.e. in the range of ``0.0.0.0`` and ``255.255.255.25 Optional. Default value is ``None``. The password that needs to be provided by connecting clients in order to create a successful connection. + +``Common Configuration`` +"""""""""""""""""""""""" + +Common configuration variables are detailed within :ref:`software` diff --git a/docs/source/simulation_components/system/services/dns_client.rst b/docs/source/simulation_components/system/services/dns_client.rst index c0025114..2cab953e 100644 --- a/docs/source/simulation_components/system/services/dns_client.rst +++ b/docs/source/simulation_components/system/services/dns_client.rst @@ -84,10 +84,6 @@ Via Configuration Configuration ============= -.. include:: ../common/common_configuration.rst - -.. |SOFTWARE_NAME| replace:: DNSClient -.. |SOFTWARE_NAME_BACKTICK| replace:: ``DNSClient`` ``dns_server`` """""""""""""" diff --git a/docs/source/simulation_components/system/services/dns_server.rst b/docs/source/simulation_components/system/services/dns_server.rst index b681f32f..3e90a551 100644 --- a/docs/source/simulation_components/system/services/dns_server.rst +++ b/docs/source/simulation_components/system/services/dns_server.rst @@ -83,13 +83,9 @@ Via Configuration Configuration ============= -.. include:: ../common/common_configuration.rst -.. |SOFTWARE_NAME| replace:: DNSServer -.. |SOFTWARE_NAME_BACKTICK| replace:: ``DNSServer`` - -domain_mapping -"""""""""""""" +``domain_mapping`` +"""""""""""""""""" Domain mapping takes the domain and IP Addresses as a key-value pairs i.e. diff --git a/docs/source/simulation_components/system/services/ftp_client.rst b/docs/source/simulation_components/system/services/ftp_client.rst index fdf9cfcf..21bd9f2e 100644 --- a/docs/source/simulation_components/system/services/ftp_client.rst +++ b/docs/source/simulation_components/system/services/ftp_client.rst @@ -82,8 +82,3 @@ Via Configuration Configuration ============= - -.. include:: ../common/common_configuration.rst - -.. |SOFTWARE_NAME| replace:: FTPClient -.. |SOFTWARE_NAME_BACKTICK| replace:: ``FTPClient`` diff --git a/docs/source/simulation_components/system/services/ftp_server.rst b/docs/source/simulation_components/system/services/ftp_server.rst index 9b26157d..e0e1a394 100644 --- a/docs/source/simulation_components/system/services/ftp_server.rst +++ b/docs/source/simulation_components/system/services/ftp_server.rst @@ -81,11 +81,6 @@ Via Configuration Configuration ============= -.. include:: ../common/common_configuration.rst - -.. |SOFTWARE_NAME| replace:: FTPServer -.. |SOFTWARE_NAME_BACKTICK| replace:: ``FTPServer`` - ``server_password`` """"""""""""""""""" diff --git a/docs/source/simulation_components/system/services/ntp_client.rst b/docs/source/simulation_components/system/services/ntp_client.rst index 6faad108..e578651b 100644 --- a/docs/source/simulation_components/system/services/ntp_client.rst +++ b/docs/source/simulation_components/system/services/ntp_client.rst @@ -80,11 +80,6 @@ Via Configuration Configuration ============= -.. include:: ../common/common_configuration.rst - -.. |SOFTWARE_NAME| replace:: NTPClient -.. |SOFTWARE_NAME_BACKTICK| replace:: ``NTPClient`` - ``ntp_server_ip`` """"""""""""""""" diff --git a/docs/source/simulation_components/system/services/ntp_server.rst b/docs/source/simulation_components/system/services/ntp_server.rst index 3ddb51ea..30d0b2fa 100644 --- a/docs/source/simulation_components/system/services/ntp_server.rst +++ b/docs/source/simulation_components/system/services/ntp_server.rst @@ -74,11 +74,3 @@ Via Configuration services: - ref: ntp_server type: NTPServer - -Configuration -============= - -.. include:: ../common/common_configuration.rst - -.. |SOFTWARE_NAME| replace:: NTPServer -.. |SOFTWARE_NAME_BACKTICK| replace:: ``NTPServer`` diff --git a/docs/source/simulation_components/system/services/terminal.rst b/docs/source/simulation_components/system/services/terminal.rst index 041169b1..24cfe6e1 100644 --- a/docs/source/simulation_components/system/services/terminal.rst +++ b/docs/source/simulation_components/system/services/terminal.rst @@ -173,11 +173,3 @@ Disconnect from Remote Node term_a_term_b_remote_connection: RemoteTerminalConnection = terminal_a.login(username="admin", password="Admin123!", ip_address="192.168.0.11") term_a_term_b_remote_connection.disconnect() - -Configuration -============= - -.. include:: ../common/common_configuration.rst - -.. |SOFTWARE_NAME| replace:: Terminal -.. |SOFTWARE_NAME_BACKTICK| replace:: ``Terminal`` diff --git a/docs/source/simulation_components/system/services/web_server.rst b/docs/source/simulation_components/system/services/web_server.rst index f0294223..04b9b16a 100644 --- a/docs/source/simulation_components/system/services/web_server.rst +++ b/docs/source/simulation_components/system/services/web_server.rst @@ -75,10 +75,8 @@ Via Configuration - ref: web_server type: WebServer -Configuration -============= -.. include:: ../common/common_configuration.rst +``Common Attributes`` +""""""""""""""""""""" -.. |SOFTWARE_NAME| replace:: WebServer -.. |SOFTWARE_NAME_BACKTICK| replace:: ``WebServer`` +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/software.rst b/docs/source/simulation_components/system/software.rst index 3acfb9b4..c8f0e2d3 100644 --- a/docs/source/simulation_components/system/software.rst +++ b/docs/source/simulation_components/system/software.rst @@ -2,6 +2,8 @@ © Crown-owned copyright 2024, Defence Science and Technology Laboratory UK +.. _software: + Software ======== @@ -63,3 +65,10 @@ Processes ######### `To be implemented` + +Common Software Configuration +############################# + +Below is a list of the common configuration items within Software components of PrimAITE: + +.. include:: common/common_configuration.rst From 0140982d5e666914cae439c9a4dc71630cba45bd Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Thu, 5 Sep 2024 08:41:04 +0100 Subject: [PATCH 10/58] #2837 - Updating link to common attributes within Software components following Review comments. [skip ci] --- .../system/applications/c2_suite.rst | 13 ++++++++----- .../system/applications/data_manipulation_bot.rst | 5 +++++ .../system/applications/database_client.rst | 5 +++++ .../system/applications/dos_bot.rst | 13 +++++-------- .../system/applications/ransomware_script.rst | 5 +++++ .../system/applications/web_browser.rst | 6 ++++++ .../system/services/database_service.rst | 6 +++--- .../system/services/dns_client.rst | 5 +++++ .../system/services/dns_server.rst | 5 +++++ .../system/services/ftp_client.rst | 5 +++++ .../system/services/ftp_server.rst | 5 +++++ .../system/services/ntp_client.rst | 5 +++++ .../system/services/ntp_server.rst | 6 ++++++ .../system/services/terminal.rst | 6 ++++++ 14 files changed, 74 insertions(+), 16 deletions(-) diff --git a/docs/source/simulation_components/system/applications/c2_suite.rst b/docs/source/simulation_components/system/applications/c2_suite.rst index 82519ab6..3e2b669c 100644 --- a/docs/source/simulation_components/system/applications/c2_suite.rst +++ b/docs/source/simulation_components/system/applications/c2_suite.rst @@ -254,13 +254,11 @@ Via Configuration C2 Beacon Configuration ======================= -``Common Configuration`` -"""""""""""""""""""""""" +``Common Attributes`` +""""""""""""""""""""" -.. include:: ../common/common_configuration.rst +See :ref:`Common Configuration` -.. |SOFTWARE_NAME| replace:: C2Beacon -.. |SOFTWARE_NAME_BACKTICK| replace:: ``C2Beacon`` ``c2_server_ip_address`` """""""""""""""""""""""" @@ -314,3 +312,8 @@ C2 Server Configuration ======================= *The C2 Server does not currently offer any unique configuration options and will configure itself to match the C2 beacon's network behaviour.* + +``Common Attributes`` +""""""""""""""""""""" + +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/applications/data_manipulation_bot.rst b/docs/source/simulation_components/system/applications/data_manipulation_bot.rst index dd8b7114..ade46d3a 100644 --- a/docs/source/simulation_components/system/applications/data_manipulation_bot.rst +++ b/docs/source/simulation_components/system/applications/data_manipulation_bot.rst @@ -199,3 +199,8 @@ Optional. Default value is ``0.1``. The chance of the ``DataManipulationBot`` to succeed with a data manipulation attack. This must be a float value between ``0`` and ``1``. + +``Common Attributes`` +""""""""""""""""""""" + +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/applications/database_client.rst b/docs/source/simulation_components/system/applications/database_client.rst index 45252e67..4a5e17c2 100644 --- a/docs/source/simulation_components/system/applications/database_client.rst +++ b/docs/source/simulation_components/system/applications/database_client.rst @@ -104,3 +104,8 @@ This must be a valid octet i.e. in the range of ``0.0.0.0`` and ``255.255.255.25 Optional. Default value is ``None``. The password that the ``DatabaseClient`` will use to access the :ref:`DatabaseService`. + +``Common Attributes`` +""""""""""""""""""""" + +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/applications/dos_bot.rst b/docs/source/simulation_components/system/applications/dos_bot.rst index 5be5383e..bf7b1037 100644 --- a/docs/source/simulation_components/system/applications/dos_bot.rst +++ b/docs/source/simulation_components/system/applications/dos_bot.rst @@ -98,14 +98,6 @@ Via Configuration Configuration ============= -``Common Configuration`` -"""""""""""""""""""""""" - -.. include:: ../common/common_configuration.rst - -.. |SOFTWARE_NAME| replace:: DoSBot -.. |SOFTWARE_NAME_BACKTICK| replace:: ``DoSBot`` - ``target_ip_address`` """"""""""""""""""""" @@ -164,3 +156,8 @@ Optional. Default value is ``1000``. The maximum number of sessions the ``DoSBot`` is able to make. This must be an integer value equal to or greater than ``0``. + +``Common Attributes`` +""""""""""""""""""""" + +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/applications/ransomware_script.rst b/docs/source/simulation_components/system/applications/ransomware_script.rst index a5ee990c..db5be2ed 100644 --- a/docs/source/simulation_components/system/applications/ransomware_script.rst +++ b/docs/source/simulation_components/system/applications/ransomware_script.rst @@ -79,3 +79,8 @@ The RansomwareScript inherits configuration options such as ``fix_duration`` fro IP address of the :ref:`DatabaseService` which the ``RansomwareScript`` will encrypt. This must be a valid octet i.e. in the range of ``0.0.0.0`` and ``255.255.255.255``. + +``Common Attributes`` +""""""""""""""""""""" + +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/applications/web_browser.rst b/docs/source/simulation_components/system/applications/web_browser.rst index 52cfce28..b0466ad1 100644 --- a/docs/source/simulation_components/system/applications/web_browser.rst +++ b/docs/source/simulation_components/system/applications/web_browser.rst @@ -105,3 +105,9 @@ The domain ``arcd.com`` can be matched by - http://arcd.com/ - http://arcd.com/users/ - arcd.com + + +``Common Attributes`` +""""""""""""""""""""" + +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/database_service.rst b/docs/source/simulation_components/system/services/database_service.rst index 7613b8ca..f1b617e6 100644 --- a/docs/source/simulation_components/system/services/database_service.rst +++ b/docs/source/simulation_components/system/services/database_service.rst @@ -110,7 +110,7 @@ Optional. Default value is ``None``. The password that needs to be provided by connecting clients in order to create a successful connection. -``Common Configuration`` -"""""""""""""""""""""""" +``Common Attributes`` +""""""""""""""""""""" -Common configuration variables are detailed within :ref:`software` +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/dns_client.rst b/docs/source/simulation_components/system/services/dns_client.rst index 2cab953e..17fe0219 100644 --- a/docs/source/simulation_components/system/services/dns_client.rst +++ b/docs/source/simulation_components/system/services/dns_client.rst @@ -93,3 +93,8 @@ Optional. Default value is ``None``. The IP Address of the :ref:`DNSServer`. This must be a valid octet i.e. in the range of ``0.0.0.0`` and ``255.255.255.255``. + +``Common Attributes`` +""""""""""""""""""""" + +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/dns_server.rst b/docs/source/simulation_components/system/services/dns_server.rst index 3e90a551..0b6acb01 100644 --- a/docs/source/simulation_components/system/services/dns_server.rst +++ b/docs/source/simulation_components/system/services/dns_server.rst @@ -92,3 +92,8 @@ Domain mapping takes the domain and IP Addresses as a key-value pairs i.e. If the domain is "arcd.com" and the IP Address attributed to the domain is 192.168.0.10, then the value should be ``arcd.com: 192.168.0.10`` The key must be a string and the IP Address must be a valid octet i.e. in the range of ``0.0.0.0`` and ``255.255.255.255``. + +``Common Attributes`` +""""""""""""""""""""" + +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/ftp_client.rst b/docs/source/simulation_components/system/services/ftp_client.rst index 21bd9f2e..265a03ea 100644 --- a/docs/source/simulation_components/system/services/ftp_client.rst +++ b/docs/source/simulation_components/system/services/ftp_client.rst @@ -82,3 +82,8 @@ Via Configuration Configuration ============= + +``Common Attributes`` +""""""""""""""""""""" + +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/ftp_server.rst b/docs/source/simulation_components/system/services/ftp_server.rst index e0e1a394..9b068d68 100644 --- a/docs/source/simulation_components/system/services/ftp_server.rst +++ b/docs/source/simulation_components/system/services/ftp_server.rst @@ -87,3 +87,8 @@ Configuration Optional. Default value is ``None``. The password that needs to be provided by a connecting :ref:`FTPClient` in order to create a successful connection. + +``Common Attributes`` +""""""""""""""""""""" + +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/ntp_client.rst b/docs/source/simulation_components/system/services/ntp_client.rst index e578651b..8096a4fe 100644 --- a/docs/source/simulation_components/system/services/ntp_client.rst +++ b/docs/source/simulation_components/system/services/ntp_client.rst @@ -88,3 +88,8 @@ Optional. Default value is ``None``. The IP address of an NTP Server which provides a time that the ``NTPClient`` can synchronise to. This must be a valid octet i.e. in the range of ``0.0.0.0`` and ``255.255.255.255``. + +``Common Attributes`` +""""""""""""""""""""" + +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/ntp_server.rst b/docs/source/simulation_components/system/services/ntp_server.rst index 30d0b2fa..f2bb6684 100644 --- a/docs/source/simulation_components/system/services/ntp_server.rst +++ b/docs/source/simulation_components/system/services/ntp_server.rst @@ -74,3 +74,9 @@ Via Configuration services: - ref: ntp_server type: NTPServer + + +``Common Attributes`` +""""""""""""""""""""" + +See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/terminal.rst b/docs/source/simulation_components/system/services/terminal.rst index 24cfe6e1..c319d264 100644 --- a/docs/source/simulation_components/system/services/terminal.rst +++ b/docs/source/simulation_components/system/services/terminal.rst @@ -173,3 +173,9 @@ Disconnect from Remote Node term_a_term_b_remote_connection: RemoteTerminalConnection = terminal_a.login(username="admin", password="Admin123!", ip_address="192.168.0.11") term_a_term_b_remote_connection.disconnect() + + +``Common Attributes`` +""""""""""""""""""""" + +See :ref:`Common Configuration` From e18ac0914fbe95809f9bba6cfafe71137f3883e7 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Thu, 5 Sep 2024 08:42:38 +0100 Subject: [PATCH 11/58] #2837 - Correcting date on changelog v3.3 release --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c4b949a..4b9ca8e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [3.3.0] - 2024-08-30 +## [3.3.0] - 2024-09-04 ### Added - Random Number Generator Seeding by specifying a random number seed in the config file. From 3feb908900309b1445236bc79c9f1541307254e9 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Thu, 5 Sep 2024 09:02:07 +0100 Subject: [PATCH 12/58] #2837 - Added a description of how some rewards can be made sticky/instantaneous. [skip ci] --- docs/source/rewards.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/source/rewards.rst b/docs/source/rewards.rst index 921544e8..0163284c 100644 --- a/docs/source/rewards.rst +++ b/docs/source/rewards.rst @@ -7,6 +7,9 @@ Rewards Rewards in PrimAITE are based on a system of individual components that react to events in the simulation. An agent's reward function is calculated as the weighted sum of several reward components. +Some rewards, such as the ``GreenAdminDatabaseUnreachablePenalty``, can be marked as 'sticky' in their configuration. Setting this to ``True`` will mean that they continue to output the same value after an event until another event of that type. +In the instance of the ``GreenAdminDatabaseUnreachablePenalty``, the database admin reward will stay negative until the next successful database request is made, even if the database admin agents do nothing and the database returns a good state. + Components ********** The following API pages describe the use of each reward component and the possible configuration options. An example of configuring each via yaml is also provided. From fcbde31dad1722bd98ba0a8f49f9239c4f649200 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Thu, 5 Sep 2024 11:23:52 +0100 Subject: [PATCH 13/58] #2837 - Actioning review comments and fixing a bug with links to the common attributes within software documents --- .../system/applications/c2_suite.rst | 16 ++++++++-------- .../applications/data_manipulation_bot.rst | 2 +- .../system/applications/database_client.rst | 2 +- .../system/applications/dos_bot.rst | 2 +- .../system/applications/ransomware_script.rst | 2 +- .../system/applications/web_browser.rst | 2 +- .../system/common/common_configuration.rst | 2 +- .../system/services/database_service.rst | 2 +- .../system/services/dns_client.rst | 2 +- .../system/services/dns_server.rst | 2 +- .../system/services/ftp_client.rst | 2 +- .../system/services/ftp_server.rst | 2 +- .../system/services/ntp_client.rst | 2 +- .../system/services/ntp_server.rst | 2 +- .../system/services/terminal.rst | 4 ++-- .../system/services/web_server.rst | 2 +- 16 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/source/simulation_components/system/applications/c2_suite.rst b/docs/source/simulation_components/system/applications/c2_suite.rst index 3e2b669c..fd9ee546 100644 --- a/docs/source/simulation_components/system/applications/c2_suite.rst +++ b/docs/source/simulation_components/system/applications/c2_suite.rst @@ -59,7 +59,7 @@ Once installed and configured; the C2 beacon can establish connection with the C This will send an initial ``keep alive`` to the given C2 Server (The C2 Server IPv4Address must be given upon C2 Beacon configuration). Which is then resolved and responded by another ``Keep Alive`` by the C2 server back to the C2 beacon to confirm connection. -The C2 Beacon will send out periodic keep alive based on it's configuration parameters to configure it's active connection with the C2 server. +The C2 Beacon will send out periodic keep alive based on its configuration parameters to configure it's active connection with the C2 server. It's recommended that a C2 Beacon is installed and configured mid episode by a Red Agent for a more cyber realistic simulation. @@ -254,12 +254,6 @@ Via Configuration C2 Beacon Configuration ======================= -``Common Attributes`` -""""""""""""""""""""" - -See :ref:`Common Configuration` - - ``c2_server_ip_address`` """""""""""""""""""""""" @@ -308,12 +302,18 @@ This must be a string i.e ``DNS``. Defaults to ``HTTP``. *Please refer to the ``IPProtocol`` class for further reference.* +``Common Attributes`` +^^^^^^^^^^^^^^^^^^^^^ + +See :ref:`Common Configuration` + + C2 Server Configuration ======================= *The C2 Server does not currently offer any unique configuration options and will configure itself to match the C2 beacon's network behaviour.* ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/applications/data_manipulation_bot.rst b/docs/source/simulation_components/system/applications/data_manipulation_bot.rst index ade46d3a..1a387514 100644 --- a/docs/source/simulation_components/system/applications/data_manipulation_bot.rst +++ b/docs/source/simulation_components/system/applications/data_manipulation_bot.rst @@ -201,6 +201,6 @@ The chance of the ``DataManipulationBot`` to succeed with a data manipulation at This must be a float value between ``0`` and ``1``. ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/applications/database_client.rst b/docs/source/simulation_components/system/applications/database_client.rst index 4a5e17c2..1fea78ab 100644 --- a/docs/source/simulation_components/system/applications/database_client.rst +++ b/docs/source/simulation_components/system/applications/database_client.rst @@ -106,6 +106,6 @@ Optional. Default value is ``None``. The password that the ``DatabaseClient`` will use to access the :ref:`DatabaseService`. ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/applications/dos_bot.rst b/docs/source/simulation_components/system/applications/dos_bot.rst index bf7b1037..6ad45424 100644 --- a/docs/source/simulation_components/system/applications/dos_bot.rst +++ b/docs/source/simulation_components/system/applications/dos_bot.rst @@ -158,6 +158,6 @@ The maximum number of sessions the ``DoSBot`` is able to make. This must be an integer value equal to or greater than ``0``. ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/applications/ransomware_script.rst b/docs/source/simulation_components/system/applications/ransomware_script.rst index db5be2ed..5bff6991 100644 --- a/docs/source/simulation_components/system/applications/ransomware_script.rst +++ b/docs/source/simulation_components/system/applications/ransomware_script.rst @@ -81,6 +81,6 @@ IP address of the :ref:`DatabaseService` which the ``RansomwareScript`` will enc This must be a valid octet i.e. in the range of ``0.0.0.0`` and ``255.255.255.255``. ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/applications/web_browser.rst b/docs/source/simulation_components/system/applications/web_browser.rst index b0466ad1..c56c450d 100644 --- a/docs/source/simulation_components/system/applications/web_browser.rst +++ b/docs/source/simulation_components/system/applications/web_browser.rst @@ -108,6 +108,6 @@ The domain ``arcd.com`` can be matched by ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/common/common_configuration.rst b/docs/source/simulation_components/system/common/common_configuration.rst index 73971b37..7b32a463 100644 --- a/docs/source/simulation_components/system/common/common_configuration.rst +++ b/docs/source/simulation_components/system/common/common_configuration.rst @@ -5,7 +5,7 @@ .. _Common Configuration: Common Configuration --------------------- +"""""""""""""""""""" ref """ diff --git a/docs/source/simulation_components/system/services/database_service.rst b/docs/source/simulation_components/system/services/database_service.rst index f1b617e6..f3e800cd 100644 --- a/docs/source/simulation_components/system/services/database_service.rst +++ b/docs/source/simulation_components/system/services/database_service.rst @@ -111,6 +111,6 @@ Optional. Default value is ``None``. The password that needs to be provided by connecting clients in order to create a successful connection. ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/dns_client.rst b/docs/source/simulation_components/system/services/dns_client.rst index 17fe0219..eca152f0 100644 --- a/docs/source/simulation_components/system/services/dns_client.rst +++ b/docs/source/simulation_components/system/services/dns_client.rst @@ -95,6 +95,6 @@ The IP Address of the :ref:`DNSServer`. This must be a valid octet i.e. in the range of ``0.0.0.0`` and ``255.255.255.255``. ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/dns_server.rst b/docs/source/simulation_components/system/services/dns_server.rst index 0b6acb01..1e30b9bd 100644 --- a/docs/source/simulation_components/system/services/dns_server.rst +++ b/docs/source/simulation_components/system/services/dns_server.rst @@ -94,6 +94,6 @@ If the domain is "arcd.com" and the IP Address attributed to the domain is 192.1 The key must be a string and the IP Address must be a valid octet i.e. in the range of ``0.0.0.0`` and ``255.255.255.255``. ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/ftp_client.rst b/docs/source/simulation_components/system/services/ftp_client.rst index 265a03ea..c8a21743 100644 --- a/docs/source/simulation_components/system/services/ftp_client.rst +++ b/docs/source/simulation_components/system/services/ftp_client.rst @@ -84,6 +84,6 @@ Configuration ============= ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/ftp_server.rst b/docs/source/simulation_components/system/services/ftp_server.rst index 9b068d68..f52fa043 100644 --- a/docs/source/simulation_components/system/services/ftp_server.rst +++ b/docs/source/simulation_components/system/services/ftp_server.rst @@ -89,6 +89,6 @@ Optional. Default value is ``None``. The password that needs to be provided by a connecting :ref:`FTPClient` in order to create a successful connection. ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/ntp_client.rst b/docs/source/simulation_components/system/services/ntp_client.rst index 8096a4fe..7af831bf 100644 --- a/docs/source/simulation_components/system/services/ntp_client.rst +++ b/docs/source/simulation_components/system/services/ntp_client.rst @@ -90,6 +90,6 @@ The IP address of an NTP Server which provides a time that the ``NTPClient`` can This must be a valid octet i.e. in the range of ``0.0.0.0`` and ``255.255.255.255``. ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/ntp_server.rst b/docs/source/simulation_components/system/services/ntp_server.rst index f2bb6684..a09c8bdd 100644 --- a/docs/source/simulation_components/system/services/ntp_server.rst +++ b/docs/source/simulation_components/system/services/ntp_server.rst @@ -77,6 +77,6 @@ Via Configuration ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/terminal.rst b/docs/source/simulation_components/system/services/terminal.rst index c319d264..6909786e 100644 --- a/docs/source/simulation_components/system/services/terminal.rst +++ b/docs/source/simulation_components/system/services/terminal.rst @@ -36,7 +36,7 @@ Implementation Usage """"" - - Pre-Installs on all ``Node`` (with the exception of ``Switch``). + - Pre-Installs on all ``Nodes`` (with the exception of ``Switches``). - Terminal Clients connect, execute commands and disconnect from remote nodes. - Ensures that users are logged in to the component before executing any commands. - Service runs on SSH port 22 by default. @@ -176,6 +176,6 @@ Disconnect from Remote Node ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` diff --git a/docs/source/simulation_components/system/services/web_server.rst b/docs/source/simulation_components/system/services/web_server.rst index 04b9b16a..cec20a60 100644 --- a/docs/source/simulation_components/system/services/web_server.rst +++ b/docs/source/simulation_components/system/services/web_server.rst @@ -77,6 +77,6 @@ Via Configuration ``Common Attributes`` -""""""""""""""""""""" +^^^^^^^^^^^^^^^^^^^^^ See :ref:`Common Configuration` From a5e75f9fed4044e4b9aab4f631945b7c99572023 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Thu, 5 Sep 2024 11:24:52 +0100 Subject: [PATCH 14/58] #2837 - Actioning notebook review comments --- .../notebooks/Command-&-Control-E2E-Demonstration.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb b/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb index 4e36db17..97b436cb 100644 --- a/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb +++ b/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb @@ -1450,7 +1450,7 @@ "source": [ "### **Command and Control** | Configurability | C2 Server IP Address\n", "\n", - "As with a majority of client and server based application configuration in primaite, the remote IP of a server must be supplied.\n", + "As with a majority of client and server based application configurations in primaite, the remote IP of a server must be supplied.\n", "\n", "In the case of the C2 Beacon, the C2 Server's IP address must be supplied before the C2 beacon will be able to perform any other actions (including ``APPLICATION EXECUTE``).\n", "\n", @@ -1818,7 +1818,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.10.11" } }, "nbformat": 4, From 9fe48bb2410b027b0be08ccd1909f6845b07ffa1 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Thu, 5 Sep 2024 11:32:39 +0100 Subject: [PATCH 15/58] #2837 - Commiting a typo correction in Using Episode Schedules notebook [skip ci] --- src/primaite/notebooks/Using-Episode-Schedules.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/primaite/notebooks/Using-Episode-Schedules.ipynb b/src/primaite/notebooks/Using-Episode-Schedules.ipynb index 14012264..cb06e0f9 100644 --- a/src/primaite/notebooks/Using-Episode-Schedules.ipynb +++ b/src/primaite/notebooks/Using-Episode-Schedules.ipynb @@ -199,7 +199,7 @@ "metadata": {}, "source": [ "### Episode 0\n", - "Let' run the episodes to verify that the agents are changing as expected. In episode 0, there should be no green or red agents, just the defender blue agent." + "Let's run the episodes to verify that the agents are changing as expected. In episode 0, there should be no green or red agents, just the defender blue agent." ] }, { From 60e2225a2c6d3f0f7d387248eb2d5552f04ebb52 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Thu, 5 Sep 2024 12:03:20 +0100 Subject: [PATCH 16/58] #2837 - Correcting formatting on action masking table [skip ci] --- docs/source/action_masking.rst | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/source/action_masking.rst b/docs/source/action_masking.rst index 2b17075b..264ab254 100644 --- a/docs/source/action_masking.rst +++ b/docs/source/action_masking.rst @@ -111,35 +111,35 @@ The following logic is applied: +------------------------------------------+---------------------------------------------------------------------+ | **FIREWALL_ACL_REMOVERULE** | Firewall is on. | +------------------------------------------+---------------------------------------------------------------------+ -| NODE_NMAP_PING_SCAN | Node is on. | +| **NODE_NMAP_PING_SCAN** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| NODE_NMAP_PORT_SCAN | Node is on. | +| **NODE_NMAP_PORT_SCAN** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| NODE_NMAP_NETWORK_SERVICE_RECON | Node is on. | +| **NODE_NMAP_NETWORK_SERVICE_RECON** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| CONFIGURE_DATABASE_CLIENT | Node is on. | +| **CONFIGURE_DATABASE_CLIENT** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| CONFIGURE_RANSOMWARE_SCRIPT | Node is on. | +| **CONFIGURE_RANSOMWARE_SCRIPT** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| CONFIGURE_DOSBOT | Node is on. | +| **CONFIGURE_DOSBOT** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| CONFIGURE_C2_BEACON | Node is on. | +| **CONFIGURE_C2_BEACON** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| C2_SERVER_RANSOMWARE_LAUNCH | Node is on. | +| **C2_SERVER_RANSOMWARE_LAUNCH** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| C2_SERVER_RANSOMWARE_CONFIGURE | Node is on. | +| **C2_SERVER_RANSOMWARE_CONFIGURE** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| C2_SERVER_TERMINAL_COMMAND | Node is on. | +| **C2_SERVER_TERMINAL_COMMAND** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| C2_SERVER_DATA_EXFILTRATE | Node is on. | +| **C2_SERVER_DATA_EXFILTRATE** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| NODE_ACCOUNTS_CHANGE_PASSWORD | Node is on. | +| **NODE_ACCOUNTS_CHANGE_PASSWORD** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| SSH_TO_REMOTE | Node is on. | +| **SSH_TO_REMOTE** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| SESSIONS_REMOTE_LOGOFF | Node is on. | +| **SESSIONS_REMOTE_LOGOFF** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ -| NODE_SEND_REMOTE_COMMAND | Node is on. | +| **NODE_SEND_REMOTE_COMMAND** | Node is on. | +------------------------------------------+---------------------------------------------------------------------+ From e809d89c30d3ba438d4edabfe88ea9c1ba9f226d Mon Sep 17 00:00:00 2001 From: Czar Echavez Date: Thu, 5 Sep 2024 13:47:59 +0100 Subject: [PATCH 17/58] #2842 and #2843: implement add user and disable user actions + tests --- src/primaite/game/agent/actions.py | 34 +++++++ .../simulator/network/hardware/base.py | 16 +++- tests/conftest.py | 2 + .../actions/test_user_account_actions.py | 93 +++++++++++++++++++ 4 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 tests/integration_tests/game_layer/actions/test_user_account_actions.py diff --git a/src/primaite/game/agent/actions.py b/src/primaite/game/agent/actions.py index 2e6189c0..a299788e 100644 --- a/src/primaite/game/agent/actions.py +++ b/src/primaite/game/agent/actions.py @@ -1116,6 +1116,38 @@ class ConfigureC2BeaconAction(AbstractAction): return ["network", "node", node_name, "application", "C2Beacon", "configure", config.__dict__] +class NodeAccountsAddUserAction(AbstractAction): + """Action which changes adds a User.""" + + def __init__(self, manager: "ActionManager", **kwargs) -> None: + super().__init__(manager=manager) + + def form_request(self, node_id: str, username: str, password: str, is_admin: bool) -> RequestFormat: + """Return the action formatted as a request which can be ingested by the PrimAITE simulation.""" + node_name = self.manager.get_node_name_by_idx(node_id) + return ["network", "node", node_name, "service", "UserManager", "add_user", username, password, is_admin] + + +class NodeAccountsDisableUserAction(AbstractAction): + """Action which disables a user.""" + + def __init__(self, manager: "ActionManager", **kwargs) -> None: + super().__init__(manager=manager) + + def form_request(self, node_id: str, username: str) -> RequestFormat: + """Return the action formatted as a request which can be ingested by the PrimAITE simulation.""" + node_name = self.manager.get_node_name_by_idx(node_id) + return [ + "network", + "node", + node_name, + "service", + "UserManager", + "disable_user", + username, + ] + + class NodeAccountsChangePasswordAction(AbstractAction): """Action which changes the password for a user.""" @@ -1368,6 +1400,8 @@ class ActionManager: "C2_SERVER_RANSOMWARE_CONFIGURE": RansomwareConfigureC2ServerAction, "C2_SERVER_TERMINAL_COMMAND": TerminalC2ServerAction, "C2_SERVER_DATA_EXFILTRATE": ExfiltrationC2ServerAction, + "NODE_ACCOUNTS_ADD_USER": NodeAccountsAddUserAction, + "NODE_ACCOUNTS_DISABLE_USER": NodeAccountsDisableUserAction, "NODE_ACCOUNTS_CHANGE_PASSWORD": NodeAccountsChangePasswordAction, "SSH_TO_REMOTE": NodeSessionsRemoteLoginAction, "SESSIONS_REMOTE_LOGOFF": NodeSessionsRemoteLogoutAction, diff --git a/src/primaite/simulator/network/hardware/base.py b/src/primaite/simulator/network/hardware/base.py index ef2d47c3..f49d0a17 100644 --- a/src/primaite/simulator/network/hardware/base.py +++ b/src/primaite/simulator/network/hardware/base.py @@ -857,7 +857,21 @@ class UserManager(Service): """ rm = super()._init_request_manager() - # todo add doc about requeest schemas + # todo add doc about request schemas + rm.add_request( + "add_user", + RequestType( + func=lambda request, context: RequestResponse.from_bool( + self.add_user(username=request[0], password=request[1], is_admin=request[2]) + ) + ), + ) + rm.add_request( + "disable_user", + RequestType( + func=lambda request, context: RequestResponse.from_bool(self.disable_user(username=request[0])) + ), + ) rm.add_request( "change_password", RequestType( diff --git a/tests/conftest.py b/tests/conftest.py index 1bbff8f2..50877378 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -463,6 +463,8 @@ def game_and_agent(): {"type": "C2_SERVER_RANSOMWARE_CONFIGURE"}, {"type": "C2_SERVER_TERMINAL_COMMAND"}, {"type": "C2_SERVER_DATA_EXFILTRATE"}, + {"type": "NODE_ACCOUNTS_ADD_USER"}, + {"type": "NODE_ACCOUNTS_DISABLE_USER"}, {"type": "NODE_ACCOUNTS_CHANGE_PASSWORD"}, {"type": "SSH_TO_REMOTE"}, {"type": "SESSIONS_REMOTE_LOGOFF"}, diff --git a/tests/integration_tests/game_layer/actions/test_user_account_actions.py b/tests/integration_tests/game_layer/actions/test_user_account_actions.py new file mode 100644 index 00000000..fd720315 --- /dev/null +++ b/tests/integration_tests/game_layer/actions/test_user_account_actions.py @@ -0,0 +1,93 @@ +# © Crown-owned copyright 2024, Defence Science and Technology Laboratory UK +import pytest + +from primaite.simulator.network.hardware.nodes.host.computer import Computer + + +@pytest.fixture +def game_and_agent_fixture(game_and_agent): + """Create a game with a simple agent that can be controlled by the tests.""" + game, agent = game_and_agent + + client_1: Computer = game.simulation.network.get_node_by_hostname("client_1") + client_1.start_up_duration = 3 + + return (game, agent) + + +def test_user_account_add_user_action(game_and_agent_fixture): + """Tests the add user account action.""" + game, agent = game_and_agent_fixture + client_1 = game.simulation.network.get_node_by_hostname("client_1") + + assert len(client_1.user_manager.users) == 1 # admin is created by default + assert len(client_1.user_manager.admins) == 1 + + # add admin account + action = ( + "NODE_ACCOUNTS_ADD_USER", + {"node_id": 0, "username": "soccon_diiz", "password": "nuts", "is_admin": True}, + ) + agent.store_action(action) + game.step() + + assert len(client_1.user_manager.users) == 2 # new user added + assert len(client_1.user_manager.admins) == 2 + + # add non admin account + action = ( + "NODE_ACCOUNTS_ADD_USER", + {"node_id": 0, "username": "mike_rotch", "password": "password", "is_admin": False}, + ) + agent.store_action(action) + game.step() + + assert len(client_1.user_manager.users) == 3 # new user added + assert len(client_1.user_manager.admins) == 2 + + +def test_user_account_disable_user_action(game_and_agent_fixture): + """Tests the disable user account action.""" + game, agent = game_and_agent_fixture + client_1 = game.simulation.network.get_node_by_hostname("client_1") + + client_1.user_manager.add_user(username="test", password="icles", is_admin=True) + assert len(client_1.user_manager.users) == 2 # new user added + assert len(client_1.user_manager.admins) == 2 + + test_user = client_1.user_manager.users.get("test") + assert test_user + assert test_user.disabled is not True + + # disable test account + action = ( + "NODE_ACCOUNTS_DISABLE_USER", + { + "node_id": 0, + "username": "test", + }, + ) + agent.store_action(action) + game.step() + assert test_user.disabled + + +def test_user_account_change_password_action(game_and_agent_fixture): + """Tests the change password user account action.""" + game, agent = game_and_agent_fixture + client_1 = game.simulation.network.get_node_by_hostname("client_1") + + client_1.user_manager.add_user(username="test", password="icles", is_admin=True) + + test_user = client_1.user_manager.users.get("test") + assert test_user.password == "icles" + + # change account password + action = ( + "NODE_ACCOUNTS_CHANGE_PASSWORD", + {"node_id": 0, "username": "test", "current_password": "icles", "new_password": "2Hard_2_Hack"}, + ) + agent.store_action(action) + game.step() + + assert test_user.password == "2Hard_2_Hack" From f6d793196d2a8130272b46da3eb43925607449df Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Thu, 5 Sep 2024 16:44:29 +0100 Subject: [PATCH 18/58] #2837 - Actioning review comments following second review [skip ci] --- docs/index.rst | 2 ++ .../simulation_components/system/applications/c2_suite.rst | 4 ++-- .../system/common/common_configuration.rst | 2 +- .../notebooks/Command-&-Control-E2E-Demonstration.ipynb | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index ff97f60d..118f7ebf 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -60,6 +60,8 @@ The ARCD Primary-level AI Training Environment (**PrimAITE**) provides an effect - Modelling background (green) pattern-of-life; - Operates at machine-speed to enable fast training cycles via Reinforcement Learning (RL). +PrimAITE has been designed as an extensible environment and toolkit to support the development, test, training and evaluation of AI-based cyber defensive agents. Whilst PrimAITE ships with a number of example modelled scenarios (a.k.a. Use Cases), it has not been developed to mandate the solving of a single cyber challenge, and instead provides a highly flexible environment application that can be extended and reconfigured by the user to suit their specific cyber defence training and evaluation needs. PrimAITE provides default networks, red agent and green agent behaviour, reward functions, and action / observation space configuration, all of which can be utilised out of the box, but which ultimately can (and in some instances should) be built upon and / or reconfigured to meet the needs of different defensive agent developers. The PrimAITE user guide provides comprehensive instruction on all PrimAITE features, functionality and components, and can be consulted in order to help guide users in any reconfiguration or enhancements they wish to undertake; a library of example Jupyter notebooks are also provided to support such work. + Features ^^^^^^^^ diff --git a/docs/source/simulation_components/system/applications/c2_suite.rst b/docs/source/simulation_components/system/applications/c2_suite.rst index fd9ee546..d045949a 100644 --- a/docs/source/simulation_components/system/applications/c2_suite.rst +++ b/docs/source/simulation_components/system/applications/c2_suite.rst @@ -270,7 +270,7 @@ How often should the C2 Beacon confirm it's connection in timesteps. For example, if the keep alive Frequency is set to one then every single timestep the C2 connection will be confirmed. -It's worth noting that this may be useful option when investigating +It's worth noting that this may be a useful option when investigating network blue agent observation space. This must be a valid integer i.e ``10``. Defaults to ``5``. @@ -283,7 +283,7 @@ The protocol that the C2 Beacon will use to communicate to the C2 Server with. Currently only ``TCP`` and ``UDP`` are valid masquerade protocol options. -It's worth noting that this may be useful option to bypass ACL rules. +It's worth noting that this may be a useful option to bypass ACL rules. This must be a string i.e *UDP*. Defaults to ``TCP``. diff --git a/docs/source/simulation_components/system/common/common_configuration.rst b/docs/source/simulation_components/system/common/common_configuration.rst index 7b32a463..c53ac8b8 100644 --- a/docs/source/simulation_components/system/common/common_configuration.rst +++ b/docs/source/simulation_components/system/common/common_configuration.rst @@ -20,7 +20,7 @@ The type of software that should be added. To add the required software, this mu options """"""" -The configuration options are the attributes that fall under the options for an application. +The configuration options are the attributes that fall under the options for an application or service. fix_duration """""""""""" diff --git a/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb b/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb index 97b436cb..45af6c12 100644 --- a/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb +++ b/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb @@ -1164,7 +1164,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we are unable to do so as the C2 Server has lost it's connection to the C2 Beacon:" + "Now we are unable to do so as the C2 Server has lost its connection to the C2 Beacon:" ] }, { From a998b8e22b2fd605583fcc6f455894563c5c4ad5 Mon Sep 17 00:00:00 2001 From: Czar Echavez Date: Thu, 5 Sep 2024 16:47:17 +0100 Subject: [PATCH 19/58] #2345: remove try catch + todo - figure out why db connection cannot be made --- .../system/services/web_server/web_server.py | 54 ++++++++++--------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/src/primaite/simulator/system/services/web_server/web_server.py b/src/primaite/simulator/system/services/web_server/web_server.py index 4fc64e1f..f9f561df 100644 --- a/src/primaite/simulator/system/services/web_server/web_server.py +++ b/src/primaite/simulator/system/services/web_server/web_server.py @@ -108,37 +108,43 @@ class WebServer(Service): :type: payload: HttpRequestPacket """ response = HttpResponsePacket(status_code=HttpStatusCode.NOT_FOUND, payload=payload) - try: - parsed_url = urlparse(payload.request_url) - path = parsed_url.path.strip("/") - if len(path) < 1: + parsed_url = urlparse(payload.request_url) + path = parsed_url.path.strip("/") if parsed_url and parsed_url.path else "" + + if len(path) < 1: + # query succeeded + response.status_code = HttpStatusCode.OK + + if path.startswith("users"): + # get data from DatabaseServer + # get all users + if self._establish_db_connection(): + # unable to create a db connection + response.status_code = HttpStatusCode.INTERNAL_SERVER_ERROR + + if self.db_connection.query("SELECT"): # query succeeded + self.set_health_state(SoftwareHealthState.GOOD) response.status_code = HttpStatusCode.OK + else: + self.set_health_state(SoftwareHealthState.COMPROMISED) + return response - if path.startswith("users"): - # get data from DatabaseServer - # get all users - if not self.db_connection: - self._establish_db_connection() - - if self.db_connection.query("SELECT"): - # query succeeded - self.set_health_state(SoftwareHealthState.GOOD) - response.status_code = HttpStatusCode.OK - else: - self.set_health_state(SoftwareHealthState.COMPROMISED) - - return response - except Exception: # TODO: refactor this. Likely to cause silent bugs. (ADO ticket #2345 ) - # something went wrong on the server - response.status_code = HttpStatusCode.INTERNAL_SERVER_ERROR - return response - - def _establish_db_connection(self) -> None: + def _establish_db_connection(self) -> bool: """Establish a connection to db.""" + # if active db connection, return true + if self.db_connection: + return True + + # otherwise, try to create db connection db_client = self.software_manager.software.get("DatabaseClient") + + if db_client is None: + return False # database client not installed + self.db_connection: DatabaseClientConnection = db_client.get_new_connection() + return self.db_connection is not None def send( self, From 731982b698db922239d841c68ee02d973f52b5a9 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Fri, 6 Sep 2024 10:05:10 +0100 Subject: [PATCH 20/58] #2837 - Adding some additional wording to the README.md [skip ci] --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 137852f5..c8f644be 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,8 @@ PrimAITE presents the following features: - Support for multiple agents, each having their own customisable observation space, action space, and reward function definition, and either deterministic or RL-directed behaviour +Whilst PrimAITE ships with a number of example modelled scenarios (a.k.a. Use Cases), it has not been developed to mandate the solving of a single cyber challenge, and instead provides a highly flexible environment application that can be extended and reconfigured by the user to suit their specific cyber defence training and evaluation needs. PrimAITE provides default networks, red agent and green agent behaviour, reward functions, and action / observation space configuration, all of which can be utilised out of the box, but which ultimately can (and in some instances should) be built upon and / or reconfigured to meet the needs of different defensive agent developers. The PrimAITE user guide provides comprehensive instruction on all PrimAITE features, functionality and components, and can be consulted in order to help guide users in any reconfiguration or enhancements they wish to undertake; a library of example Jupyter notebooks are also provided to support such work. + ## Getting Started with PrimAITE ### 💫 Installation From 974aee90b37afd3be0cfddb159cddd63892d2bb4 Mon Sep 17 00:00:00 2001 From: "Archer.Bowen" Date: Fri, 6 Sep 2024 14:09:30 +0100 Subject: [PATCH 21/58] #2842 Added additional tests to confirm terminal functionality --- .../actions/test_user_account_actions.py | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/tests/integration_tests/game_layer/actions/test_user_account_actions.py b/tests/integration_tests/game_layer/actions/test_user_account_actions.py index fd720315..bb36ce73 100644 --- a/tests/integration_tests/game_layer/actions/test_user_account_actions.py +++ b/tests/integration_tests/game_layer/actions/test_user_account_actions.py @@ -2,6 +2,8 @@ import pytest from primaite.simulator.network.hardware.nodes.host.computer import Computer +from primaite.simulator.network.hardware.nodes.network.router import ACLAction +from primaite.simulator.network.transmission.transport_layer import Port @pytest.fixture @@ -91,3 +93,84 @@ def test_user_account_change_password_action(game_and_agent_fixture): game.step() assert test_user.password == "2Hard_2_Hack" + + +def test_user_account_create_terminal_action(game_and_agent_fixture): + """Tests that agents can use the terminal to create new users.""" + game, agent = game_and_agent_fixture + + router = game.simulation.network.get_node_by_hostname("router") + router.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.SSH, dst_port=Port.SSH, position=4) + + server_1 = game.simulation.network.get_node_by_hostname("server_1") + server_1_usm = server_1.software_manager.software["UserManager"] + server_1_usm.add_user("user123", "password", is_admin=True) + + action = ( + "SSH_TO_REMOTE", + { + "node_id": 0, + "username": "user123", + "password": "password", + "remote_ip": str(server_1.network_interface[1].ip_address), + }, + ) + agent.store_action(action) + game.step() + assert agent.history[-1].response.status == "success" + + # Create a new user account via terminal. + action = ( + "NODE_SEND_REMOTE_COMMAND", + { + "node_id": 0, + "remote_ip": str(server_1.network_interface[1].ip_address), + "command": ["service", "UserManager", "add_user", "new_user", "new_pass", True], + }, + ) + agent.store_action(action) + game.step() + new_user = server_1.user_manager.users.get("new_user") + assert new_user + assert new_user.password == "new_pass" + assert new_user.disabled is not True + + +def test_user_account_disable_terminal_action(game_and_agent_fixture): + """Tests that agents can use the terminal to disable users.""" + game, agent = game_and_agent_fixture + router = game.simulation.network.get_node_by_hostname("router") + router.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.SSH, dst_port=Port.SSH, position=4) + + server_1 = game.simulation.network.get_node_by_hostname("server_1") + server_1_usm = server_1.software_manager.software["UserManager"] + server_1_usm.add_user("user123", "password", is_admin=True) + + action = ( + "SSH_TO_REMOTE", + { + "node_id": 0, + "username": "user123", + "password": "password", + "remote_ip": str(server_1.network_interface[1].ip_address), + }, + ) + agent.store_action(action) + game.step() + assert agent.history[-1].response.status == "success" + + # Disable a user via terminal + action = ( + "NODE_SEND_REMOTE_COMMAND", + { + "node_id": 0, + "remote_ip": str(server_1.network_interface[1].ip_address), + "command": ["service", "UserManager", "disable_user", "user123"], + }, + ) + agent.store_action(action) + game.step() + + new_user = server_1.user_manager.users.get("user123") + assert new_user + assert new_user.disabled is True From 5ab42ead273934a3132cf47c92cb784a0ccd27bb Mon Sep 17 00:00:00 2001 From: Nick Todd Date: Mon, 9 Sep 2024 09:12:20 +0100 Subject: [PATCH 22/58] #2829: Add check for capture_nmne --- src/primaite/game/agent/observations/nic_observations.py | 7 +++++-- src/primaite/game/game.py | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/primaite/game/agent/observations/nic_observations.py b/src/primaite/game/agent/observations/nic_observations.py index 002ee4da..c5da8767 100644 --- a/src/primaite/game/agent/observations/nic_observations.py +++ b/src/primaite/game/agent/observations/nic_observations.py @@ -1,18 +1,21 @@ # © Crown-owned copyright 2024, Defence Science and Technology Laboratory UK from __future__ import annotations -from typing import Dict, Optional +from typing import ClassVar, Dict, Optional from gymnasium import spaces from gymnasium.core import ObsType from primaite.game.agent.observations.observations import AbstractObservation, WhereType from primaite.game.agent.utils import access_from_nested_dict, NOT_PRESENT_IN_STATE +from primaite.simulator.network.nmne import NMNEConfig from primaite.simulator.network.transmission.transport_layer import Port class NICObservation(AbstractObservation, identifier="NETWORK_INTERFACE"): """Status information about a network interface within the simulation environment.""" + capture_nmne: ClassVar[bool] = NMNEConfig().capture_nmne + "A dataclass defining malicious network events to be captured." class ConfigSchema(AbstractObservation.ConfigSchema): """Configuration schema for NICObservation.""" @@ -164,7 +167,7 @@ class NICObservation(AbstractObservation, identifier="NETWORK_INTERFACE"): for port in self.monitored_traffic[protocol]: obs["TRAFFIC"][protocol][Port[port].value] = {"inbound": 0, "outbound": 0} - if self.include_nmne: + if self.capture_nmne and self.include_nmne: obs.update({"NMNE": {}}) direction_dict = nic_state["nmne"].get("direction", {}) inbound_keywords = direction_dict.get("inbound", {}).get("keywords", {}) diff --git a/src/primaite/game/game.py b/src/primaite/game/game.py index 045b2467..9c0f49af 100644 --- a/src/primaite/game/game.py +++ b/src/primaite/game/game.py @@ -10,6 +10,7 @@ from primaite import DEFAULT_BANDWIDTH, getLogger from primaite.game.agent.actions import ActionManager from primaite.game.agent.interface import AbstractAgent, AgentSettings, ProxyAgent from primaite.game.agent.observations.observation_manager import ObservationManager +from primaite.game.agent.observations import NICObservation from primaite.game.agent.rewards import RewardFunction, SharedReward from primaite.game.agent.scripted_agents.data_manipulation_bot import DataManipulationAgent from primaite.game.agent.scripted_agents.probabilistic_agent import ProbabilisticAgent @@ -275,6 +276,7 @@ class PrimaiteGame: links_cfg = network_config.get("links", []) # Set the NMNE capture config NetworkInterface.nmne_config = NMNEConfig(**network_config.get("nmne_config", {})) + NICObservation.capture_nmne = NMNEConfig(**network_config.get("nmne_config", {})).capture_nmne for node_cfg in nodes_cfg: n_type = node_cfg["type"] From 4a48a8d0547f00f186617cd4226d3853fd0e2be3 Mon Sep 17 00:00:00 2001 From: Czar Echavez Date: Mon, 9 Sep 2024 10:54:42 +0100 Subject: [PATCH 23/58] #2345: return error if db connection cannot be made --- .../simulator/system/services/web_server/web_server.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/primaite/simulator/system/services/web_server/web_server.py b/src/primaite/simulator/system/services/web_server/web_server.py index f9f561df..0df47999 100644 --- a/src/primaite/simulator/system/services/web_server/web_server.py +++ b/src/primaite/simulator/system/services/web_server/web_server.py @@ -119,9 +119,10 @@ class WebServer(Service): if path.startswith("users"): # get data from DatabaseServer # get all users - if self._establish_db_connection(): + if not self._establish_db_connection(): # unable to create a db connection response.status_code = HttpStatusCode.INTERNAL_SERVER_ERROR + return response if self.db_connection.query("SELECT"): # query succeeded From 3cecf169bafab4b059ee27e3156f365e1bb9f3c9 Mon Sep 17 00:00:00 2001 From: Nick Todd Date: Mon, 9 Sep 2024 16:30:36 +0100 Subject: [PATCH 24/58] #2829: Update and add nmne tests --- .../agent/observations/nic_observations.py | 3 ++- src/primaite/game/game.py | 2 +- .../observations/test_nic_observations.py | 8 +++++++ .../network/test_capture_nmne.py | 22 +++++++++++++++++++ 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/primaite/game/agent/observations/nic_observations.py b/src/primaite/game/agent/observations/nic_observations.py index c5da8767..ed2bb7f9 100644 --- a/src/primaite/game/agent/observations/nic_observations.py +++ b/src/primaite/game/agent/observations/nic_observations.py @@ -14,8 +14,9 @@ from primaite.simulator.network.transmission.transport_layer import Port class NICObservation(AbstractObservation, identifier="NETWORK_INTERFACE"): """Status information about a network interface within the simulation environment.""" + capture_nmne: ClassVar[bool] = NMNEConfig().capture_nmne - "A dataclass defining malicious network events to be captured." + "A Boolean specifying whether malicious network events should be captured." class ConfigSchema(AbstractObservation.ConfigSchema): """Configuration schema for NICObservation.""" diff --git a/src/primaite/game/game.py b/src/primaite/game/game.py index 9afdbea6..64cdf63b 100644 --- a/src/primaite/game/game.py +++ b/src/primaite/game/game.py @@ -9,8 +9,8 @@ from pydantic import BaseModel, ConfigDict from primaite import DEFAULT_BANDWIDTH, getLogger from primaite.game.agent.actions import ActionManager from primaite.game.agent.interface import AbstractAgent, AgentSettings, ProxyAgent -from primaite.game.agent.observations.observation_manager import ObservationManager from primaite.game.agent.observations import NICObservation +from primaite.game.agent.observations.observation_manager import ObservationManager from primaite.game.agent.rewards import RewardFunction, SharedReward from primaite.game.agent.scripted_agents.data_manipulation_bot import DataManipulationAgent from primaite.game.agent.scripted_agents.probabilistic_agent import ProbabilisticAgent diff --git a/tests/integration_tests/game_layer/observations/test_nic_observations.py b/tests/integration_tests/game_layer/observations/test_nic_observations.py index ef789ba7..ced598f0 100644 --- a/tests/integration_tests/game_layer/observations/test_nic_observations.py +++ b/tests/integration_tests/game_layer/observations/test_nic_observations.py @@ -77,6 +77,14 @@ def test_nic(simulation): nic_obs = NICObservation(where=["network", "nodes", pc.hostname, "NICs", 1], include_nmne=True) + # The Simulation object created by the fixture also creates the + # NICObservation class with the NICObservation.capture_nmnme class variable + # set to False. Under normal (non-test) circumstances this class variable + # is set from a config file such as data_manipulation.yaml. So although + # capture_nmne is set to True in the NetworkInterface class it's still False + # in the NICObservation class so we set it now. + nic_obs.capture_nmne = True + # Set the NMNE configuration to capture DELETE/ENCRYPT queries as MNEs nmne_config = { "capture_nmne": True, # Enable the capture of MNEs diff --git a/tests/integration_tests/network/test_capture_nmne.py b/tests/integration_tests/network/test_capture_nmne.py index debf5b1c..1499df9a 100644 --- a/tests/integration_tests/network/test_capture_nmne.py +++ b/tests/integration_tests/network/test_capture_nmne.py @@ -1,5 +1,11 @@ # © Crown-owned copyright 2024, Defence Science and Technology Laboratory UK +from itertools import product + +import yaml + +from primaite.config.load import data_manipulation_config_path from primaite.game.agent.observations.nic_observations import NICObservation +from primaite.session.environment import PrimaiteGymEnv from primaite.simulator.network.container import Network from primaite.simulator.network.hardware.nodes.host.host_node import NIC from primaite.simulator.network.hardware.nodes.host.server import Server @@ -277,3 +283,19 @@ def test_capture_nmne_observations(uc2_network: Network): assert web_nic_obs["outbound"] == expected_nmne assert db_nic_obs["inbound"] == expected_nmne uc2_network.apply_timestep(timestep=0) + + +def test_nmne_parameter_settings(): + """ + Check that the four permutations of the values of capture_nmne and + include_nmne work as expected. + """ + + with open(data_manipulation_config_path(), "r") as f: + cfg = yaml.safe_load(f) + + DEFENDER = 3 + for capture, include in product([True, False], [True, False]): + cfg["simulation"]["network"]["nmne_config"]["capture_nmne"] = capture + cfg["agents"][DEFENDER]["observation_space"]["options"]["components"][0]["options"]["include_nmne"] = include + PrimaiteGymEnv(env_config=cfg) From 82887bdb177258c1d9633b4860833b02c7b640f9 Mon Sep 17 00:00:00 2001 From: Czar Echavez Date: Tue, 10 Sep 2024 10:52:00 +0100 Subject: [PATCH 25/58] #2842: apply PR suggestions --- .../game_layer/actions/test_user_account_actions.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/integration_tests/game_layer/actions/test_user_account_actions.py b/tests/integration_tests/game_layer/actions/test_user_account_actions.py index bb36ce73..2fbf5a8c 100644 --- a/tests/integration_tests/game_layer/actions/test_user_account_actions.py +++ b/tests/integration_tests/game_layer/actions/test_user_account_actions.py @@ -28,7 +28,7 @@ def test_user_account_add_user_action(game_and_agent_fixture): # add admin account action = ( "NODE_ACCOUNTS_ADD_USER", - {"node_id": 0, "username": "soccon_diiz", "password": "nuts", "is_admin": True}, + {"node_id": 0, "username": "admin_2", "password": "e-tronic-boogaloo", "is_admin": True}, ) agent.store_action(action) game.step() @@ -39,7 +39,7 @@ def test_user_account_add_user_action(game_and_agent_fixture): # add non admin account action = ( "NODE_ACCOUNTS_ADD_USER", - {"node_id": 0, "username": "mike_rotch", "password": "password", "is_admin": False}, + {"node_id": 0, "username": "leeroy.jenkins", "password": "no_plan_needed", "is_admin": False}, ) agent.store_action(action) game.step() @@ -53,7 +53,7 @@ def test_user_account_disable_user_action(game_and_agent_fixture): game, agent = game_and_agent_fixture client_1 = game.simulation.network.get_node_by_hostname("client_1") - client_1.user_manager.add_user(username="test", password="icles", is_admin=True) + client_1.user_manager.add_user(username="test", password="password", is_admin=True) assert len(client_1.user_manager.users) == 2 # new user added assert len(client_1.user_manager.admins) == 2 @@ -79,7 +79,7 @@ def test_user_account_change_password_action(game_and_agent_fixture): game, agent = game_and_agent_fixture client_1 = game.simulation.network.get_node_by_hostname("client_1") - client_1.user_manager.add_user(username="test", password="icles", is_admin=True) + client_1.user_manager.add_user(username="test", password="password", is_admin=True) test_user = client_1.user_manager.users.get("test") assert test_user.password == "icles" @@ -87,7 +87,7 @@ def test_user_account_change_password_action(game_and_agent_fixture): # change account password action = ( "NODE_ACCOUNTS_CHANGE_PASSWORD", - {"node_id": 0, "username": "test", "current_password": "icles", "new_password": "2Hard_2_Hack"}, + {"node_id": 0, "username": "test", "current_password": "password", "new_password": "2Hard_2_Hack"}, ) agent.store_action(action) game.step() From 1c6e8b2a95227606ba99a66fb32bf40fe0e1225b Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Tue, 10 Sep 2024 11:39:04 +0100 Subject: [PATCH 26/58] #2775 - Removed default ARP rule for routers and added logic when handling ARP traffic --- .../simulator/network/hardware/nodes/network/router.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/primaite/simulator/network/hardware/nodes/network/router.py b/src/primaite/simulator/network/hardware/nodes/network/router.py index ceb91695..bfc90984 100644 --- a/src/primaite/simulator/network/hardware/nodes/network/router.py +++ b/src/primaite/simulator/network/hardware/nodes/network/router.py @@ -467,6 +467,14 @@ class AccessControlList(SimComponent): """Check if a packet with the given properties is permitted through the ACL.""" permitted = False rule: ACLRule = None + + # check if the frame is ARP and if ACL rules apply. + if frame.udp: + if frame.is_arp: + permitted = True + rule: ACLRule = None + return permitted, rule + for _rule in self._acl: if not _rule: continue @@ -1257,7 +1265,6 @@ class Router(NetworkNode): Initializes the router's ACL (Access Control List) with default rules, permitting essential protocols like ARP and ICMP, which are necessary for basic network operations and diagnostics. """ - self.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.ARP, dst_port=Port.ARP, position=22) self.acl.add_rule(action=ACLAction.PERMIT, protocol=IPProtocol.ICMP, position=23) def setup_for_episode(self, episode: int): From 19d6fa2174b0d304ff4abc9a159087383d842c6f Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Wed, 11 Sep 2024 10:12:07 +0100 Subject: [PATCH 27/58] #2775 - Updated to look neater --- .../network/hardware/nodes/network/router.py | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/primaite/simulator/network/hardware/nodes/network/router.py b/src/primaite/simulator/network/hardware/nodes/network/router.py index bfc90984..3b267200 100644 --- a/src/primaite/simulator/network/hardware/nodes/network/router.py +++ b/src/primaite/simulator/network/hardware/nodes/network/router.py @@ -468,13 +468,6 @@ class AccessControlList(SimComponent): permitted = False rule: ACLRule = None - # check if the frame is ARP and if ACL rules apply. - if frame.udp: - if frame.is_arp: - permitted = True - rule: ACLRule = None - return permitted, rule - for _rule in self._acl: if not _rule: continue @@ -1376,6 +1369,12 @@ class Router(NetworkNode): return False + def subject_to_acl(self, frame: Frame) -> bool: + """Check that frame is subject to ACL rules.""" + if frame.ip.protocol == IPProtocol.UDP and frame.udp.dst_port == Port.ARP: + return False + return True + def receive_frame(self, frame: Frame, from_network_interface: RouterInterface): """ Processes an incoming frame received on one of the router's interfaces. @@ -1389,8 +1388,12 @@ class Router(NetworkNode): if self.operating_state != NodeOperatingState.ON: return - # Check if it's permitted - permitted, rule = self.acl.is_permitted(frame) + if self.subject_to_acl(frame=frame): + # Check if it's permitted + permitted, rule = self.acl.is_permitted(frame) + else: + permitted = True + rule = None if not permitted: at_port = self._get_port_of_nic(from_network_interface) From a2005df9f0d0d1d3f32051058d5bc3e4b7cfcedf Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Wed, 11 Sep 2024 10:56:44 +0100 Subject: [PATCH 28/58] #2775 - Documentation updates --- docs/source/configuration/simulation/nodes/router.rst | 6 +----- docs/source/simulation_components/network/network.rst | 9 +-------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/docs/source/configuration/simulation/nodes/router.rst b/docs/source/configuration/simulation/nodes/router.rst index ac9d6411..b8741521 100644 --- a/docs/source/configuration/simulation/nodes/router.rst +++ b/docs/source/configuration/simulation/nodes/router.rst @@ -74,7 +74,7 @@ The subnet mask setting for the port. ``acl`` ------- -Sets up the ACL rules for the router. +Sets up the ACL rules for the router to apply to layer-3 traffic. These are not applied to layer-2 traffic such as ARP. e.g. @@ -85,10 +85,6 @@ e.g. ... acl: 1: - action: PERMIT - src_port: ARP - dst_port: ARP - 2: action: PERMIT protocol: ICMP diff --git a/docs/source/simulation_components/network/network.rst b/docs/source/simulation_components/network/network.rst index 636ffbcc..00781307 100644 --- a/docs/source/simulation_components/network/network.rst +++ b/docs/source/simulation_components/network/network.rst @@ -97,17 +97,10 @@ we'll use the following Network that has a client, server, two switches, and a r network.connect(endpoint_a=switch_2.network_interface[1], endpoint_b=client_1.network_interface[1]) network.connect(endpoint_a=switch_1.network_interface[1], endpoint_b=server_1.network_interface[1]) -8. Add ACL rules on the Router to allow ARP and ICMP traffic. +8. Add an ACL rules on the Router to allow ICMP traffic. .. code-block:: python - router_1.acl.add_rule( - action=ACLAction.PERMIT, - src_port=Port.ARP, - dst_port=Port.ARP, - position=22 - ) - router_1.acl.add_rule( action=ACLAction.PERMIT, protocol=IPProtocol.ICMP, From d5f1d0fda184aa4cfdf9f7ae1fb032f7073ed145 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Wed, 11 Sep 2024 11:28:27 +0100 Subject: [PATCH 29/58] #2775 - Updated Changelog and bring up to date with dev --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2989247..77b7bb7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added - Log observation space data by episode and step. +- ACL's are no longer applied to layer-2 traffic. ## [3.3.0] - 2024-09-04 ### Added From f95501f2a872099f616fd5cabfac75d0ddaf4b18 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Wed, 11 Sep 2024 15:12:36 +0100 Subject: [PATCH 30/58] #2775 - Purging of more instances where the ARP acl rule is set and no longer necessary. Added a new test to show ARP is unaffected by ACL rules and actioned review comments --- .../simulation_components/network/network.rst | 2 +- .../network/nodes/wireless_router.rst | 1 - src/primaite/simulator/network/creation.py | 2 -- .../network/hardware/nodes/network/router.py | 3 +++ src/primaite/simulator/network/networks.py | 4 ---- .../network/transmission/data_link_layer.py | 2 +- tests/conftest.py | 3 --- .../game_layer/test_actions.py | 14 ++++++------- .../integration_tests/network/test_routing.py | 1 - .../network/test_wireless_router.py | 1 - tests/integration_tests/system/test_arp.py | 20 ++++++++++++++++++- .../_system/_services/test_terminal.py | 1 - 12 files changed, 31 insertions(+), 23 deletions(-) diff --git a/docs/source/simulation_components/network/network.rst b/docs/source/simulation_components/network/network.rst index 00781307..b04d6ecf 100644 --- a/docs/source/simulation_components/network/network.rst +++ b/docs/source/simulation_components/network/network.rst @@ -97,7 +97,7 @@ we'll use the following Network that has a client, server, two switches, and a r network.connect(endpoint_a=switch_2.network_interface[1], endpoint_b=client_1.network_interface[1]) network.connect(endpoint_a=switch_1.network_interface[1], endpoint_b=server_1.network_interface[1]) -8. Add an ACL rules on the Router to allow ICMP traffic. +8. Add an ACL rule on the Router to allow ICMP traffic. .. code-block:: python diff --git a/docs/source/simulation_components/network/nodes/wireless_router.rst b/docs/source/simulation_components/network/nodes/wireless_router.rst index c78c8419..02fe73db 100644 --- a/docs/source/simulation_components/network/nodes/wireless_router.rst +++ b/docs/source/simulation_components/network/nodes/wireless_router.rst @@ -102,7 +102,6 @@ ICMP traffic, ensuring basic network connectivity and ping functionality. network.connect(pc_a.network_interface[1], router_1.router_interface) # Configure Router 1 ACLs - router_1.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.ARP, dst_port=Port.ARP, position=22) router_1.acl.add_rule(action=ACLAction.PERMIT, protocol=IPProtocol.ICMP, position=23) # Configure PC B diff --git a/src/primaite/simulator/network/creation.py b/src/primaite/simulator/network/creation.py index 61a37a90..b801a38e 100644 --- a/src/primaite/simulator/network/creation.py +++ b/src/primaite/simulator/network/creation.py @@ -7,7 +7,6 @@ from primaite.simulator.network.hardware.nodes.host.computer import Computer from primaite.simulator.network.hardware.nodes.network.router import ACLAction, Router from primaite.simulator.network.hardware.nodes.network.switch import Switch from primaite.simulator.network.transmission.network_layer import IPProtocol -from primaite.simulator.network.transmission.transport_layer import Port def num_of_switches_required(num_nodes: int, max_network_interface: int = 24) -> int: @@ -98,7 +97,6 @@ def create_office_lan( default_gateway = IPv4Address(f"192.168.{subnet_base}.1") router = Router(hostname=f"router_{lan_name}", start_up_duration=0) router.power_on() - router.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.ARP, dst_port=Port.ARP, position=22) router.acl.add_rule(action=ACLAction.PERMIT, protocol=IPProtocol.ICMP, position=23) network.add_node(router) router.configure_port(port=1, ip_address=default_gateway, subnet_mask="255.255.255.0") diff --git a/src/primaite/simulator/network/hardware/nodes/network/router.py b/src/primaite/simulator/network/hardware/nodes/network/router.py index 3b267200..e86b1843 100644 --- a/src/primaite/simulator/network/hardware/nodes/network/router.py +++ b/src/primaite/simulator/network/hardware/nodes/network/router.py @@ -1388,6 +1388,9 @@ class Router(NetworkNode): if self.operating_state != NodeOperatingState.ON: return + print("£££££££££££££££££££££££££££££") + print(f"Frame received is: {frame}") + if self.subject_to_acl(frame=frame): # Check if it's permitted permitted, rule = self.acl.is_permitted(frame) diff --git a/src/primaite/simulator/network/networks.py b/src/primaite/simulator/network/networks.py index cb0965eb..ae6476c1 100644 --- a/src/primaite/simulator/network/networks.py +++ b/src/primaite/simulator/network/networks.py @@ -79,8 +79,6 @@ def client_server_routed() -> Network: server_1.power_on() network.connect(endpoint_b=server_1.network_interface[1], endpoint_a=switch_1.network_interface[1]) - router_1.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.ARP, dst_port=Port.ARP, position=22) - router_1.acl.add_rule(action=ACLAction.PERMIT, protocol=IPProtocol.ICMP, position=23) return network @@ -271,8 +269,6 @@ def arcd_uc2_network() -> Network: security_suite.connect_nic(NIC(ip_address="192.168.10.110", subnet_mask="255.255.255.0")) network.connect(endpoint_b=security_suite.network_interface[2], endpoint_a=switch_2.network_interface[7]) - router_1.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.ARP, dst_port=Port.ARP, position=22) - router_1.acl.add_rule(action=ACLAction.PERMIT, protocol=IPProtocol.ICMP, position=23) # Allow PostgreSQL requests diff --git a/src/primaite/simulator/network/transmission/data_link_layer.py b/src/primaite/simulator/network/transmission/data_link_layer.py index 159eca7f..9d8a0a1c 100644 --- a/src/primaite/simulator/network/transmission/data_link_layer.py +++ b/src/primaite/simulator/network/transmission/data_link_layer.py @@ -161,7 +161,7 @@ class Frame(BaseModel): """ Checks if the Frame is an ARP (Address Resolution Protocol) packet. - This is determined by checking if the destination port of the TCP header is equal to the ARP port. + This is determined by checking if the destination port of the UDP header is equal to the ARP port. :return: True if the Frame is an ARP packet, otherwise False. """ diff --git a/tests/conftest.py b/tests/conftest.py index 1bbff8f2..e9aeada8 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -350,7 +350,6 @@ def install_stuff_to_sim(sim: Simulation): network.connect(endpoint_a=server_2.network_interface[1], endpoint_b=switch_2.network_interface[2]) # 2: Configure base ACL - router.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.ARP, dst_port=Port.ARP, position=22) router.acl.add_rule(action=ACLAction.PERMIT, protocol=IPProtocol.ICMP, position=23) router.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.DNS, dst_port=Port.DNS, position=1) router.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.HTTP, dst_port=Port.HTTP, position=3) @@ -382,8 +381,6 @@ def install_stuff_to_sim(sim: Simulation): assert acl_rule.src_port == acl_rule.dst_port == Port.DNS elif i == 3: assert acl_rule.src_port == acl_rule.dst_port == Port.HTTP - elif i == 22: - assert acl_rule.src_port == acl_rule.dst_port == Port.ARP elif i == 23: assert acl_rule.protocol == IPProtocol.ICMP elif i == 24: diff --git a/tests/integration_tests/game_layer/test_actions.py b/tests/integration_tests/game_layer/test_actions.py index a1005f34..ecd21a03 100644 --- a/tests/integration_tests/game_layer/test_actions.py +++ b/tests/integration_tests/game_layer/test_actions.py @@ -115,7 +115,7 @@ def test_router_acl_addrule_integration(game_and_agent: Tuple[PrimaiteGame, Prox server_1 = game.simulation.network.get_node_by_hostname("server_1") server_2 = game.simulation.network.get_node_by_hostname("server_2") router = game.simulation.network.get_node_by_hostname("router") - assert router.acl.num_rules == 4 + assert router.acl.num_rules == 3 assert client_1.ping("10.0.2.3") # client_1 can ping server_2 assert server_2.ping("10.0.1.2") # server_2 can ping client_1 @@ -138,8 +138,8 @@ def test_router_acl_addrule_integration(game_and_agent: Tuple[PrimaiteGame, Prox agent.store_action(action) game.step() - # 3: Check that the ACL now has 5 rules, and that client 1 cannot ping server 2 - assert router.acl.num_rules == 5 + # 3: Check that the ACL now has 4 rules, and that client 1 cannot ping server 2 + assert router.acl.num_rules == 4 assert not client_1.ping("10.0.2.3") # Cannot ping server_2 assert client_1.ping("10.0.2.2") # Can ping server_1 assert not server_2.ping( @@ -165,8 +165,8 @@ def test_router_acl_addrule_integration(game_and_agent: Tuple[PrimaiteGame, Prox agent.store_action(action) game.step() - # 5: Check that the ACL now has 6 rules, but that server_1 can still ping server_2 - assert router.acl.num_rules == 6 + # 5: Check that the ACL now has 5 rules, but that server_1 can still ping server_2 + assert router.acl.num_rules == 5 assert server_1.ping("10.0.2.3") # Can ping server_2 @@ -195,8 +195,8 @@ def test_router_acl_removerule_integration(game_and_agent: Tuple[PrimaiteGame, P agent.store_action(action) game.step() - # 3: Check that the ACL now has 3 rules, and that client 1 cannot access example.com - assert router.acl.num_rules == 3 + # 3: Check that the ACL now has 2 rules, and that client 1 cannot access example.com + assert router.acl.num_rules == 2 assert not browser.get_webpage() client_1.software_manager.software.get("DNSClient").dns_cache.clear() assert client_1.ping("10.0.2.2") # pinging still works because ICMP is allowed diff --git a/tests/integration_tests/network/test_routing.py b/tests/integration_tests/network/test_routing.py index 62b58cbd..e234b4e5 100644 --- a/tests/integration_tests/network/test_routing.py +++ b/tests/integration_tests/network/test_routing.py @@ -73,7 +73,6 @@ def multi_hop_network() -> Network: router_1.enable_port(2) # Configure Router 1 ACLs - router_1.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.ARP, dst_port=Port.ARP, position=22) router_1.acl.add_rule(action=ACLAction.PERMIT, protocol=IPProtocol.ICMP, position=23) # Configure PC B diff --git a/tests/integration_tests/network/test_wireless_router.py b/tests/integration_tests/network/test_wireless_router.py index 733de6f6..9a22208b 100644 --- a/tests/integration_tests/network/test_wireless_router.py +++ b/tests/integration_tests/network/test_wireless_router.py @@ -37,7 +37,6 @@ def wireless_wan_network(): network.connect(pc_a.network_interface[1], router_1.network_interface[2]) # Configure Router 1 ACLs - router_1.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.ARP, dst_port=Port.ARP, position=22) router_1.acl.add_rule(action=ACLAction.PERMIT, protocol=IPProtocol.ICMP, position=23) # Configure PC B diff --git a/tests/integration_tests/system/test_arp.py b/tests/integration_tests/system/test_arp.py index be8656aa..6c7e853a 100644 --- a/tests/integration_tests/system/test_arp.py +++ b/tests/integration_tests/system/test_arp.py @@ -1,5 +1,7 @@ # © Crown-owned copyright 2024, Defence Science and Technology Laboratory UK -from primaite.simulator.network.hardware.nodes.network.router import RouterARP +from primaite.simulator.network.hardware.nodes.network.router import ACLAction, Router, RouterARP +from primaite.simulator.network.transmission.network_layer import IPProtocol +from primaite.simulator.network.transmission.transport_layer import Port from primaite.simulator.system.services.arp.arp import ARP from tests.integration_tests.network.test_routing import multi_hop_network @@ -48,3 +50,19 @@ def test_arp_fails_for_network_address_between_routers(multi_hop_network): actual_result = router_1_arp.get_arp_cache_mac_address(router_1.network_interface[1].ip_network.network_address) assert actual_result == expected_result + + +def test_arp_not_affected_by_acl(multi_hop_network): + pc_a = multi_hop_network.get_node_by_hostname("pc_a") + router_1: Router = multi_hop_network.get_node_by_hostname("router_1") + + # Add explicit rule to block ARP traffic. This shouldn't actually stop ARP traffic + # as it operates a different layer within the network. + router_1.acl.add_rule(action=ACLAction.DENY, src_port=Port.ARP, dst_port=Port.ARP, position=23) + + pc_a_arp: ARP = pc_a.software_manager.arp + + expected_result = router_1.network_interface[2].mac_address + actual_result = pc_a_arp.get_arp_cache_mac_address(router_1.network_interface[2].ip_address) + + assert actual_result == expected_result diff --git a/tests/unit_tests/_primaite/_simulator/_system/_services/test_terminal.py b/tests/unit_tests/_primaite/_simulator/_system/_services/test_terminal.py index 41858b90..3c3daa61 100644 --- a/tests/unit_tests/_primaite/_simulator/_system/_services/test_terminal.py +++ b/tests/unit_tests/_primaite/_simulator/_system/_services/test_terminal.py @@ -77,7 +77,6 @@ def wireless_wan_network(): network.connect(pc_a.network_interface[1], router_1.network_interface[2]) # Configure Router 1 ACLs - router_1.acl.add_rule(action=ACLAction.PERMIT, src_port=Port.ARP, dst_port=Port.ARP, position=22) router_1.acl.add_rule(action=ACLAction.PERMIT, protocol=IPProtocol.ICMP, position=23) # add ACL rule to allow SSH traffic From 85863b1972516a9c40b441e23ff2865bd82fe437 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Wed, 11 Sep 2024 15:36:51 +0100 Subject: [PATCH 31/58] #2775 - Removed a print statement committed in error and updated the checks done in subject_to_acl following review --- .../simulator/network/hardware/nodes/network/router.py | 5 +---- .../simulator/network/transmission/data_link_layer.py | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/primaite/simulator/network/hardware/nodes/network/router.py b/src/primaite/simulator/network/hardware/nodes/network/router.py index e86b1843..8cdf3f86 100644 --- a/src/primaite/simulator/network/hardware/nodes/network/router.py +++ b/src/primaite/simulator/network/hardware/nodes/network/router.py @@ -1371,7 +1371,7 @@ class Router(NetworkNode): def subject_to_acl(self, frame: Frame) -> bool: """Check that frame is subject to ACL rules.""" - if frame.ip.protocol == IPProtocol.UDP and frame.udp.dst_port == Port.ARP: + if frame.ip.protocol == IPProtocol.UDP and frame.is_arp: return False return True @@ -1388,9 +1388,6 @@ class Router(NetworkNode): if self.operating_state != NodeOperatingState.ON: return - print("£££££££££££££££££££££££££££££") - print(f"Frame received is: {frame}") - if self.subject_to_acl(frame=frame): # Check if it's permitted permitted, rule = self.acl.is_permitted(frame) diff --git a/src/primaite/simulator/network/transmission/data_link_layer.py b/src/primaite/simulator/network/transmission/data_link_layer.py index 9d8a0a1c..86a6038b 100644 --- a/src/primaite/simulator/network/transmission/data_link_layer.py +++ b/src/primaite/simulator/network/transmission/data_link_layer.py @@ -161,11 +161,11 @@ class Frame(BaseModel): """ Checks if the Frame is an ARP (Address Resolution Protocol) packet. - This is determined by checking if the destination port of the UDP header is equal to the ARP port. + This is determined by checking if the destination and source port of the UDP header is equal to the ARP port. :return: True if the Frame is an ARP packet, otherwise False. """ - return self.udp.dst_port == Port.ARP + return self.udp.dst_port == Port.ARP and self.udp.src_port == Port.ARP @property def is_icmp(self) -> bool: From f908f9b23e43f910ee8b1e732ca546e2d3b954ca Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Wed, 11 Sep 2024 15:50:14 +0100 Subject: [PATCH 32/58] #2775 - Actioning review comments --- tests/integration_tests/game_layer/test_actions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration_tests/game_layer/test_actions.py b/tests/integration_tests/game_layer/test_actions.py index ecd21a03..a9231632 100644 --- a/tests/integration_tests/game_layer/test_actions.py +++ b/tests/integration_tests/game_layer/test_actions.py @@ -106,7 +106,7 @@ def test_router_acl_addrule_integration(game_and_agent: Tuple[PrimaiteGame, Prox """ Test that the RouterACLAddRuleAction can form a request and that it is accepted by the simulation. - The ACL starts off with 4 rules, and we add a rule, and check that the ACL now has 5 rules. + The ACL starts off with 3 rules, and we add a rule, and check that the ACL now has 4 rules. """ game, agent = game_and_agent From 8bd20275d085fc79b016e690ebabff0b4d52008f Mon Sep 17 00:00:00 2001 From: Czar Echavez Date: Thu, 12 Sep 2024 10:01:12 +0100 Subject: [PATCH 33/58] #2842: fix test --- .../game_layer/actions/test_user_account_actions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration_tests/game_layer/actions/test_user_account_actions.py b/tests/integration_tests/game_layer/actions/test_user_account_actions.py index 2fbf5a8c..f97716c6 100644 --- a/tests/integration_tests/game_layer/actions/test_user_account_actions.py +++ b/tests/integration_tests/game_layer/actions/test_user_account_actions.py @@ -82,7 +82,7 @@ def test_user_account_change_password_action(game_and_agent_fixture): client_1.user_manager.add_user(username="test", password="password", is_admin=True) test_user = client_1.user_manager.users.get("test") - assert test_user.password == "icles" + assert test_user.password == "password" # change account password action = ( From 7c26ca9d79d14bc529368f455909a097c8a4614c Mon Sep 17 00:00:00 2001 From: Czar Echavez Date: Thu, 12 Sep 2024 16:07:14 +0100 Subject: [PATCH 34/58] #2864: add configuration for services_requires_scan and applications_requires_scan --- .../agent/observations/host_observations.py | 24 +++- .../agent/observations/node_observations.py | 12 +- .../observations/software_observation.py | 33 ++++-- .../_game/_agent/test_observations.py | 111 +++++++++++++++++- 4 files changed, 169 insertions(+), 11 deletions(-) diff --git a/src/primaite/game/agent/observations/host_observations.py b/src/primaite/game/agent/observations/host_observations.py index 4419ccc7..3371a99c 100644 --- a/src/primaite/game/agent/observations/host_observations.py +++ b/src/primaite/game/agent/observations/host_observations.py @@ -52,6 +52,14 @@ class HostObservation(AbstractObservation, identifier="HOST"): """ If True, files and folders must be scanned to update the health state. If False, true state is always shown. """ + services_requires_scan: Optional[bool] = None + """ + If True, services must be scanned to update the health state. If False, true state is always shown. + """ + applications_requires_scan: Optional[bool] = None + """ + If True, applications must be scanned to update the health state. If False, true state is always shown. + """ include_users: Optional[bool] = True """If True, report user session information.""" @@ -71,6 +79,8 @@ class HostObservation(AbstractObservation, identifier="HOST"): monitored_traffic: Optional[Dict], include_num_access: bool, file_system_requires_scan: bool, + services_requires_scan: bool, + applications_requires_scan: bool, include_users: bool, ) -> None: """ @@ -106,6 +116,12 @@ class HostObservation(AbstractObservation, identifier="HOST"): :param file_system_requires_scan: If True, the files and folders must be scanned to update the health state. If False, the true state is always shown. :type file_system_requires_scan: bool + :param services_requires_scan: If True, services must be scanned to update the health state. + If False, the true state is always shown. + :type services_requires_scan: bool + :param applications_requires_scan: If True, applications must be scanned to update the health state. + If False, the true state is always shown. + :type applications_requires_scan: bool :param include_users: If True, report user session information. :type include_users: bool """ @@ -119,7 +135,7 @@ class HostObservation(AbstractObservation, identifier="HOST"): # Ensure lists have lengths equal to specified counts by truncating or padding self.services: List[ServiceObservation] = services while len(self.services) < num_services: - self.services.append(ServiceObservation(where=None)) + self.services.append(ServiceObservation(where=None, services_requires_scan=services_requires_scan)) while len(self.services) > num_services: truncated_service = self.services.pop() msg = f"Too many services in Node observation space for node. Truncating service {truncated_service.where}" @@ -127,7 +143,9 @@ class HostObservation(AbstractObservation, identifier="HOST"): self.applications: List[ApplicationObservation] = applications while len(self.applications) < num_applications: - self.applications.append(ApplicationObservation(where=None)) + self.applications.append( + ApplicationObservation(where=None, applications_requires_scan=applications_requires_scan) + ) while len(self.applications) > num_applications: truncated_application = self.applications.pop() msg = f"Too many applications in Node observation space for node. Truncating {truncated_application.where}" @@ -293,5 +311,7 @@ class HostObservation(AbstractObservation, identifier="HOST"): monitored_traffic=config.monitored_traffic, include_num_access=config.include_num_access, file_system_requires_scan=config.file_system_requires_scan, + services_requires_scan=config.services_requires_scan, + applications_requires_scan=config.applications_requires_scan, include_users=config.include_users, ) diff --git a/src/primaite/game/agent/observations/node_observations.py b/src/primaite/game/agent/observations/node_observations.py index e263cadb..85de5396 100644 --- a/src/primaite/game/agent/observations/node_observations.py +++ b/src/primaite/game/agent/observations/node_observations.py @@ -45,7 +45,13 @@ class NodesObservation(AbstractObservation, identifier="NODES"): include_num_access: Optional[bool] = None """Flag to include the number of accesses.""" file_system_requires_scan: bool = True - """If True, the folder must be scanned to update the health state. Tf False, the true state is always shown.""" + """If True, the folder must be scanned to update the health state. If False, the true state is always shown.""" + services_requires_scan: bool = True + """If True, the services must be scanned to update the health state. + If False, the true state is always shown.""" + applications_requires_scan: bool = True + """If True, the applications must be scanned to update the health state. + If False, the true state is always shown.""" include_users: Optional[bool] = True """If True, report user session information.""" num_ports: Optional[int] = None @@ -193,6 +199,10 @@ class NodesObservation(AbstractObservation, identifier="NODES"): host_config.include_num_access = config.include_num_access if host_config.file_system_requires_scan is None: host_config.file_system_requires_scan = config.file_system_requires_scan + if host_config.services_requires_scan is None: + host_config.services_requires_scan = config.services_requires_scan + if host_config.applications_requires_scan is None: + host_config.applications_requires_scan = config.applications_requires_scan if host_config.include_users is None: host_config.include_users = config.include_users diff --git a/src/primaite/game/agent/observations/software_observation.py b/src/primaite/game/agent/observations/software_observation.py index 15cd2447..2075ce43 100644 --- a/src/primaite/game/agent/observations/software_observation.py +++ b/src/primaite/game/agent/observations/software_observation.py @@ -1,7 +1,7 @@ # © Crown-owned copyright 2024, Defence Science and Technology Laboratory UK from __future__ import annotations -from typing import Dict +from typing import Dict, Optional from gymnasium import spaces from gymnasium.core import ObsType @@ -19,7 +19,10 @@ class ServiceObservation(AbstractObservation, identifier="SERVICE"): service_name: str """Name of the service, used for querying simulation state dictionary""" - def __init__(self, where: WhereType) -> None: + services_requires_scan: Optional[bool] = None + """If True, services must be scanned to update the health state. If False, true state is always shown.""" + + def __init__(self, where: WhereType, services_requires_scan: bool) -> None: """ Initialise a service observation instance. @@ -28,6 +31,7 @@ class ServiceObservation(AbstractObservation, identifier="SERVICE"): :type where: WhereType """ self.where = where + self.services_requires_scan = services_requires_scan self.default_observation = {"operating_status": 0, "health_status": 0} def observe(self, state: Dict) -> ObsType: @@ -44,7 +48,9 @@ class ServiceObservation(AbstractObservation, identifier="SERVICE"): return self.default_observation return { "operating_status": service_state["operating_state"], - "health_status": service_state["health_state_visible"], + "health_status": service_state["health_state_visible"] + if self.services_requires_scan + else service_state["health_state_actual"], } @property @@ -70,7 +76,9 @@ class ServiceObservation(AbstractObservation, identifier="SERVICE"): :return: Constructed service observation instance. :rtype: ServiceObservation """ - return cls(where=parent_where + ["services", config.service_name]) + return cls( + where=parent_where + ["services", config.service_name], services_requires_scan=config.services_requires_scan + ) class ApplicationObservation(AbstractObservation, identifier="APPLICATION"): @@ -82,7 +90,12 @@ class ApplicationObservation(AbstractObservation, identifier="APPLICATION"): application_name: str """Name of the application, used for querying simulation state dictionary""" - def __init__(self, where: WhereType) -> None: + applications_requires_scan: Optional[bool] = None + """ + If True, applications must be scanned to update the health state. If False, true state is always shown. + """ + + def __init__(self, where: WhereType, applications_requires_scan: bool) -> None: """ Initialise an application observation instance. @@ -92,6 +105,7 @@ class ApplicationObservation(AbstractObservation, identifier="APPLICATION"): :type where: WhereType """ self.where = where + self.applications_requires_scan = applications_requires_scan self.default_observation = {"operating_status": 0, "health_status": 0, "num_executions": 0} # TODO: allow these to be configured in yaml @@ -128,7 +142,9 @@ class ApplicationObservation(AbstractObservation, identifier="APPLICATION"): return self.default_observation return { "operating_status": application_state["operating_state"], - "health_status": application_state["health_state_visible"], + "health_status": application_state["health_state_visible"] + if self.applications_requires_scan + else application_state["health_state_actual"], "num_executions": self._categorise_num_executions(application_state["num_executions"]), } @@ -161,4 +177,7 @@ class ApplicationObservation(AbstractObservation, identifier="APPLICATION"): :return: Constructed application observation instance. :rtype: ApplicationObservation """ - return cls(where=parent_where + ["applications", config.application_name]) + return cls( + where=parent_where + ["applications", config.application_name], + applications_requires_scan=config.applications_requires_scan, + ) diff --git a/tests/unit_tests/_primaite/_game/_agent/test_observations.py b/tests/unit_tests/_primaite/_game/_agent/test_observations.py index 7f590685..583b9cbd 100644 --- a/tests/unit_tests/_primaite/_game/_agent/test_observations.py +++ b/tests/unit_tests/_primaite/_game/_agent/test_observations.py @@ -4,7 +4,7 @@ from typing import List import pytest import yaml -from primaite.game.agent.observations import ObservationManager +from primaite.game.agent.observations import ObservationManager, ServiceObservation from primaite.game.agent.observations.file_system_observations import FileObservation, FolderObservation from primaite.game.agent.observations.host_observations import HostObservation @@ -130,3 +130,112 @@ class TestFileSystemRequiresScan: [], files=[], num_files=0, include_num_access=False, file_system_requires_scan=False ) assert obs_not_requiring_scan.observe(folder_state)["health_status"] == 3 + + +class TestServiceRequiresScan: + @pytest.mark.parametrize( + ("yaml_option_string", "expected_val"), + ( + ("services_requires_scan: true", True), + ("services_requires_scan: false", False), + (" ", True), + ), + ) + def test_obs_config(self, yaml_option_string, expected_val): + """Check that the default behaviour is to set FileSystemRequiresScan to True.""" + obs_cfg_yaml = f""" + type: CUSTOM + options: + components: + - type: NODES + label: NODES + options: + hosts: + - hostname: domain_controller + - hostname: web_server + services: + - service_name: WebServer + - hostname: database_server + folders: + - folder_name: database + files: + - file_name: database.db + - hostname: backup_server + - hostname: security_suite + - hostname: client_1 + applications: + - application_name: WebBrowser + - hostname: client_2 + num_services: 1 + num_applications: 1 + num_folders: 1 + num_files: 1 + num_nics: 2 + include_num_access: false + {yaml_option_string} + include_nmne: true + monitored_traffic: + icmp: + - NONE + tcp: + - DNS + routers: + - hostname: router_1 + num_ports: 0 + ip_list: + - 192.168.1.10 + - 192.168.1.12 + - 192.168.1.14 + - 192.168.1.16 + - 192.168.1.110 + - 192.168.10.21 + - 192.168.10.22 + - 192.168.10.110 + wildcard_list: + - 0.0.0.1 + port_list: + - 80 + - 5432 + protocol_list: + - ICMP + - TCP + - UDP + num_rules: 10 + + - type: LINKS + label: LINKS + options: + link_references: + - router_1:eth-1<->switch_1:eth-8 + - router_1:eth-2<->switch_2:eth-8 + - switch_1:eth-1<->domain_controller:eth-1 + - switch_1:eth-2<->web_server:eth-1 + - switch_1:eth-3<->database_server:eth-1 + - switch_1:eth-4<->backup_server:eth-1 + - switch_1:eth-7<->security_suite:eth-1 + - switch_2:eth-1<->client_1:eth-1 + - switch_2:eth-2<->client_2:eth-1 + - switch_2:eth-7<->security_suite:eth-2 + - type: "NONE" + label: ICS + options: {{}} + + """ + + cfg = yaml.safe_load(obs_cfg_yaml) + manager = ObservationManager.from_config(cfg) + + hosts: List[HostObservation] = manager.obs.components["NODES"].hosts + for host in hosts: + services: List[ServiceObservation] = host.services + for service in services: + assert service.services_requires_scan == expected_val # Make sure services require scan by default + + def test_services_requires_scan(self): + state = {"health_state_actual": 3, "health_state_visible": 1, "operating_state": 1} + + obs_requiring_scan = ServiceObservation([], services_requires_scan=True) + assert obs_requiring_scan.observe(state)["health_status"] == 1 # should be visible value + + obs_not_requiring_scan = ServiceObservation([], services_requires_scan=False) + assert obs_not_requiring_scan.observe(state)["health_status"] == 3 # should be actual value From 1f937a4c961ae77fa11c57136d3366bd8b073439 Mon Sep 17 00:00:00 2001 From: Czar Echavez Date: Thu, 12 Sep 2024 18:54:18 +0100 Subject: [PATCH 35/58] #2864: config not being passed correctly --- .../agent/observations/host_observations.py | 4 ++++ .../observations/test_node_observations.py | 2 ++ .../test_software_observations.py | 8 ++++++-- .../_game/_agent/test_observations.py | 20 +++++++++++-------- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/primaite/game/agent/observations/host_observations.py b/src/primaite/game/agent/observations/host_observations.py index 3371a99c..c05b493a 100644 --- a/src/primaite/game/agent/observations/host_observations.py +++ b/src/primaite/game/agent/observations/host_observations.py @@ -281,6 +281,10 @@ class HostObservation(AbstractObservation, identifier="HOST"): folder_config.file_system_requires_scan = config.file_system_requires_scan for nic_config in config.network_interfaces: nic_config.include_nmne = config.include_nmne + for service_config in config.services: + service_config.services_requires_scan = config.services_requires_scan + for application_config in config.applications: + application_config.application_config_requires_scan = config.application_config_requires_scan services = [ServiceObservation.from_config(config=c, parent_where=where) for c in config.services] applications = [ApplicationObservation.from_config(config=c, parent_where=where) for c in config.applications] diff --git a/tests/integration_tests/game_layer/observations/test_node_observations.py b/tests/integration_tests/game_layer/observations/test_node_observations.py index 69d9f106..9d60823b 100644 --- a/tests/integration_tests/game_layer/observations/test_node_observations.py +++ b/tests/integration_tests/game_layer/observations/test_node_observations.py @@ -39,6 +39,8 @@ def test_host_observation(simulation): folders=[], network_interfaces=[], file_system_requires_scan=True, + services_requires_scan=True, + applications_requires_scan=True, include_users=False, ) diff --git a/tests/integration_tests/game_layer/observations/test_software_observations.py b/tests/integration_tests/game_layer/observations/test_software_observations.py index 998aa755..ab9f6e9c 100644 --- a/tests/integration_tests/game_layer/observations/test_software_observations.py +++ b/tests/integration_tests/game_layer/observations/test_software_observations.py @@ -29,7 +29,9 @@ def test_service_observation(simulation): ntp_server = pc.software_manager.software.get("NTPServer") assert ntp_server - service_obs = ServiceObservation(where=["network", "nodes", pc.hostname, "services", "NTPServer"]) + service_obs = ServiceObservation( + where=["network", "nodes", pc.hostname, "services", "NTPServer"], services_requires_scan=True + ) assert service_obs.space["operating_status"] == spaces.Discrete(7) assert service_obs.space["health_status"] == spaces.Discrete(5) @@ -54,7 +56,9 @@ def test_application_observation(simulation): web_browser: WebBrowser = pc.software_manager.software.get("WebBrowser") assert web_browser - app_obs = ApplicationObservation(where=["network", "nodes", pc.hostname, "applications", "WebBrowser"]) + app_obs = ApplicationObservation( + where=["network", "nodes", pc.hostname, "applications", "WebBrowser"], applications_requires_scan=True + ) web_browser.close() observation_state = app_obs.observe(simulation.describe_state()) diff --git a/tests/unit_tests/_primaite/_game/_agent/test_observations.py b/tests/unit_tests/_primaite/_game/_agent/test_observations.py index 583b9cbd..912b672e 100644 --- a/tests/unit_tests/_primaite/_game/_agent/test_observations.py +++ b/tests/unit_tests/_primaite/_game/_agent/test_observations.py @@ -1,4 +1,5 @@ # © Crown-owned copyright 2024, Defence Science and Technology Laboratory UK +import json from typing import List import pytest @@ -142,7 +143,7 @@ class TestServiceRequiresScan: ), ) def test_obs_config(self, yaml_option_string, expected_val): - """Check that the default behaviour is to set FileSystemRequiresScan to True.""" + """Check that the default behaviour is to set service_requires_scan to True.""" obs_cfg_yaml = f""" type: CUSTOM options: @@ -155,19 +156,20 @@ class TestServiceRequiresScan: - hostname: web_server services: - service_name: WebServer + - service_name: DNSClient - hostname: database_server folders: - folder_name: database files: - file_name: database.db - hostname: backup_server + services: + - service_name: FTPServer - hostname: security_suite - hostname: client_1 - applications: - - application_name: WebBrowser - hostname: client_2 - num_services: 1 - num_applications: 1 + num_services: 3 + num_applications: 0 num_folders: 1 num_files: 1 num_nics: 2 @@ -226,10 +228,12 @@ class TestServiceRequiresScan: manager = ObservationManager.from_config(cfg) hosts: List[HostObservation] = manager.obs.components["NODES"].hosts - for host in hosts: + for i, host in enumerate(hosts): services: List[ServiceObservation] = host.services - for service in services: - assert service.services_requires_scan == expected_val # Make sure services require scan by default + for j, service in enumerate(services): + val = service.services_requires_scan + print(f"host {i} service {j} {val}") + assert val == expected_val # Make sure services require scan by default def test_services_requires_scan(self): state = {"health_state_actual": 3, "health_state_visible": 1, "operating_state": 1} From f1ff1f13cf4fc9e4fc8760a51b4d029f1307c8af Mon Sep 17 00:00:00 2001 From: Czar Echavez Date: Fri, 13 Sep 2024 09:08:44 +0100 Subject: [PATCH 36/58] #2864: added applications_requires_scan test --- .../agent/observations/host_observations.py | 2 +- .../_game/_agent/test_observations.py | 116 +++++++++++++++++- 2 files changed, 115 insertions(+), 3 deletions(-) diff --git a/src/primaite/game/agent/observations/host_observations.py b/src/primaite/game/agent/observations/host_observations.py index c05b493a..da054eda 100644 --- a/src/primaite/game/agent/observations/host_observations.py +++ b/src/primaite/game/agent/observations/host_observations.py @@ -284,7 +284,7 @@ class HostObservation(AbstractObservation, identifier="HOST"): for service_config in config.services: service_config.services_requires_scan = config.services_requires_scan for application_config in config.applications: - application_config.application_config_requires_scan = config.application_config_requires_scan + application_config.applications_requires_scan = config.applications_requires_scan services = [ServiceObservation.from_config(config=c, parent_where=where) for c in config.services] applications = [ApplicationObservation.from_config(config=c, parent_where=where) for c in config.applications] diff --git a/tests/unit_tests/_primaite/_game/_agent/test_observations.py b/tests/unit_tests/_primaite/_game/_agent/test_observations.py index 912b672e..935bbdcf 100644 --- a/tests/unit_tests/_primaite/_game/_agent/test_observations.py +++ b/tests/unit_tests/_primaite/_game/_agent/test_observations.py @@ -5,7 +5,7 @@ from typing import List import pytest import yaml -from primaite.game.agent.observations import ObservationManager, ServiceObservation +from primaite.game.agent.observations import ApplicationObservation, ObservationManager, ServiceObservation from primaite.game.agent.observations.file_system_observations import FileObservation, FolderObservation from primaite.game.agent.observations.host_observations import HostObservation @@ -133,7 +133,7 @@ class TestFileSystemRequiresScan: assert obs_not_requiring_scan.observe(folder_state)["health_status"] == 3 -class TestServiceRequiresScan: +class TestServicesRequiresScan: @pytest.mark.parametrize( ("yaml_option_string", "expected_val"), ( @@ -243,3 +243,115 @@ class TestServiceRequiresScan: obs_not_requiring_scan = ServiceObservation([], services_requires_scan=False) assert obs_not_requiring_scan.observe(state)["health_status"] == 3 # should be actual value + + +class TestApplicationsRequiresScan: + @pytest.mark.parametrize( + ("yaml_option_string", "expected_val"), + ( + ("applications_requires_scan: true", True), + ("applications_requires_scan: false", False), + (" ", True), + ), + ) + def test_obs_config(self, yaml_option_string, expected_val): + """Check that the default behaviour is to set applications_requires_scan to True.""" + obs_cfg_yaml = f""" + type: CUSTOM + options: + components: + - type: NODES + label: NODES + options: + hosts: + - hostname: domain_controller + - hostname: web_server + - hostname: database_server + folders: + - folder_name: database + files: + - file_name: database.db + - hostname: backup_server + - hostname: security_suite + - hostname: client_1 + applications: + - application_name: WebBrowser + - hostname: client_2 + applications: + - application_name: WebBrowser + - application_name: DatabaseClient + num_services: 0 + num_applications: 3 + num_folders: 1 + num_files: 1 + num_nics: 2 + include_num_access: false + {yaml_option_string} + include_nmne: true + monitored_traffic: + icmp: + - NONE + tcp: + - DNS + routers: + - hostname: router_1 + num_ports: 0 + ip_list: + - 192.168.1.10 + - 192.168.1.12 + - 192.168.1.14 + - 192.168.1.16 + - 192.168.1.110 + - 192.168.10.21 + - 192.168.10.22 + - 192.168.10.110 + wildcard_list: + - 0.0.0.1 + port_list: + - 80 + - 5432 + protocol_list: + - ICMP + - TCP + - UDP + num_rules: 10 + + - type: LINKS + label: LINKS + options: + link_references: + - router_1:eth-1<->switch_1:eth-8 + - router_1:eth-2<->switch_2:eth-8 + - switch_1:eth-1<->domain_controller:eth-1 + - switch_1:eth-2<->web_server:eth-1 + - switch_1:eth-3<->database_server:eth-1 + - switch_1:eth-4<->backup_server:eth-1 + - switch_1:eth-7<->security_suite:eth-1 + - switch_2:eth-1<->client_1:eth-1 + - switch_2:eth-2<->client_2:eth-1 + - switch_2:eth-7<->security_suite:eth-2 + - type: "NONE" + label: ICS + options: {{}} + + """ + + cfg = yaml.safe_load(obs_cfg_yaml) + manager = ObservationManager.from_config(cfg) + + hosts: List[HostObservation] = manager.obs.components["NODES"].hosts + for i, host in enumerate(hosts): + services: List[ServiceObservation] = host.services + for j, service in enumerate(services): + val = service.services_requires_scan + print(f"host {i} service {j} {val}") + assert val == expected_val # Make sure applications require scan by default + + def test_applications_requires_scan(self): + state = {"health_state_actual": 3, "health_state_visible": 1, "operating_state": 1, "num_executions": 1} + + obs_requiring_scan = ApplicationObservation([], applications_requires_scan=True) + assert obs_requiring_scan.observe(state)["health_status"] == 1 # should be visible value + + obs_not_requiring_scan = ApplicationObservation([], applications_requires_scan=False) + assert obs_not_requiring_scan.observe(state)["health_status"] == 3 # should be actual value From 454789f49461ff285b22d7a5bfbe4890a4c5f335 Mon Sep 17 00:00:00 2001 From: Czar Echavez Date: Fri, 13 Sep 2024 09:34:09 +0100 Subject: [PATCH 37/58] #2864: add to changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77b7bb7d..56f0c038 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Log observation space data by episode and step. - ACL's are no longer applied to layer-2 traffic. +- Added `services_requires_scan` and `applications_requires_scan` to agent observation space config to allow the agents to be able to see actual health states of services and applications without requiring scans (Default `True`, set to `False` to allow agents to see actual health state without scanning). ## [3.3.0] - 2024-09-04 ### Added From d8c85058edc2b80e9f9afcede098c9d133804d2f Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Fri, 13 Sep 2024 10:32:09 +0100 Subject: [PATCH 38/58] #2456 - Minor change to arp.show() to include port number --- src/primaite/simulator/system/services/arp/arp.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/primaite/simulator/system/services/arp/arp.py b/src/primaite/simulator/system/services/arp/arp.py index efadf189..9314bea7 100644 --- a/src/primaite/simulator/system/services/arp/arp.py +++ b/src/primaite/simulator/system/services/arp/arp.py @@ -47,7 +47,7 @@ class ARP(Service): :param markdown: If True, format the output as Markdown. Otherwise, use plain text. """ - table = PrettyTable(["IP Address", "MAC Address", "Via"]) + table = PrettyTable(["IP Address", "MAC Address", "Via", "Port"]) if markdown: table.set_style(MARKDOWN) table.align = "l" @@ -58,6 +58,7 @@ class ARP(Service): str(ip), arp.mac_address, self.software_manager.node.network_interfaces[arp.network_interface_uuid].mac_address, + self.software_manager.node.network_interfaces[arp.network_interface_uuid].port_num, ] ) print(table) From 94b30909ee62624181bbaa7187948f41f17b8164 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Fri, 13 Sep 2024 10:56:12 +0100 Subject: [PATCH 39/58] #2456 - Updated Changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77b7bb7d..71341a17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added - Log observation space data by episode and step. + +### Changed - ACL's are no longer applied to layer-2 traffic. +- ARP .show() method will no include the port number associated with each entry. + ## [3.3.0] - 2024-09-04 ### Added From 9a2fb2a0846cdc8958d7cad03fdbfaa6277e31bc Mon Sep 17 00:00:00 2001 From: Czar Echavez Date: Fri, 13 Sep 2024 11:11:58 +0100 Subject: [PATCH 40/58] #2880: fix action shape for num_ports + test --- src/primaite/game/agent/actions.py | 4 ++-- .../game_layer/test_action_shapes.py | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 tests/integration_tests/game_layer/test_action_shapes.py diff --git a/src/primaite/game/agent/actions.py b/src/primaite/game/agent/actions.py index a299788e..c864f75f 100644 --- a/src/primaite/game/agent/actions.py +++ b/src/primaite/game/agent/actions.py @@ -877,7 +877,7 @@ class FirewallACLRemoveRuleAction(AbstractAction): """Action which removes a rule from a firewall port's ACL.""" def __init__(self, manager: "ActionManager", max_acl_rules: int, **kwargs) -> None: - """Init method for RouterACLRemoveRuleAction. + """Init method for FirewallACLRemoveRuleAction. :param manager: Reference to the ActionManager which created this action. :type manager: ActionManager @@ -1524,7 +1524,7 @@ class ActionManager: "num_nics": max_nics_per_node, "num_acl_rules": max_acl_rules, "num_protocols": len(self.protocols), - "num_ports": len(self.protocols), + "num_ports": len(self.ports), "num_ips": len(self.ip_address_list), "max_acl_rules": max_acl_rules, "max_nics_per_node": max_nics_per_node, diff --git a/tests/integration_tests/game_layer/test_action_shapes.py b/tests/integration_tests/game_layer/test_action_shapes.py new file mode 100644 index 00000000..48500d8f --- /dev/null +++ b/tests/integration_tests/game_layer/test_action_shapes.py @@ -0,0 +1,21 @@ +# © Crown-owned copyright 2024, Defence Science and Technology Laboratory UK +from typing import Tuple + +from primaite.game.agent.interface import ProxyAgent +from primaite.game.game import PrimaiteGame +from tests import TEST_ASSETS_ROOT + +FIREWALL_ACTIONS_NETWORK = TEST_ASSETS_ROOT / "configs/firewall_actions_network.yaml" + + +def test_router_acl_add_rule_action_shape(game_and_agent: Tuple[PrimaiteGame, ProxyAgent]): + """Test to check ROUTER_ADD_ACL_RULE has the expected action shape.""" + game, agent = game_and_agent + + # assert that the shape of the actions is correct + router_acl_add_rule_action = agent.action_manager.actions.get("ROUTER_ACL_ADDRULE") + assert router_acl_add_rule_action.shape.get("source_ip_id") == len(agent.action_manager.ip_address_list) + assert router_acl_add_rule_action.shape.get("dest_ip_id") == len(agent.action_manager.ip_address_list) + assert router_acl_add_rule_action.shape.get("source_port_id") == len(agent.action_manager.ports) + assert router_acl_add_rule_action.shape.get("dest_port_id") == len(agent.action_manager.ports) + assert router_acl_add_rule_action.shape.get("protocol_id") == len(agent.action_manager.protocols) From 17035be0284f1789e026d4cf8328cc97b2035c8b Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Fri, 13 Sep 2024 11:13:55 +0100 Subject: [PATCH 41/58] #2456 - Actioning review comment --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71341a17..53b29e85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - ACL's are no longer applied to layer-2 traffic. -- ARP .show() method will no include the port number associated with each entry. +- ARP .show() method will now include the port number associated with each entry. ## [3.3.0] - 2024-09-04 From c924b9ea46dcd2a701fdf6ba93a3733b72c09a99 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Fri, 13 Sep 2024 11:54:17 +0100 Subject: [PATCH 42/58] #2871 - Initial commit of a show_history() function in AbstractAgent --- src/primaite/game/agent/interface.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/primaite/game/agent/interface.py b/src/primaite/game/agent/interface.py index d5165a71..404c2bfe 100644 --- a/src/primaite/game/agent/interface.py +++ b/src/primaite/game/agent/interface.py @@ -4,6 +4,7 @@ from abc import ABC, abstractmethod from typing import Any, Dict, List, Optional, Tuple, TYPE_CHECKING from gymnasium.core import ActType, ObsType +from prettytable import PrettyTable from pydantic import BaseModel, model_validator from primaite.game.agent.actions import ActionManager @@ -126,6 +127,27 @@ class AbstractAgent(ABC): self.history: List[AgentHistoryItem] = [] self.logger = AgentLog(agent_name) + def show_history(self): + """ + Print an agent action provided it's not the DONOTHING action. + + :param agent_name: Name of agent (str). + """ + table = PrettyTable() + table.field_names = ["Step", "Action", "Node", "Application", "Response"] + print(f"Actions for '{self.agent_name}':") + for item in self.history: + if item.action != "DONOTHING": + node, application = "unknown", "unknown" + if (node_id := item.parameters.get("node_id")) is not None: + node = self.action_manager.node_names[node_id] + if (application_id := item.parameters.get("application_id")) is not None: + application = self.action_manager.application_names[node_id][application_id] + if (application_name := item.parameters.get("application_name")) is not None: + application = application_name + table.add_row([item.timestep, item.action, node, application, item.response.status]) + print(table) + def update_observation(self, state: Dict) -> ObsType: """ Convert a state from the simulator into an observation for the agent using the observation space. From cd8fc6d42d153b28b5cd731a4fe19239bfcc327d Mon Sep 17 00:00:00 2001 From: Nick Todd Date: Fri, 13 Sep 2024 12:10:49 +0100 Subject: [PATCH 43/58] #2879: Handle generate_seed_value option --- src/primaite/session/environment.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/primaite/session/environment.py b/src/primaite/session/environment.py index c66663e3..ac9415ac 100644 --- a/src/primaite/session/environment.py +++ b/src/primaite/session/environment.py @@ -26,14 +26,25 @@ except ModuleNotFoundError: _LOGGER.debug("Torch not available for importing") -def set_random_seed(seed: int) -> Union[None, int]: +def set_random_seed(seed: int, generate_seed_value: bool) -> Union[None, int]: """ Set random number generators. + If seed is None or -1 and generate_seed_value is True randomly generate a + seed value. + If seed is > -1 and generate_seed_value is True ignore the latter and use + the provide seed value. + :param seed: int + :param generate_seed_value: bool + :return: None or the int representing the seed used. """ if seed is None or seed == -1: - return None + if generate_seed_value: + rng = np.random.default_rng() + seed = int(rng.integers(low=0, high=2**63)) + else: + return None elif seed < -1: raise ValueError("Invalid random number seed") # Seed python RNG @@ -65,7 +76,8 @@ class PrimaiteGymEnv(gymnasium.Env): """Object that returns a config corresponding to the current episode.""" self.seed = self.episode_scheduler(0).get("game", {}).get("seed") """Get RNG seed from config file. NB: Must be before game instantiation.""" - self.seed = set_random_seed(self.seed) + self.generate_seed_value = self.episode_scheduler(0).get("game", {}).get("generate_seed_value") + self.seed = set_random_seed(self.seed, self.generate_seed_value) self.io = PrimaiteIO.from_config(self.episode_scheduler(0).get("io_settings", {})) """Handles IO for the environment. This produces sys logs, agent logs, etc.""" self.game: PrimaiteGame = PrimaiteGame.from_config(self.episode_scheduler(0)) From 6ebe50c331725c5059f269a59d87bd1dcd4077b3 Mon Sep 17 00:00:00 2001 From: Nick Todd Date: Fri, 13 Sep 2024 12:58:37 +0100 Subject: [PATCH 44/58] #2879: Reduce max seed value to comply with python random seed limit --- src/primaite/session/environment.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/primaite/session/environment.py b/src/primaite/session/environment.py index ac9415ac..0fd21b9f 100644 --- a/src/primaite/session/environment.py +++ b/src/primaite/session/environment.py @@ -42,7 +42,8 @@ def set_random_seed(seed: int, generate_seed_value: bool) -> Union[None, int]: if seed is None or seed == -1: if generate_seed_value: rng = np.random.default_rng() - seed = int(rng.integers(low=0, high=2**63)) + # 2**32-1 is highest value for python RNG seed. + seed = int(rng.integers(low=0, high=2**32-1)) else: return None elif seed < -1: From 08fcf1df19fc811bf9a24aee04d8c5c3239f9678 Mon Sep 17 00:00:00 2001 From: Nick Todd Date: Fri, 13 Sep 2024 12:59:41 +0100 Subject: [PATCH 45/58] #2879: Add generate_seed_value to global options. --- src/primaite/game/game.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/primaite/game/game.py b/src/primaite/game/game.py index 123b6ddd..0e7b8c23 100644 --- a/src/primaite/game/game.py +++ b/src/primaite/game/game.py @@ -80,6 +80,8 @@ class PrimaiteGameOptions(BaseModel): seed: int = None """Random number seed for RNGs.""" + generate_seed_value: bool = False + """Internally generated seed value.""" max_episode_length: int = 256 """Maximum number of episodes for the PrimAITE game.""" ports: List[str] From f2a0eeaca23159da9caa0cd9e55e81f5aaac6875 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Fri, 13 Sep 2024 14:11:13 +0100 Subject: [PATCH 46/58] #2871 - Updated show_history() method to use boolean 'include_nothing' for whether to include DONOTHING actions --- src/primaite/game/agent/interface.py | 31 ++++++++++++++++++---------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/primaite/game/agent/interface.py b/src/primaite/game/agent/interface.py index 404c2bfe..0ec44d22 100644 --- a/src/primaite/game/agent/interface.py +++ b/src/primaite/game/agent/interface.py @@ -127,25 +127,34 @@ class AbstractAgent(ABC): self.history: List[AgentHistoryItem] = [] self.logger = AgentLog(agent_name) - def show_history(self): + def add_agent_action(self, item: AgentHistoryItem, table: PrettyTable) -> PrettyTable: + """Update the given table with information from given AgentHistoryItem.""" + node, application = "unknown", "unknown" + if (node_id := item.parameters.get("node_id")) is not None: + node = self.action_manager.node_names[node_id] + if (application_id := item.parameters.get("application_id")) is not None: + application = self.action_manager.application_names[node_id][application_id] + if (application_name := item.parameters.get("application_name")) is not None: + application = application_name + table.add_row([item.timestep, item.action, node, application, item.response.status]) + return table + + def show_history(self, include_nothing: bool = False): """ Print an agent action provided it's not the DONOTHING action. - :param agent_name: Name of agent (str). + :param include_nothing: boolean for including DONOTHING actions. Default False. """ table = PrettyTable() table.field_names = ["Step", "Action", "Node", "Application", "Response"] print(f"Actions for '{self.agent_name}':") for item in self.history: - if item.action != "DONOTHING": - node, application = "unknown", "unknown" - if (node_id := item.parameters.get("node_id")) is not None: - node = self.action_manager.node_names[node_id] - if (application_id := item.parameters.get("application_id")) is not None: - application = self.action_manager.application_names[node_id][application_id] - if (application_name := item.parameters.get("application_name")) is not None: - application = application_name - table.add_row([item.timestep, item.action, node, application, item.response.status]) + if item.action == "DONOTHING": + if include_nothing: + table = self.add_agent_action(item=item, table=table) + else: + pass + self.add_agent_action(item=item, table=table) print(table) def update_observation(self, state: Dict) -> ObsType: From 01a2c834ce3c8ff23c90ff098ef2cce04bdd5bab Mon Sep 17 00:00:00 2001 From: Nick Todd Date: Fri, 13 Sep 2024 14:53:15 +0100 Subject: [PATCH 47/58] #2879: Write seed value to log file. --- src/primaite/session/environment.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/primaite/session/environment.py b/src/primaite/session/environment.py index 0fd21b9f..9054106e 100644 --- a/src/primaite/session/environment.py +++ b/src/primaite/session/environment.py @@ -62,6 +62,13 @@ def set_random_seed(seed: int, generate_seed_value: bool) -> Union[None, int]: return seed +def log_seed_value(seed: int): + """Log the selected seed value to file.""" + path = SIM_OUTPUT.path / "seed.log" + with open(path, "w") as file: + file.write(f"Seed value = {seed}") + + class PrimaiteGymEnv(gymnasium.Env): """ Thin wrapper env to provide agents with a gymnasium API. @@ -92,6 +99,8 @@ class PrimaiteGymEnv(gymnasium.Env): _LOGGER.info(f"PrimaiteGymEnv RNG seed = {self.seed}") + log_seed_value(self.seed) + def action_masks(self) -> np.ndarray: """ Return the action mask for the agent. From 5006e41546d37cabb0a505fe0c9e3346dcaebf89 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Fri, 13 Sep 2024 15:47:59 +0100 Subject: [PATCH 48/58] #2871 - Updated the show_history() function to receive a list of actions to ignore when printing the history. Defaults to ignoring DONOTHING actions --- src/primaite/game/agent/interface.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/primaite/game/agent/interface.py b/src/primaite/game/agent/interface.py index 0ec44d22..6609dd03 100644 --- a/src/primaite/game/agent/interface.py +++ b/src/primaite/game/agent/interface.py @@ -139,22 +139,23 @@ class AbstractAgent(ABC): table.add_row([item.timestep, item.action, node, application, item.response.status]) return table - def show_history(self, include_nothing: bool = False): + def show_history(self, ignored_actions: Optional[list] = None): """ Print an agent action provided it's not the DONOTHING action. - :param include_nothing: boolean for including DONOTHING actions. Default False. + :param ignored_actions: OPTIONAL: List of actions to be ignored when displaying the history. + If not provided, defaults to ignore DONOTHING actions. """ + if not ignored_actions: + ignored_actions = ["DONOTHING"] table = PrettyTable() table.field_names = ["Step", "Action", "Node", "Application", "Response"] print(f"Actions for '{self.agent_name}':") for item in self.history: - if item.action == "DONOTHING": - if include_nothing: - table = self.add_agent_action(item=item, table=table) - else: - pass - self.add_agent_action(item=item, table=table) + if item.action in ignored_actions: + pass + else: + table = self.add_agent_action(item=item, table=table) print(table) def update_observation(self, state: Dict) -> ObsType: From e0a10928343c650b986da8aa8cd6207786448e0f Mon Sep 17 00:00:00 2001 From: Nick Todd Date: Mon, 16 Sep 2024 09:04:17 +0100 Subject: [PATCH 49/58] #2879: Pre-commit fix. --- src/primaite/session/environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/primaite/session/environment.py b/src/primaite/session/environment.py index 9054106e..07635b70 100644 --- a/src/primaite/session/environment.py +++ b/src/primaite/session/environment.py @@ -43,7 +43,7 @@ def set_random_seed(seed: int, generate_seed_value: bool) -> Union[None, int]: if generate_seed_value: rng = np.random.default_rng() # 2**32-1 is highest value for python RNG seed. - seed = int(rng.integers(low=0, high=2**32-1)) + seed = int(rng.integers(low=0, high=2**32 - 1)) else: return None elif seed < -1: From 215ceaa6e8b5977b231d226715b70d8e88df7f14 Mon Sep 17 00:00:00 2001 From: Nick Todd Date: Mon, 16 Sep 2024 10:08:45 +0100 Subject: [PATCH 50/58] #2879: Fix call to set_random_seed() in reset(). --- src/primaite/session/environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/primaite/session/environment.py b/src/primaite/session/environment.py index 07635b70..db5425e3 100644 --- a/src/primaite/session/environment.py +++ b/src/primaite/session/environment.py @@ -168,7 +168,7 @@ class PrimaiteGymEnv(gymnasium.Env): f"avg. reward: {self.agent.reward_function.total_reward}" ) if seed is not None: - set_random_seed(seed) + set_random_seed(seed, self.generate_seed_value) self.total_reward_per_episode[self.episode_counter] = self.agent.reward_function.total_reward if self.io.settings.save_agent_actions: From f3ca9c55c90fe05b2e43c2c167767037578a0fb7 Mon Sep 17 00:00:00 2001 From: Nick Todd Date: Mon, 16 Sep 2024 16:38:19 +0100 Subject: [PATCH 51/58] #2879: Update tests --- .../game_layer/test_RNG_seed.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/integration_tests/game_layer/test_RNG_seed.py b/tests/integration_tests/game_layer/test_RNG_seed.py index 0c6d567d..508f35e6 100644 --- a/tests/integration_tests/game_layer/test_RNG_seed.py +++ b/tests/integration_tests/game_layer/test_RNG_seed.py @@ -7,6 +7,7 @@ import yaml from primaite.config.load import data_manipulation_config_path from primaite.game.agent.interface import AgentHistoryItem from primaite.session.environment import PrimaiteGymEnv +from primaite.simulator import SIM_OUTPUT @pytest.fixture() @@ -33,6 +34,11 @@ def test_rng_seed_set(create_env): assert a == b + # Check that seed log file was created. + path = SIM_OUTPUT.path / "seed.log" + with open(path, "r") as file: + assert file + def test_rng_seed_unset(create_env): """Test with no RNG seed.""" @@ -48,3 +54,19 @@ def test_rng_seed_unset(create_env): b = [item.timestep for item in env.game.agents["client_2_green_user"].history if item.action != "DONOTHING"] assert a != b + + +def test_for_generated_seed(): + """ + Show that setting generate_seed_value to true producess a valid seed. + """ + with open(data_manipulation_config_path(), "r") as f: + cfg = yaml.safe_load(f) + + cfg["game"]["generate_seed_value"] = True + PrimaiteGymEnv(env_config=cfg) + path = SIM_OUTPUT.path / "seed.log" + with open(path, "r") as file: + data = file.read() + + assert data.split(" ")[3] != None From 078b89856535b0071c76921612b6758f6d48782c Mon Sep 17 00:00:00 2001 From: Nick Todd Date: Tue, 17 Sep 2024 09:30:14 +0100 Subject: [PATCH 52/58] #2879: Update changelog. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77b7bb7d..a9f6c891 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Log observation space data by episode and step. - ACL's are no longer applied to layer-2 traffic. +- Random number seed values are recorded in simulation/seed.log if the seed is set in the config file + or `generate_seed_value` is set to `true`. ## [3.3.0] - 2024-09-04 ### Added From 5d7935cde083d662389198b8345fc9194e8351be Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Tue, 17 Sep 2024 09:39:32 +0100 Subject: [PATCH 53/58] #2871 - Changes to notebooks following updates to action history --- .../Command-&-Control-E2E-Demonstration.ipynb | 12 +++++- .../Data-Manipulation-E2E-Demonstration.ipynb | 11 ++++- .../Getting-Information-Out-Of-PrimAITE.ipynb | 40 ++++++++++++++++++- 3 files changed, 60 insertions(+), 3 deletions(-) diff --git a/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb b/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb index b6b13f28..a0599ee4 100644 --- a/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb +++ b/src/primaite/notebooks/Command-&-Control-E2E-Demonstration.ipynb @@ -1800,6 +1800,16 @@ "\n", "display_obs_diffs(tcp_c2_obs, udp_c2_obs, blue_config_env.game.step_counter)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "env.game.agents[\"CustomC2Agent\"].show_history()" + ] } ], "metadata": { @@ -1818,7 +1828,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.10.11" } }, "nbformat": 4, diff --git a/src/primaite/notebooks/Data-Manipulation-E2E-Demonstration.ipynb b/src/primaite/notebooks/Data-Manipulation-E2E-Demonstration.ipynb index 0460f771..c1b959f5 100644 --- a/src/primaite/notebooks/Data-Manipulation-E2E-Demonstration.ipynb +++ b/src/primaite/notebooks/Data-Manipulation-E2E-Demonstration.ipynb @@ -675,6 +675,15 @@ " print(f\"step: {env.game.step_counter}, Red action: {info['agent_actions']['data_manipulation_attacker'].action}, Blue reward:{reward:.2f}\" )" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "env.game.agents[\"data_manipulation_attacker\"].show_history(ignored_actions=[\"\"])" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -708,7 +717,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.10.11" } }, "nbformat": 4, diff --git a/src/primaite/notebooks/Getting-Information-Out-Of-PrimAITE.ipynb b/src/primaite/notebooks/Getting-Information-Out-Of-PrimAITE.ipynb index a832f3cc..e4009822 100644 --- a/src/primaite/notebooks/Getting-Information-Out-Of-PrimAITE.ipynb +++ b/src/primaite/notebooks/Getting-Information-Out-Of-PrimAITE.ipynb @@ -144,6 +144,44 @@ "PRIMAITE_CONFIG[\"developer_mode\"][\"enabled\"] = was_enabled\n", "PRIMAITE_CONFIG[\"developer_mode\"][\"output_sys_logs\"] = was_syslogs_enabled" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Viewing Agent history\n", + "\n", + "It's possible to view the actions carried out by an agent for a given training session using the `show_history()` method. By default, this will be all actions apart from DONOTHING actions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Run the training session to generate some resultant data.\n", + "for i in range(100):\n", + " env.step(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calling `.show_history()` should show us when the Data Manipulation used the `NODE_APPLICATION_EXECUTE` action." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "attacker = env.game.agents[\"data_manipulation_attacker\"]\n", + "\n", + "attacker.show_history()" + ] } ], "metadata": { @@ -162,7 +200,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.8" + "version": "3.10.11" } }, "nbformat": 4, From c8f6459af6022f2536580f968c04e9d32b15e596 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Tue, 17 Sep 2024 10:09:10 +0100 Subject: [PATCH 54/58] #2871 - Changelog and documentation updates, corrected changes in Data manipulation demo notebook --- CHANGELOG.md | 1 + docs/source/configuration/agents.rst | 1 + .../notebooks/Data-Manipulation-E2E-Demonstration.ipynb | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44f1ec29..b7f8a26e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Log observation space data by episode and step. +- Added `show_history` method to Agents, allowing you to view actions taken by an agent per step. By default, `DONOTHING` actions are omitted. ### Changed - ACL's are no longer applied to layer-2 traffic. diff --git a/docs/source/configuration/agents.rst b/docs/source/configuration/agents.rst index dece94c5..0bc586e8 100644 --- a/docs/source/configuration/agents.rst +++ b/docs/source/configuration/agents.rst @@ -177,3 +177,4 @@ If ``True``, gymnasium flattening will be performed on the observation space bef ----------------- Agents will record their action log for each step. This is a summary of what the agent did, along with response information from requests within the simulation. +A log of the actions taken by the agent can be viewed using the `show_history()` function. By default, this will display all actions taken apart from ``DONOTHING``. diff --git a/src/primaite/notebooks/Data-Manipulation-E2E-Demonstration.ipynb b/src/primaite/notebooks/Data-Manipulation-E2E-Demonstration.ipynb index c1b959f5..13533097 100644 --- a/src/primaite/notebooks/Data-Manipulation-E2E-Demonstration.ipynb +++ b/src/primaite/notebooks/Data-Manipulation-E2E-Demonstration.ipynb @@ -681,7 +681,7 @@ "metadata": {}, "outputs": [], "source": [ - "env.game.agents[\"data_manipulation_attacker\"].show_history(ignored_actions=[\"\"])" + "env.game.agents[\"data_manipulation_attacker\"].show_history()" ] }, { From ccb91869c4e7b62e5772c09de496c5cc96b7d35a Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Tue, 17 Sep 2024 10:17:18 +0100 Subject: [PATCH 55/58] #2871 - Minor wording change to description in agents.rst --- docs/source/configuration/agents.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/configuration/agents.rst b/docs/source/configuration/agents.rst index 0bc586e8..74571cf2 100644 --- a/docs/source/configuration/agents.rst +++ b/docs/source/configuration/agents.rst @@ -177,4 +177,4 @@ If ``True``, gymnasium flattening will be performed on the observation space bef ----------------- Agents will record their action log for each step. This is a summary of what the agent did, along with response information from requests within the simulation. -A log of the actions taken by the agent can be viewed using the `show_history()` function. By default, this will display all actions taken apart from ``DONOTHING``. +A summary of the actions taken by the agent can be viewed using the `show_history()` function. By default, this will display all actions taken apart from ``DONOTHING``. From 3a5b75239d64c6febe35ac4bae227e8c804a8f01 Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Tue, 17 Sep 2024 12:05:40 +0100 Subject: [PATCH 56/58] #2871 - Typo in Changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b7f8a26e..b81e256b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [3.3.0] - 2024-09-04 +## [3.4.0] ### Added - Log observation space data by episode and step. From 8d3760b5a7e8bf53f8a7e20cabc3a5597ecd897f Mon Sep 17 00:00:00 2001 From: Charlie Crane Date: Tue, 17 Sep 2024 16:19:43 +0100 Subject: [PATCH 57/58] #2871 - Fix notebook failure --- .../notebooks/Getting-Information-Out-Of-PrimAITE.ipynb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/primaite/notebooks/Getting-Information-Out-Of-PrimAITE.ipynb b/src/primaite/notebooks/Getting-Information-Out-Of-PrimAITE.ipynb index e4009822..6a60c1bc 100644 --- a/src/primaite/notebooks/Getting-Information-Out-Of-PrimAITE.ipynb +++ b/src/primaite/notebooks/Getting-Information-Out-Of-PrimAITE.ipynb @@ -160,6 +160,11 @@ "metadata": {}, "outputs": [], "source": [ + "with open(data_manipulation_config_path(), 'r') as f:\n", + " cfg = yaml.safe_load(f)\n", + "\n", + "env = PrimaiteGymEnv(env_config=cfg)\n", + "\n", "# Run the training session to generate some resultant data.\n", "for i in range(100):\n", " env.step(0)" From 0c576746aa1165aac7aa6fc6eebda68a25945249 Mon Sep 17 00:00:00 2001 From: Nick Todd Date: Thu, 19 Sep 2024 11:07:00 +0100 Subject: [PATCH 58/58] #2896: Bump version. --- src/primaite/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/primaite/VERSION b/src/primaite/VERSION index 15a27998..688932aa 100644 --- a/src/primaite/VERSION +++ b/src/primaite/VERSION @@ -1 +1 @@ -3.3.0 +3.4.0-dev