From 395eda4b5d7895da11bd01ad218bf615352ae99d Mon Sep 17 00:00:00 2001 From: Iuri Guilherme Date: Tue, 30 Dec 2025 00:07:04 -0300 Subject: [PATCH 1/5] Updating to 1.1 and Dedicated Server --- .gitignore | 9 +- Binaries/Win64/dpp.dll | Bin 2284544 -> 0 bytes Binaries/Win64/libcrypto-1_1-x64.dll | Bin 3473408 -> 0 bytes Binaries/Win64/libsodium.dll | Bin 330752 -> 0 bytes Binaries/Win64/libssl-1_1-x64.dll | Bin 686080 -> 0 bytes Binaries/Win64/opus.dll | Bin 395776 -> 0 bytes Binaries/Win64/zlib1.dll | Bin 87040 -> 0 bytes FicsitChat.uplugin | 4 +- README.md | 67 +- Source/FicsitChat/FicsitChat.Build.cs | 1 + .../FicsitChat/Private/FicsitChatModule.cpp | 8 +- .../Private/FicsitChatWorldModule.cpp | 12 +- .../ThirdParty/DPPLibrary/DPPLibrary.Build.cs | 49 +- .../DPPLibrary/include/dpp/appcommand.h | 1222 - .../DPPLibrary/include/dpp/application.h | 166 - .../DPPLibrary/include/dpp/auditlog.h | 214 - .../DPPLibrary/include/dpp/automod.h | 369 - .../ThirdParty/DPPLibrary/include/dpp/ban.h | 67 - .../ThirdParty/DPPLibrary/include/dpp/cache.h | 272 - .../DPPLibrary/include/dpp/channel.h | 813 - .../DPPLibrary/include/dpp/cluster.h | 3360 --- .../include/dpp/cluster_coro_calls.h | 2317 -- .../include/dpp/cluster_sync_calls.h | 2523 -- .../DPPLibrary/include/dpp/collector.h | 435 - .../DPPLibrary/include/dpp/colors.h | 80 - .../DPPLibrary/include/dpp/commandhandler.h | 392 - .../ThirdParty/DPPLibrary/include/dpp/coro.h | 158 - .../DPPLibrary/include/dpp/discordclient.h | 525 - .../DPPLibrary/include/dpp/discordevents.h | 171 - .../include/dpp/discordvoiceclient.h | 873 - .../DPPLibrary/include/dpp/dispatcher.h | 1762 -- .../ThirdParty/DPPLibrary/include/dpp/dns.h | 76 - .../ThirdParty/DPPLibrary/include/dpp/dpp.h | 74 - .../DPPLibrary/include/dpp/dtemplate.h | 103 - .../ThirdParty/DPPLibrary/include/dpp/emoji.h | 177 - .../ThirdParty/DPPLibrary/include/dpp/etf.h | 642 - .../ThirdParty/DPPLibrary/include/dpp/event.h | 151 - .../DPPLibrary/include/dpp/event_router.h | 246 - .../DPPLibrary/include/dpp/exception.h | 201 - .../DPPLibrary/include/dpp/export.h | 66 - .../ThirdParty/DPPLibrary/include/dpp/guild.h | 1022 - .../DPPLibrary/include/dpp/httpsclient.h | 316 - .../DPPLibrary/include/dpp/integration.h | 171 - .../DPPLibrary/include/dpp/intents.h | 86 - .../DPPLibrary/include/dpp/invite.h | 110 - .../ThirdParty/DPPLibrary/include/dpp/json.h | 25 - .../DPPLibrary/include/dpp/json_fwd.h | 25 - .../DPPLibrary/include/dpp/json_interface.h | 61 - .../DPPLibrary/include/dpp/managed.h | 76 - .../DPPLibrary/include/dpp/message.h | 1514 -- .../DPPLibrary/include/dpp/misc-enum.h | 55 - .../DPPLibrary/include/dpp/nlohmann/json.hpp | 22091 ---------------- .../include/dpp/nlohmann/json_fwd.hpp | 64 - .../ThirdParty/DPPLibrary/include/dpp/once.h | 46 - .../DPPLibrary/include/dpp/permissions.h | 204 - .../DPPLibrary/include/dpp/presence.h | 392 - .../ThirdParty/DPPLibrary/include/dpp/prune.h | 63 - .../DPPLibrary/include/dpp/queues.h | 457 - .../DPPLibrary/include/dpp/restrequest.h | 205 - .../DPPLibrary/include/dpp/restresults.h | 316 - .../ThirdParty/DPPLibrary/include/dpp/role.h | 650 - .../DPPLibrary/include/dpp/scheduled_event.h | 224 - .../DPPLibrary/include/dpp/snowflake.h | 196 - .../DPPLibrary/include/dpp/socket.h | 30 - .../DPPLibrary/include/dpp/sslclient.h | 257 - .../DPPLibrary/include/dpp/stage_instance.h | 86 - .../DPPLibrary/include/dpp/stringops.h | 212 - .../ThirdParty/DPPLibrary/include/dpp/sync.h | 80 - .../DPPLibrary/include/dpp/sysdep.h | 120 - .../DPPLibrary/include/dpp/timed_listener.h | 95 - .../ThirdParty/DPPLibrary/include/dpp/timer.h | 124 - .../ThirdParty/DPPLibrary/include/dpp/user.h | 406 - .../DPPLibrary/include/dpp/utility.h | 494 - .../DPPLibrary/include/dpp/version.h | 31 - .../DPPLibrary/include/dpp/voiceregion.h | 119 - .../DPPLibrary/include/dpp/voicestate.h | 110 - .../DPPLibrary/include/dpp/webhook.h | 113 - .../include/dpp/win32_safe_warnings.h | 32 - .../DPPLibrary/include/dpp/wsclient.h | 212 - 79 files changed, 104 insertions(+), 48391 deletions(-) delete mode 100644 Binaries/Win64/dpp.dll delete mode 100644 Binaries/Win64/libcrypto-1_1-x64.dll delete mode 100644 Binaries/Win64/libsodium.dll delete mode 100644 Binaries/Win64/libssl-1_1-x64.dll delete mode 100644 Binaries/Win64/opus.dll delete mode 100644 Binaries/Win64/zlib1.dll delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/appcommand.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/application.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/auditlog.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/automod.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/ban.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/cache.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/channel.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/cluster.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/cluster_coro_calls.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/cluster_sync_calls.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/collector.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/colors.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/commandhandler.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/coro.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/discordclient.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/discordevents.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/discordvoiceclient.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/dispatcher.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/dns.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/dpp.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/dtemplate.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/emoji.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/etf.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/event.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/event_router.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/exception.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/export.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/guild.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/httpsclient.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/integration.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/intents.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/invite.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/json.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/json_fwd.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/json_interface.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/managed.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/message.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/misc-enum.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/nlohmann/json.hpp delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/nlohmann/json_fwd.hpp delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/once.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/permissions.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/presence.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/prune.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/queues.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/restrequest.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/restresults.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/role.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/scheduled_event.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/snowflake.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/socket.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/sslclient.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/stage_instance.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/stringops.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/sync.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/sysdep.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/timed_listener.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/timer.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/user.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/utility.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/version.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/voiceregion.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/voicestate.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/webhook.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/win32_safe_warnings.h delete mode 100644 Source/ThirdParty/DPPLibrary/include/dpp/wsclient.h diff --git a/.gitignore b/.gitignore index edbf957..a8700e1 100644 --- a/.gitignore +++ b/.gitignore @@ -86,9 +86,12 @@ DerivedDataCache/* # Built Visual Studio Code Extensions *.vsix -# DPP DLLs and library folders -!Source/ThirdParty/Binaries/**/*.dll -!Source/ThirdParty/Binaries/**/*.lib +# DPP library files (developers must extract locally) +# Download from https://dpp.dev/install-windows-vs-zip.html +Source/ThirdParty/DPPLibrary +!Source/ThirdParty/DPPLibrary/DPPLibrary.Build.cs +Binaries *.pdb *.modules +*.lib diff --git a/Binaries/Win64/dpp.dll b/Binaries/Win64/dpp.dll deleted file mode 100644 index 2d0b0f29c4af889ab9bb03d8d6c61435ac6bb523..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2284544 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

O-8${dq&wR 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%0ASCvWBx`6$PaV`G? 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 z zBn#uz#*vflERbQW3JYVfF!wMC8#t(+g?+zsTs3OU>0LU%&jf8sS9nDBYzNT^RN6dN5` zV|s!X2&%_eJvtj_XXR&={?vcoS>73&xcDWHwq~ZJrcDan@p!tOB!MPEhqjIKg0nQ` zdPr!p#a&VjMM!dqB)g#(l?~CknT9CBSXBO{&yct<>lKDjw9mug_KC04{DjWXANA+I zn#;jq2)c;*IkhAYkvzfZNg>LG!r0_`Ie$}kda^)Y+0=K*> z1%U@)jSa}IiwrDl0myz?^jkXEJEH~zbHS(W5rQ($h8xn( zVj908M9TyA8$DGM2+{KZQ7@z;+g^j2JKWKa(E&)75>rL06L{=_%4pp?pN zZi55LUb5$3TkQF4t#>%nBIMVDSu&>dm0?R>Utr{!gr z+I3fcNRi$ix=QzU)@Ds0oACW_T_>AtM2S+b4m%}|%G=cIf9a?6T%pF=e!!(08 zSr|NfKJJIVOInBNbH}=0zg`Zo*2_(6QNR>kKsW2*d$t z23zdonpLgGJ|cTZWUg9~qVnrCDl`*y!p_asS39C#UC6J_u)b>1UzNhRnCh4rf7h9n zPR=`3Cx6i_dZKonI>IXQ`<;@yo2k$Slt|=|%p6D2AzW(Pg*Z2;^zq#1&Ph(jbK7uV z*wPte?-NcBr3YIglT3nRMi8m*NUcPPD#dyz;KM+9NV*S()m)pCr6Ea&Pu7nq(t?Ll zbNLHLIVbnmo1IwKT);Oz)IX(l+GJ_;9=R zP{@b*)zBLE?x7wPj^q}+uzYOqPw{Pa$kK4I^s z^~GHj-t=aIw{!y{QRsWVTOsfC#sUst@c}3e$ctBYj@G64M0Wg0&}HWvTm7>i)sX_Y zH;zaF?tPEf3_ItZW)sYJ5$_J#e`xL2X@62EuK-cyLkodh_xGVosg-urOJa)U%ou0q zejt{6JI4WEHZ%8No%>=dx1@dg51spmQ|#P%`{s6FnNdw#T;RWJ<(9N3tlY0eb04yA zZj-t1(YZfN)Ge2^0xS1zz;;bt|2bfveg~NQBAxqTE4QQ_Z{>DJ>wYAb+wM1QUDODj zd%Bfd(!O{RUbIX8*562|!1ZTbyzl86f0U8XfcM*RefU4FD+d}0g}4^t;(broy>Z|1 zzNhQG!A8O^TphT0-_td~h<(TVp00AdTZ-!$T)gk;S|9h_>$vaf8tgCdHYF5dTa zx#Pa$eNR^f-j(25gp2n*UGp#=EAaj$TSmgT)gk;dL-^U-uHBEI23aS z*GIT`-_z9|_Z{zhx{f`}NH`4Fk+^u@)Ah^YMuOuAe20toJzeAQ-u{mFJzeG~BjHk9 zvvBdgr)z%Pcf9ZEdg4fo0j}F|@xG@^oNq0EozC$vacm*=p9{Z8#|qDom|W>${55g3 zW&Bm1f+g7((zahytFTat+Mv7%t7ct!A?PzAogzYJxCFQGOsdpBOYq~t0?4?QZ$HQN zK|WCHz~C>*u6%qM-s^&@wptZ$L6CYt}z4R=z&S zcfHQX50qc$Q@GbBoR)L#u$-r8yBQkV&4vxBSxKUq-fo9d*8!2&Q; z0az*MAcAfQjN1!t2V0@B&H$a1g4vGF=JGOUSjiNEr*^Q#g#jli1Vh)Ptmb9Km70R z_*k1^c2`}1=G1vs%2C6fRT2T22mXK=y$xn^OAugd6`bp;>pV5O!Un0ZK?S73nj{1iZ2-z* z?5>8Hpl79BMc88l%nl!Rzf>I#JJ^XKhck}V<1XCSc?xyWB~o;WI!1~v+@~*x|BAk# zT=wMwt1o|tSi!!Opw57P_1e=iO#*q}0%L{Z$zpYPsQ`4FADO#3>gS z_hXrmk>{E-K&Qgf9Wg^W2LUli3fkfQgTS8qriw_c7uCeVsXk4P$hAj~u z)?T17E%QOJmz8-gnX2wIUobxd{>yIJ+H2$v_IrTByis`16|IReR&RNjK5=+KpOh%9v9XY_z2(7)-? z!+o8{tw+z4(KFRGm=H+ZXY{83`M@!e8!Q;T>z>k>`0WvT^yuoDTj$A3kgD?4Ptctr zsX)7FXw(jS3VUdI8e9J7L!{*yxJL!USb-JR=C15-BXtsJQ^TqWZD2j&2HdEdHVL$v zrC}2KCI+n*CTil)6vOxeCRr1=h=3I=_Tt?A6wr-*>h{Uk3+qZKvYe(P*tIsYh5h&9}jdvRlWkzY{!pG z%{Zco^_!Tq_b833UYgnkALo}KH;{#|PN6?Ft@jz9nGX6cb3Ez*q^^<88)y3xE(H@>{z?na9=r+ok27;&=h z#v<$^$GXvi#;Q6`yRH`g3Cqa|NbMbJp48sX=#d@x4!|JgXIuw%&Qoc3M;7Hg_Qk3D zQh)mDb|y{Ih_-6y2#u5%f7KZ&1w3b=t3=8(I=}Qct5oZatIL~Y zHGtqLeXSiJPbey+vjj(gFoIcfhV&IXhGuwa3qGL0ouU5n-1k^U!p=EaLN}ycqj4Gp zNUgCt*;tKymAxzRrS_wixDn?73Mj`|eG%=6kfc1n&=an7L3%>b^{m#6Rcl(+=1NF> z;e$q7b&h^KR_BWc#n)*{ou*x9t{K#I!iJh*6i`a8dh2KLzH^qBN+~kUuV*P?=laKx zgiVzzrO;+$bpp0C2TbT~l%I^@Xd6+N*!%AY0g0fbcl2Ymo+>jq30nEfaN##|k^@1W z!g_T_F_XW6Gj-{tWJeo<$!VI*rE!aTWa}RIudTM(fCdig8PcqU^~prg%wJkB1a~a9 zU14eA%h>c`7Cw-WkT~^|EFod0qETu+vY)Br)8602!Yl@GvyV;QsiV}UscU;f+h%e+ z(V$B}BqT~LA{|L_I#BIIp&d*kFHXmkPw(PHdMGtOrX8_rg=t^7i9CEP{1IZ+zVal2 zjFRV2b%b7r!$c=_>RzPF6778JJc0i*CcoMry+iW4Q)MQE^O?9TM+W8YZw_J~Bk znYEwcu*AM*V!HU{J(SwQ?kwC?g&zq4h67zVR`n1-WUPFtdFu8((UBT`7DtL^+0JBZ zoH!qtkZ*JpEkWK!t9g`0jy1^!!+j}dq#83xjU zj=rYh*$`qknQ>!QK*0_ju__;^fkzTPDXTG!>^ESSXMGUO*pC^%HpWJ?M&I<|8xRFM zi+aHJ31Yu5`92D;oN^5?xB9fN1+Wt>faR;&NdmBS?HXYD>cQnYE?+VF5Pw~c=Oc0T z$2BqT9nt&%;T~_Ya5}V zr)&yu8w6$}Mbm-Vhj@48LVDnYWt>|{4Fp_jM|t23C5*PWfH$~nW1TzDub~N?#ukT=wR$Lt9bwd!Rn%* zjn@o!H-msNarQKJS@L{{ONyf|iw?!gJ;kN2`3dV2CgODdmTq+8Rq{(Ql+ytSY9^(XG~1!scX?CR@Hgeu@Rge*f8uuZwK zrQtF}8(j5ce>l;9fTcf1u!Y`AJVl8)7!9c??w|H~pNRjp-Kf}1x%c z7w(UL2NMVITn77quX+{l@`uiasqDMn&gSv?JLdI&iJ@qD^;SEkqt{gx{ z!ymo?nKn4^Vew8JXyOaKj!=Ra1X8qo9^X?yiYCCoAzH1=z;mm2u!aK+LN6^+iM3#d zS^joWYMlQ`tbIeJeWh3tq=!yr7$=&Yqf-jYvft>G-`z>pL84Qhi0G7(DG|{ra~Pe{egcs4kc7@@KwSxZ z3G4;Fbos~rIV4^Hf#xO{DC3?mgzL(J(|A1STr9! zf*sb)0W{L09=;zH{|o0YnIZD9;Cwz`tec<5ozr}@&pkcLEo|Ki5-Wj!?h@o|@P)H7 zd}B6y#=UK==V*vO4E4p3g!6(I^;+f)n+?3Ff>Ery5~=t#mq}|)hd-FR3~}w;-gO^L(#;vbcHF8!XSB;fxC7M)RF0FK5c(IOBnnmpm zJc%S)X%kEc!MKV-XDIF*Fjg6v4Xut*DyL2&g`5rWd_(0q4)W46EYmOBh!6YYqLVg` z`^p?ve02614Mr(Xo%97!)Q0+rRHr1=O>`tgGs!1ZCip`j%^RdCMKk@JM4>n2srX#d z0JlH%2FKR)Li>x~+?nuyZuf?ip8l`K(1l?}BO9lhn@4Ep zvS&WSQ`>eJthXGxpB8^y!|04mDf-4EJtmvLuZ-0un3WA|dD&*3wCoG^j_*49XLT;x zF=O#Ct_UGSrdxgUNOxJJ=r}wi>u8S+Qtk#{2xlB-If_rEArD&5mqnkq9fRPSy6cD1 zz{0k#@Df4|;E1J#yLCyop``3Hysp_L95s$ipH#YdXP6_4NArP0H)jAl#^g2-@@ANF z%RoRQhtG<3WK0=Zd^Fs+|nkvH?+Q1$P zV1~v6#taVV3K#-Uz7crFO4szMQ#{V=Qrp4giFPKGbS9>R$!Gu&oEei7Cq%%k&NJ@I zY+3r?zqpi=+7|VXCx5~@Ibd=895a!>7CH0|S?fXn4xzeL{qnu7_lS0KnhyaEL^uhA=IM%A? zUAt7om~3ZY@Zr7?B5^V*xWBz^po9d+3#3^VUpXj{4V7TvKiRpxVJ{ppfNEAS@Ls|- zZPn1gsr68>;2(ZlMDyxtfRWjoy=4>vg8JQc34({q4;crmw;90Ut z|MN3);^+({y!O+N;0{2MNnF#AJ;lsC-&KS~6quHkl8n&e&;__~+>S#{x`cX$(9{-* z-*kdLb+aKZev^}&3FcIXgww3)kZ{OTRYhe#0*&_j&YiDl`+Y`iUzF;x1_(`QSMNea zOE44em@lQC4o6!*i58Bu%&St=`$G34}m5dEW->cQC6dNd=vRtivk(yu6rThBIWTRR<1tL zT-q>!aYO?;*JdkMp}K^*RDW9BP|}9d?@a~`)MECvw7`L2R;coR(2478StLW91`B#r zcjBjZ0|r|SNVOYKDkZVmb^|h01k(w*%xJTl@1ae^Jy}M=W4NBh#rvMFm*c+UeNUHT zqLJ_e-Y4Rh_dQ)(Cm9JDcz+hIN&n;Wkc&0eZnT z7QY7^`_78DoTpOZaJd9ZymU*OmO)h|QEv+ni|L74&%0F+xt)iY=7ILoFQ@=VcEXG^ zJGDTQ09XzS4Zs(onanU&8(1I*2KGYNu@XIMOR4K8`Y~$uW?|CPmI=ZQsI%Cwf=Xnb z?G~%4FuJtHTktgDSgp-Pj{I3m~B+x4w#Li0BAK z^QkRNClSew?;U3R^fbGR3aHDMeJXJljnx)Z25>LF+X8nn)KM{wWx8k&({1e`L^7>C zL{FnlxtH^yhstr%o?Z8KR^8BOP__#@``K0Y{?%2wSfw28htq0a9Et(O*)^Q!%_>R1 zf+Xq}^_=Hc2xH-gQb~wlES8Ry#*JkMjFcQT%g~}!^)#w~4zYmq$%Gbo=%n1UR zRcfrI%&-)4)cy3Qn-hFLS~RUFQ6Gb$x7l)wAIEvWWUyTlc_vPhLqib73)~rEy31Pb zqTO5Y_u$mM8H~9+NTlxf5g9)?IRgjky17uFXPTk+R2G|uhXO|aI#oa1MGb-pOS=Gm z)hH&0%0#UYtRNp}hVSBT3cpywFMh^S4&wWoFrUHE{@^vqxE#Ll8im*X;IV$lt+*V> zm;l(x`qv8$#J0unu^;S^GMyh`4^`a+@{9H?cX1MHq5Wv=8Yk;xgiGgRMc8MfKA2cn zk&f@N&cF*4zuwXkM?%qP8kc%AC*ybx#5g0*aSxr5-GN+KHqRB{Itbj%ZN~i@BDs))W@d<7b2-FOFv^8s z?sVvS$fQw;ribz5$qL<#<@dheO$RcT#h=8DWr2RM#_}SpP}7(KqEWKXC+V0acBg(jO92SA7+i^np^(oSoQ$k zxi)z72wqBx>5S171+7dOL7aI07eZ`SXa~fc*c?fx)S5x3+$!{qPPs&FdKRu?Upddf z5&MFF1mw*gW)T=JJ&S&1%t1lx$pyaPjX2y_RH#DHCl_$S5Sr8?y~Qts%UPFvU%}dZ z!RKr6gIo?8rwCEqDf7*gARZwQ^*$_;|tEhS_}0T z|5(RyXa1>s*vr{8Th!RO*aEZWlsyjcC$`W$OYr;#JrEDcgu^hn<5@GCaM^1xYSyZ1 zUudDs?68j226DBqmI;(LRq?IVY~ID^b@}L%a@~ezYMP-^K#XzEo~v7x+!HjaP~Q`b z>RWwZ$$KUD=M|`(`o>h-c@sKM#uC~X^rlfyTAVzt7fI+(;??5OUIcD-Clq0xYiin$ zc_aCb7|yw;#w$F-*QF{5TPf%UG$&2HqD%}9F!2Tbt8h3F46k?&f*X;yvWztgDkgs{GxPKjqKH2%dtbJZ*ny;J-wt`B=A&w!w;;|t*BN<76BEo09He#K@T6J zyj+HBLaI0-;W*=Z561+^y+_V*%)ogEh~(dbso^ri7rNAW*l5B=AM97;JNPb%F^fVm zfX^Q6n91JQ7IF1+n&D~4HpQhrIUc(w3k zl7R@L!*avtx>2l~8m?iTWieH-i`X?uD?N^lDt->8-oebwa};AAsTs-x(FYZMiH9}_ zR!9*=MsX+o1XYy4u~37hpCH`JD#4s_ARth!qSWN($u|Ntpb>O>;i(vDf3-U4X3nBt z%+To=0=H_x^3AbO@8d?M6*-hT5CG;aB6Cx%XWQSACN#;@G7b{t{B~R&IGuV3_>!+H zg>`9BZ(+*}JaCH%E1&|dg*BHj0w5OG$^ZQk@!`kqelQ+b`nW z`zh7dC&ijzHz2FpNkj=dE9@qm+qDU2+D+K>rEUU1^BbBlSDNt5%~2@CngF*9HsLV4 z30ojYbb`XVJPQh0RujNn{e~ud^9iAFTz5@Cpa?eMg$ipR%&txN9h*RU0eQcHsscCk zyd^pmBPK(3yQ&ZI7qj z>K{A0wEFXDU0aPnQPSw&NBT>n2U(3i<-@k#FJi9#hS5%v_GY5JWgi-4rD$(Y4V_bF zjrs*$8=8fN%JggaT;qQ3Z)(b){!P%WnoH2#nwo2tM~bnRiM@#GXSs~M9F?Z+-J%6E zv&JK!g;9P2x5Xe$<28Kg%rle)I!%Z(pWSJR*cx_!udTwWo)#2gf|o6G>z2Xh1gx(s}6|43FzP1v~~bh zYXBgcpkdV|4W6Bao#w&Nc{Z5gE2>GKu!!O&aYt75U=#s-Jb^_(?RjP?3|}YFBL?eb zwCin0NOk-c)%C)+>vTTUIR$%sI&69+_6v9_%rcy~>kAe_#Mj5dWLKv1l&1o8xRPSG zsrGR5nmRfl`$bsf?UweQjiaNpdUGkt(^fn7nKkCRIY%-$>~J10n+#JKtm)P{FIcYG zsu_#WD&FfV{sBs`NfEu)XIKRX?prz#ii1&n@ z#GctjRIf>2V)@b211R9fk66ITD1hO_=fh$aoD2F71%rtpnOYU!qRIm(@F^*$BVb)IUrMz3yXSchI096))8N_pp_ytYIjhCk$S zAg)Rjr~QyvJBAkz2M+ECKyX?GeGy}K97@9<7?S5<`Cp7-W8Z3pKXg5278E+%|JE}L$VQ~P5=|1$ z;y3&-5_ znk-vRK9P+o)v)x+?<`aUz ze69@T5u>b#H#9lLkf`)B^1;nQ#>eainmLU{b0n7#aE)dXzsyE6@^?V9i-{vb8Rv5_ zv#JjlI_B(mo1I?#Pa7+$Eppb-bp&wKB#CwyoXApYAF`@ZHHvkHM+g$PsPt$d|8p3b zjWqFvzhW2xohpHj1++?a#=p81yN*UOf%ftf8ffixo|c3tY^~hY>L;`Tg~Ap!u2h&% zs!#BO`ESwrZ3>7I0-e4rP;2oerlRO2pS=cB&%#X=Wwd_@%zzs|)kl#+~j;f5+*UHanJ5g8g#9CyU|&bwf$W;I-8T>L%HRosm; z6;HbucBsM+m8F)D_5~kHrJT&)CHSR}4-a#9-^zhSa0H~OabFRz;dxNWZf7E`-qn>& zNX*W-Cd(+}-i!xAVA$DfK3%!DsfFo3!#bw}SiBld_l4bHF}A56)7hhDz9{+=cEKeN zLXF}RzJ8_=TWs76vZ}p&8)d9J54|Z~IkB9xV>zX5N5$tn4LP~r zMbNh1E_F#Sq-)i0>N+IbnE%48!uqo9az6!CXN3ibH1ttjO67qsoOBcubxYZJ^>GW+ zVG4?s1uwR!w;myxvfKXR`*_VKDdcfHSv`SXGZ&YM3o`S}jG5U`=lX(A1W-&}4%R0f zP}BsxIY9O=l^I$x-wYfT>nxx{Cod~t6~7KF$igD`DA6UPmA|1wwZ5U4X<_{p7pTIS zODOu6=yGq8a$ESK#1}4fiA4iNe~!~tfG$KL1i6CHuBP$HADoct$EFkX(YK~LW@dqd zOktf?`5}6}fC2W5i)7SjG}m*7!_V5e2R5O*X8L~J&+)1b!< z`E6HQsDvRGyn~HQFduwNenwU`6hp}9yhloh^5@7lt{DhEiS#UE$YeL80#@mV^KwaR zjlT-5)_VX5fXFW)IF9lLr^EbgI&oxjCltvOb!skYS)K&FIfa^43?h(@ik2&}l_LtT zD1sbH1i{ygNW~mQ+hQR1jepESkT)Gb6B{=QC2BX+_EFrZKzJjWn*y=^?`m4H51=Td zl&}kWew=?*3|MBk#3iUKQ0qr!7%ZKGlT)(8?g0SW^(7=0jp|G8dujchbKxIxlFVUS zIFI%Z5>%bXss$=%#r9XD@L}m^Ba(er@C>qZMj^B{2A7wi5dR-=x$#)e8I8Aav#4PM zjIyJMpyB1K@W7Y*1Jm&{2qv41lmMYX1OO(W4B!MaZ`hp+oQ48Up1C><$m`U-a>%)N z*0EV&1idJ-0&%*fE*9#Hi{N#hJL8s-#ixpXFp58b&nQGp?Fye{eoxpiPf=5MSSM zS*y=zJb?_O!qy_-CDsX-5QU_Vtj9F{_`da+t{=Brj~V*$b?ecMM{AL)!YzXWt>PDm zP+HAbXdLD~Ur8j>8ta=T>zn4-H++Q-E#)o)`w>9@xOx@croKgQ^fnNRLb7&A23Lf8 z&2}99C18h4e5=Yolm23#6;G0iqLoocklZJqFp>4CA70mRl6(h&p|NXL33zC|1O@o? z=7=v`(S(+%v~;SAu{;Q{*)jE!6hf`IRqA8$rLJj=EA=TpAc#Nv4+PoEzIIQRv7l*6 zvuir1P`j+eT_}w&xB$$;0&EWs5}-LV=V(e(3Z1k?X>=?X^#XbiQgehih!~i`D@lEG zx~IOF5khCi!Qa82Kcp`^5dpvJ{IS<(i~Kgmh)dx>^e>L+f|H6Tx)}iyVSv~ot57oC ztPZoV7mJ3PH6NuCvDgu!Kofq|O;2T!y#Ed@27w_S5&L~q>tfkyv4gjT4ZGv&%Mq|x=sVP>aHAqsY z7vlqHd|Y%y*&-$r_oa4Njg@9y)vp&dO!rCL9MS1yh!O_qi~Wq1({uvj{-(4C`9?DVN(|(++(Q)EE8B+h+q7ddY9ma^)JJ(E`3l>rSsG5%EwaEphq0HIpUo4 z29~$d8u;kyBBKQ5jl*S|LQ@F{3Dm}hb3vJ2w|!t_V-VUQ_`txcMO&J3W3Z(GQw>;6KW7mK@Bwpwa^qKop3+SlQk}faqd4v7x6W?w#5PTW+rfgJ-o^&eHtyq zQZgL)kPuIKTJQ{di-Dw}`yHu@^hWenLySc?Auoa5%tVycj$bM_trUnf>6#G&cjSW1 zgHb=oydJ~@bD)L=zu3Mz0;2+V=@vJZD0f!1pdR7@#DDY%I7cBbv;n+WM^z0Vw`@%C%UBo^?m6U7t1A87ea|PI?zM5QK!(hDH$nLtQD$L?V7ZdV^>y%f~7Jm z*{YAp`_$K4_XB`Hna-EFb7jKw+0D+txBC?1U@-`z!uWTZL8SBWr(f=l zly2#xtKhy4s&LI>6?{84R(?Lpw97B-uKZ*vABFQvOWA>Nawt;m42wpuEVTr$M5{JL ztS0W0Z&g0|cc(_-?iw!erGS$?NhT-?bHBTq_% zdf+_VtjiaWG^(>MvFtEjA@N~8d8Lj;`Vy|iv(NB`FUIz=?)w2ian(jb@v}VSC*;VD zb{gvvChUJO{wT#PM={pnh*hM8Fv@qI4=Vuprmy1j!c8^!iBmdnRIXWoqdG_a4wt`! z5%a+>pPAqT;&fp@!OnF&E0|oBnAjr?XSdERt~h zNXrb$j=>?mAl&atYf~c5$gBMU((sk}EY0l;X8MA+!0_i5NG7+yuJ#sJ7Cj=4ybw~1 z#J+(Ub&5Brn z0d6V(ujQOqPe>7vvt==W7z%HxA#NA0bX@RmbLZm9$5m(y2?UTOJG4b6$a`dx-Uk*# z5)uU(oL4iaIV_(K#2Rfo$QPCu+f>y#I0boQR^}r$C}4K^S_gjA7*Cjth=X;hAzC{$IX;gT+pc#jb`6C2V822`p{|U8NoP&utSH9>(3U7isKI{Mk zZ<5bLfnn&$U^xvN+ga(bo`z|qSWZvhm>oQOZC|t`;>^P^bsqh#TU&pGEEJd68tVKk z_yK!Q*w4DeGjUv`{B7NxI{_~rm}0VsAd_g8>8L_lRHHd2!x8m0>IWP|x$j+>cz z?=t)p9V8AmrA$iJCzAqNA)=2O>*dMQkOCIX#;!oG7i*Acxt5w{DctZ8A|S4NTSE)^ zMJ%Z+{-dA7{o)<*xDTg8Imhj^)6L)* z6NaH-e}OtNw|mqz!;b{m&`zJ{sR#zL8&)$h?02Y7_|C$kus=n;gJ;H)Doh324x4sSFBP)zsK&=CqUO~SXt#7z?(~hplPnAx z@p4xTYJIsgzPK+WrqG}jKFy&WVtm>Rn;a^-+)lJt`LbaelVtM7*~S z@!9|Q_pEF`7KAVwao?C18lkLN_ypBYYjf^=Z@2*?83gxr0 zAc0>11z^wXP$Agr@upK_KjO^Oja?!1;5k9>&?CfQM93(@c0(pMd>K!;Q7LR8tkWMf zs(Jh#9wdyT@qrn>vxO|`(@7w_OEMv!*tXSE88Yn&XTU(ZcPP=Cg=Iyg4VU@ai}!6mRt-FHh-E$?@$@3jscSF;r4c$9ksXIfp6bd?)P-hPAG`1| z&nCPV1?qRbBF?9gNa+Vw(+O`pm?;Wax*P0iHEVyMv#D9D&NdU9%;5cOx%tNp^4XY% zV3=G`wD2~7m4vAo7c9p0QUK{|Idjy%rvMXz_}^I&_2`|Na+g$bD;M%td0$sfRvGiKQOz=i<4#-R}}TWu}&3I7`$C!=sZ0Pd|djv}T}5{_r!YY={~5lz1~=H_9I8LkO|> z7(OU$Wo{<|1`$&zcqo3b_)Ft)3>9Xlr^F0hfKO5CaVgB}FEK$!VKRfy%cblPiV2;g zZFbLuk*;_>!!M-4w1V<|3rAhp2+3DwC`-FV!}b>+*dEdFd~(18g`V7~5oX`)>aCMW z*RDW5Yu|HlGMNKbiXobXtw()&CvFhniwiZ(JdLv3X&wh;Eo4%O{e5V>FE~GdzHx%$ zhYOU}(q^60?f8`QLudqEs=_aR9>b5u)RnkH3Dx*9>&t7Hj;l^0i19@Op77J8f134A z3x4X#75;*aDR0LQJ|X{&B9if=i(op4A?6_t`v#Q17X$KC=yS2Bf%G+qV~KUp~9A+jb>(D(d7u&$a}A`6)T>j#=_7cM89W<54yr}V32`$d?@dPD(d7i;G#=Kka)?rL8$37JSd#<$ z^YSWW3grwBmJ|HwTnZ*E;jeytmI{g-tfUe+5VvmJHu0-aj)_~s9k;o-ZNV*0LC>oc z_@k73l+unw^%6??+Hfom;NfeGi-Q9aM)12=){wyYJJgG~!8B;GrdtaVThvGAd}|9V zc)CN@U)_wLXPFt&%?Ns`03c~baQ;ff9c@7+X0Uh_!F>^^2`n$Gy;#H%cu5*oxscQ( zp0E@RHp{;^4bLxTu(}%W{IKKj;dl{De%sqXXofhdKTEm+pM&g-8%GwOVNnx}H`~=e z5nP^I0NFwLOwh+suSpG?C5XhFMRnO3H;km=9T91p`kQ1l$`bZXy&HuftsQD3sj)9! zLT1Qu;eyPd8-U+@Tp$oK@V?-QzTgeXVKZNy#sc=G)qOz+ZgAkj=>)f>plEJ_`oq^C zbjH|JZ~bHhoQ4EbNBQ7}3|wwpFbugNmxds|@Z5ZS-`5|$0TTh|#p5ix9G#=GZ*)4f z7oB2;&XTDFLmdGAPv$;T2ouDbW_bT#*0&L3O?ee+1_T`;nIXX(44e=mUuH+qMZiCz zjZe=Rv-H&(JW(Aia|q6WFpTe*ca&%!6aAsHy)XrV)iS(!Y3OBMj6IjSK4&M;H&6n8 zJ@F+-KuTs@6-AvOswnkJG)ielmo2-CdlLkGRT-hk%vglL?6xQ|019Gx7$# zpN~EdYZb20ngBbJxZ6DXYcn*tz$~56o=`kgi;W+{TpM``%wQk=GBg}`3|@+HE+WGH za-LPVsaF6o(0u7dt3))>RO+M`h1(LkcQo#OA)%d`Bz2;@9z@f%G%1=8x62wz4_O2u z6Xu81JNE48 zz((!w{h|2)Z$I)TMmbG3X&Hr61#wMFGc!LZ0_QQ1PHn{ygvhmjQ2bvUzU7dpDKIhFzg{1UnLh)b3et}=ebJ4eLLG2iZs9fV}fLoC9_hd{S zS)7gC4Lkk{jZo5UVttZBi1k2P$Ycnq9t?GQ28YNd)YptG+A5eW%RUxqO|8E(BumzLz}?UJsH8%G?k(^VAezzb4cTHla3G?vC&SuB2Q-b8@>-Y33#B zrqfg_T_`l{n8wJhN;)tV`pDAiMu#vXb zFq`nQ{IxVUJDnSYF@LT6ODQQqpd7sldcr(`LZcetiSySgkz~~yX~4O*v&~Q?2_J)JjjCE{HDG(KbE_40ivT!Y+H@f?HR(n^5GEkiX((JZDKggI)`#Z>!6rp1RQ z6A{l0!MZfh0X;zqVot}$gDChbWV{wsYaCYy4mxR3gC*yA4u-lTuyz$*0mpZvD&Uv* z)q7IC{NHCE5zJp7alZE?8ZMK_v%(B}>M_DA>O9Yr2g2Lu@sDr6)N@O3VfHWF32P}9|)j_3|KY^0y}8&X7lKCflfIEW@r!~ zG9Ip2Xx1elcURnHh9`m%UCbQc7&oFA_$>8>xn@aQiW$i%X&Z{p&ot&VC(ksE+cxsg z9;vD04Aex0WR27XXQVZ_3ETp&S5S&6;xUT|7!cFmkL1Fye{~gJd&3JRctb}}j&{*H zFKulGQdJ9(fP43t`e__YV@M%>F|M?I%Cq8$GhQaBj2ZM-Ai()uLP=8jWMl(w_rZJMvvJwwtzB}Kh}8(#?Q0pwSPFx#Sbo*kw21J#`% zBfC5fN?a2pU^GP-scWOIn82XopzH=deR9d{JURS;YqmLkhYo73JYHU%eb z^%Jp~`~^#A;@^wq#Z(Ni#70vsxz^C^V6aa&5&WG z+Ft0bF1#dxl<{D62p2R8F0vU2VOUcH)}jnuLxH6VC!lA!ig8l!O(|Tgxfa~W5y5EP z0ySTx=)_L;!P$E|%t#{(86p}#j=aygN3Q%*#;i8rgV7s#QB76~X4h50b{lWWg_H(}WL5UqY z4vG*E2dJqnJ8bmg=WLowj@R>9RMPMgXWYrJ5G)$P9{308?PZR(IR4>Bs8g7+XscLq zgLSwVnYO8QI@8>E)*%O!B>-qz6b;zCHV=<#FyC;9yTd$&n^gO<>@C|*D_`*0s zM#xxFzgmj~l!;-P*mp}PNF4Ub*@gfCuoIdyRR`&DWmP92pK?Nj2i^YzQ>bBe-h&_T z!-z9%Mr!M_`?wH<;f>;UGd%nVGu$T=x|lgmd7m7(b&x9o;rt+xWNw)KU$edjG!d}7 zLst&6x8_t$_Sig-JqO5M3aH)mjpmq*ZQD6*qW|0%PR)|wDiRA24lELjwzc>&_A!kx zbdfEK^3Q}P`9$z~wNfh&&c;gVRvU83ot^7a!6%~J*)~;zm0Bio9RUjjW2vQ#OmcqYzjP+62~?S!+~W&ac9QUPle!zxF0Lu)#ML^K>-dEIi%QLr(EjgoG#)F%L5mGxpZhd<1vJsRZcd zx#0=_VNK_Rhi8~$K9~}o@H+|m%8fGhgGgdilg-4Ppmx5@&*mKigLd@^lEF!P!-Gco z$7~w+wzsw=QGE?Q7B4YB+Q7L^_>P5Q(x}x^#uZQu!oqm?DAeIi+{wZp#*1^pgT~<_ zgp_>|*|8KRGbRE+&nANEK;O5y=tL-D9s4CwAv_64`K%P<|58Z z9|PS|k4?eERL`CEQ(SCaBAHEb2MA-{`bU%%T^slw_%{tP&TI+}vWUe70ad>9VZ_I5 z@Yep47QTj*z=tZOpCg+6P3DH_TSTeLo` z7%n?%9kx|`p_6%Hk0A%;h@dv^LuSngPsvj&Pazt&bCt>Pg$uw^Bh0E-FC1^G2mcJw z$s4@Fg)0pg#r^Lq9Q} z`U@$NGhtc}0X^z8oq!*j7updT!l@Uz&=GN_Jq%_MU^qxJk?sEYG#njJ!%-3>;6$|k zabQ3fMAhpR(Lk z=DI6yN;8IJnMlh+TE3OW=K@@XxJv342Jj`=%ojxb3BIrdk9bEUyJ8!&?sCTnJJO%tKuSf>er(ZPFjG{#XA<`akq3foHPmba99uyOHvlr z@`pmFDmm3M2%)>_l9^6s}#KD2(;vl+a*AwEIyF+ScJc4A#5 z%+TEk*OBzbYI}cPmkffl8~osCF-X{=e$4m@G%6<<)DP$RW_-P zd&oL#{cl_}2h7<08WukM5LcFWP6iyqNe!~~r^|oLE#;dmf7x#@|4b==4$4QDns{Un zs85=7Nh=4!&QoB;%+#T}quAJUK5u;(`5pVdSOALi+O5+uM556%AXL=vnDH;<3hQHmAV27&N8rhw@@1wc6QY1k6Rw6f}@%1j27Qz6B4_D zL?P_BER%t4P-!9A$bvemJb)x^D;%!m+n4c&{{mPDaQ4ob|GG*?X`Y~?Cszz#&LF^z zk$*EHGQ$EdonWWfQJN12=?5P&7uTx+6xBA&3e+r5*gj-MzR=@rjYMod488D$o?V6K znLI&ncq$7&$*S=xyL?|LT*aK3jctcRea}8g)MiPARaR!3{e^yMg>SwX+6g;+^U^!) z!u;Wz5x&_U>R|ZhFOBjm@s&UH6TM{|L~GHqo=PoUIH?zBIbfP@sYKl45I`IzC?xE8 zq^FgL+lnyrsrgJUWO9j>oL}i*310xuDk#99oT!w6I~|J63~umU)Wc_3|0P;Ox|(UfrLrYR5*kV|cppMA9mc%lgEHPh9GexKCWl zhflz+D=zR^;Lj0R`mMM*JhGekV49avLz%PQqX0}UVgejg(4?MSL+a*VrLL;Rjj`Ud z5=d$Op*@lnDyyiL(X5ZO;EPK2_A=5xdQ3D}cW$*FcfhDVsXT*x9MH9*$;JTe3{{~v zHSkGJ8o@pbDcgpdrGj3LwgGT=@&)xv1hsY*&uP7krZdiCmVxfbf)SQ^45796vF!ar zsp(XQE!;%v7_TD7JWZyF4~gG3cYzgx;<&_$4J~#9>fe~v`0Dt|gYcD3ss^i#Wz4ya zyX?$)LNup7r5ro_Pw8ymR4^N!%d9*PuD0^*y|cU8=ICs%NH$&DImo#cJafihjD&M= zU5JbKJzZDDeaHKruFZJ&6t2~{c;D0Y{v$@h9=!h+{?)Uj%;vX81Cwj}T`V2O9V*Dw8XxLW2)&cxdWfW)LdUp#Lt!AjT$u|1Py~iF`TP zgyt%3Lhs_6P|H%*68Mt~k)cD_lBx47)%7hmLx)iN;$N=LK{llGu)O6!jg!C-vffXY zN9$e6dY4-DF1PAkj(V3$0sUETD=FTD#A0kzN!OO5QiP>HOe(cIX{^?j-lg6H-qm?3 z`cz)A0(yfL0s*XD@94U(iPgQIK8K0Ftsi4r%9Sq&&(MEd)ine}$?&6W@xH zE5Q6%!yfPm&FJu1R;6D*Vt05T`ipoW5J91ZhUuqIXy*_f19mv;1N2{`p}eu^kEHDp zC}jNThRs|Ui@xDN?;8!@So{HAM4TD-VX{w1vLR)Zzky`HD+%HrpolH|Q;f82+;jOF z`mmhw2=nwFHrLD<&1ClHUAvQg=-Rc}Jvn4teJ}Z@zofw-BM&|4 zWt5LVPcXtZdb9fWGc{^&g`~mC1E~DKQ2U86!Ctz6(XB2d%q=9dX#0w+7kY`)wAIha z(iQMc8QS~)-~+DcOsOa|JvVAw_bK2IuMf9sj_=xqZh`I)t9#?ETL1bGVcQYNNGKju zm(WWc`2wDUlam8y13b?Vya)pUJK$t>@!0PU5D*XFA^2y-4#obvWjfGP*pE?SE1+!< zhw1(I9kM&uDPHJk(TqGK(aPztQNzYzR~A2FX)DLlHLCQN*r6stzi%ti5OKV9?uJPQ z(jqEA%>&Zb=|k!K_3Fy)$Psp4TqZu|$>lzlLsXw*0+L{?3%Y`TX1EpW*0@ znPm)F$i_gXh(5RI=P13sC<}^PO>=jE=CO3 zar+eQ4Nps#qCY=F7k#Z&^q&s6=&Bxy21jzG1iVM}x8j>RPd%x5BOt#+Y|ghS=K)ue z*>fe2kj0i&qfrgl^?-n5K@y6~>ZYAWiDsL6f|zhX;MyAO9$f5Gu2t7ce1kr9sq2(e zbzNs1a9#PV%Rl~!4&p}HWtxs?6tDf7d!XR{ zVsSjUv0G^o>_aU3>;Eh8J{a)EggG}kuy;Vwz;M>j6M7jHe@m)aUmXOcHf89=&4B1@ltR6)p)&qk z;0s;93%g41^H|<*vD!z8URGc|KS#0`c7ZX#!`a%gnsnTn*G=UzulvC^vA7Y3`FQEh z-H~W4T1U@_@YMIg+kEBl8k62NgHtP{*&;R5?-?SpH|$9a?esxM3j6kr#$r+@qUpe$ z(Os_vX6BB$IOuDKS&f(c7l6Y!khww4I27U)Hnq>j&ItCkcC{dCPX~(xcURGN4udDG zg+EOK&Mbr;c1kaMmuy6Imu%|*h`s-aIRAJ%cpu8BL)Bmu3fr7$F^J%ayx`Rg zm1(R=sy+!G{aL|&#_FW!af>sudLuLtc5+@G*7C@j#@OP_|d!vWFK zK$+m$MN~9Kqq5S*E6SSo$iF=vB>(o|5wNvo( z-Z~K6DhIU%&v7j4y(fb8JgT)b%eqvxFTi{X`U zA(ZWdBWI5k95KqAg5G(faad>zPMYo@j0s5s2u zz9_az$0Poz1L~MYuQ<&AGr&*GNAQ>UuJwfa1u6euQU86IrV#aSsEDHeFci9f)PHqs z6!rgs+j!Lf;<$ZKfBMP;Mg4MytTeGhC8%#KI-N#OlwLZazp-c})4P+*5=0I2$YR=1 zl}1KXTT>tQ7w1K%{>bRm{}(KfT0f91vyeq*|6t`fm>QdAAt1f=ejWCQZ{@^?@*fj_ z;~4Zlh-0IYUdCPJB*bN&BGbMdf)i}FGh?&tanb^NFIjeFAPKoOxl;YJ8 zRS}5qy%mnRQ_p*x_|KGc;(vUI4gzrE1y;ZUH?6YJnW@jmkrK?@{Zo?5q`QRX68hKNQ90OT=SE)B}Dx5cBDu_%qiuA7N9fa%>$tlct8Jf#>+9*Bjk0Iq-3%ivhGMC({Jml}>{ znXs4!V$w>Jc#a2xl2~&K|9~*Hfq(_!WS;fK>x9tOtP6wE{2? z;yJc%*&s@7lU3Q-$Es};_Ix^n=*X@h+70$@KOlPUrtUzLJS84PPu)TgmDcCCUZLSr zg9duXFXn1(lnw0>KC@9h2ldipHGGDm#lHqVr?6fChV}SEt68fbe)(lpxB=B2MSM9% z7rh3;Fyyot)GP+~t3Sn-d1G}y8<{4d&2eY+xl}zEHw#km7>qxo@8G)LAYzyDjJ~P$ z;MSp`;OTsb(cr09fj6=5W@Az*>RRHB)VJag4HV`#Xz#oJAX1KpB^assLwJHFjTc4iz3wL^7m8u`w{;VYft+dTi8VIP3@hFM6LRH;7zK2=s{4% zX-eJCsWKoC9sYpeC4kXoH;L}&eKo-)OTre_3Yo$#>)BXY=S0iO*r%)!x-7#kt9_J| z)u{MvVPfWw@c)&PVIVQqqJ*dq1CR(?6S^}E6W)xYv?0(SyhXzK3e*%_tkB> zta)}>c`QqnXs9)+$X{bU-N=x28frDPKM|;%yHAN@b&1E=CH9pPk7bFCrU~(Qf##uS3F0|o?)sP`U2Xp0LML)bmLN63)U{yE7(`}RAFUZML%Vn81SWc zoqc+TZ9j$c18_q0fu48yrJQ$(Q!Y-cMT0>ItAR09>US^LdgtFih^|AZDd!LivC_(R z(WYI9{S5ADOo8L4=-<_I^H>ZI=ZM?KuRZ`S zd8%|3D{=beaH(RYY6B+W1(a8SGB<8LD^b&{M`_A2KUPx}YpSwpT4~jUl90xeWdBBt z#Jq0jy#A~|4HO;X%4R-%UDj$U&w-M1EmF2cSQYT0s(u4Rf<%Vh^#%R<)ToiW`7)2>-I)3_&|O|<#L zi}7WQKg4kS9Zn7G(tjyI|B5wqFsqDKx2lW>vlN#a@;22|ZS01=ny=)#j@{Y!apEMt3JoFi<#XDN3rC{1HPotHw` zWS@U1{dIjl1XZHXL=&(-F+9PVxI8N2?o!{(A>Qu<-ouL1vj;e}3za5Wm6k^<_3sCF zo<=!6RY&6%nP$6GS+~_aafI&Uhy$)}0;}_uzP1WQgT0t3tC`hTOG&&ZswCbc7`x+k zt-H*!Dti*b{ejJkMsSE=!IqO1j_NMCc^Jc&ZUAkmi+8H3qx4j1I9&HK9Tmr`i&s5> zXIou7QY0U1!|AgjQT^q9z(1BvjH-+OAL=gw^BVLVFt_x@8ozpg`PD%U^D__AT|bTT z{{hjW%fNCH=49)lFz=)qLiCKniG5kjWZ{Dvq7Dt;t6Ow8dOFg6wX4=MY=V7}`{f%$?0 zZ)jd2BgB^d1$D$ohZZt+s*^s|LdHC+hUruoc9O$hrjRkhlEeIaRQP6oLGsd#6tv$IsFthF+g0vwgM{cDYCy6-&@UZ)OF>BBQK#JQXXK;9)uE2E`0ZG+3c#po_qa%dZkKV}&|%m?i#vPAXv)^<1o|DK%Os zaH;WjS(YfZLLIEja@b|<249QTZ&8oLmGy^MS&`T5vc4pO#)&^G)RxuKu1zznc0I1k zYE&1*l{F$()-bz^kJ?2=yBN?#-E0?iDT=b?5c^m5=e55BxXvno7F_49+bynBpTP~z z0US20=@FFfqSOrVIfa&DufzuTzQ-Fsb?qL~F3A)LDWWdw8gAqXQM`}!Z ziLIZ%N`5KR#URofs?1e|{~(fJA10U2ZdLf0Eyg?;)&MS4uVAnMU$}-Es}r*-6DkMN zaL5~iwPk3CSHziKG#vW$T9yR`bwQj$l}4ZY*QoX{q%3oG5|I@8Dgxv5`%oISbcK8_ zQHyoy&@tVi4_Stcu;J&vA|nvykP%#v5hx$P<~{zOB`?Ci5~sw|^93zxwLJ`i=etUO zfVy>^fc$)LjnuA=zh-xYUtqRiAjB_$93_wX;$|IG=5U9?O}m*`gaN`1OzdSd!jl)l zKkG+ZzBJYkj5vRX9#-}lWkxpQb@3MjIYo{%bs~tjK+W9=YH0@mwRdhH)cW@!)Zm|V zIUP2hNe!^ghyfTq2wd=!_UN=7fvjBmMWGpj$vHeE5Rs_#X1E=O-Z0Aligia7e#*=p zu6b}Jp%GTKI&mgWR9HZ=QNIBM5}5Edqd$ax@r9;1{Ns zz9z;9KzUwc@&+H*rH$UwA02d$#1_GzjKJQ&>=TUDwW%!=YKoK0NPXKVKDAG1DTdo$ zeeX6$;NKmAz3oQ%XVR4YKtHaJ3mMZot*# z%Y4IFvrDW^88KmS3Ha%y|LQUV0bw*TvKuf=^G zQF3lCz1Ok&Mhgx3e}JE2TU`1-@bg91TuS_W5_i@h3tpzOdEMgW zur7G1bQz90NA-Z0At*xyFWau%A4=wczJkB%9wjHS9PHJ#9UMQAta(7pv@oSw-I&i} ze!ceU;A=UW{zzXCZqW3HQYnpsY!%wpc*;4H?xi<^Jp+xC`x(5q{Qv2X=CbLzxXEL2 zePi7B>baeQAXm+U{k|+EE;Z}-zz`msh7em0Z#|uuaTp!!?BUb=5lEF$cBZ_X4ic7) z-1JA@=rue*!5^+dG*)@C=ohG&re82^7?jeLer@bTzc$9vuMeer8$rJ|VsFWt**tq0 zO9x&20B3{(D`WvG{SkMBgn%6jkRQIvi|Cr{A5-hgM587)+YLB7h8*7T*zs6ajEe82 zmLDB+j-d-9^rY!#=skK@WRQSyZF8w>1` z1VTZ&K#(skdZ7+=7>gpB9E$cb6=Bx!sk;*XkI`D;E@6txznXL@?DDLY7MdFu#=m*bF z0iB651yO%V9=p7-mg0#S>J+^A6c`mvTMqsw*jw0~;KbxC#H$QWbbya@53ig!Tp%aW zjZ^4lciBcYBFti9Q88jo(7u9rX*I!pp?F!k!6nuPEG`ivM5jyawbBohev;{E!%=@> z8+tK*mwE!gTcVxSwyU-G%jsvZ;pOfx4LcE^dr~sJTyEIY7kTi%voj3LqSjAyq0F<= z+asa-mVDc2z=ysm@-bD_Z(xlly}*EEQ1^Q6wi=N}8OzgkXO#uB(LkvSt=s($*(z&qePQ^wlSPz#P zHsB{T3#LZXvF+Gg^ar?H1KKeA8H<2jL>w!GJ`y*KW-tyf0tDEBIA+q1{mUP~AO>gQ zkcdeVbuYW}Xv5LZ7?Nl>&T|+;robchM!eKP{IV-YgOX)P4c6(%uGsq255Uqr`jmOvZV<4kXv0D`}4UPKZTso+Ac#ZXwO<(x5XHOK@oW+&z(@(4} z(n8v*eh0QNt8zhFR^4PXv2_PPs7}>o-ei~AuXv(zS!Je8L78docA1x0Wj@xa%um2E z@HCKlQfg9bDNFqbL^Y6+SUe5Q9bvWpPYD1#496xSt+$mnlW91~)@t>h6LhO%JNhQT*dgrv7|ze^-2)J}+3MT;I6^hn>c+7eP92?EeF=CLZ%~gejK8&;aMQWW9}YI?J~p^WX)zC!5QE0etkN_0bS~M6n(8BOk?p z_rl2?+F6lqb|4ld&>hgX?`-WWxY*H5tlOr&6OV_x*8>@Lik9$_IYSHDu>V4N4|_y( z*lX)AE_)bX3^0#t=X5Q4N?a_DJy1 zbe9VRG|KfUMc5sK3$SJ-~t6;b5IfUTk;_SF^i9$cd8@s4P~Q(*Ds?-dT|vU zz&Gy(wO|k(Pn9?yB8E;~o_Lt@P);*A51x{f^9U?=6K3*p7Hpuhe*$|#REJ%-ED!hxoA$5eu68Ar=Q~S(uIB+72J6s4Sn*vzA$I` zvNIVSqa*r|kcuZKDd}~o?%4QdS6-Kz&Y&q@B8ZD)_DK|jx|piXc6MV;Gw&*ufeJaG zuuY*4;&>qC;(Qw^fmmtkc4&~M8h0Ux+5;_UrdX5z@|h$djm;`BY+5l zOCrvt_<=Vf);zzPOWwRMSt;013^UCLWYJo^-MD^(hUIod0bVipdmBPXv*Sbbx z5zswfMKsYj&tq05G=pW{y5x^<840}dtzY|@zpq-?KjQA~v{7%vzYo_4>(_qf@7>l_ z8Fz1|O@7Bn;B}VuYd`aMJ1&Lmd+VOh-CarV#=hfyPuG*%jfDBQ?#IRZo-UiiB3W}- z_5g@9!AJvO4dDX>AH<}2_k%nKdsUvF3@*yyg-h=hQ#B)nN$`%!a0{dJe`@%2m}Fl5f)-a zSvA%u3K39)LER-;xQn|GMKq{rd||Aw2#Ew02_%thFITC8;;YhDTdi8DRs>W?07C?X z_yna&d{hU65bG(%)PrCNc?I4<-=s}z4JPA=FFKhXU?2)nmqESM3ckjzsE!T zohO-bKWkhO%wmCmPJO8%D{o;anpcD0r|=8OKJC#|?72nro+4|-?2jva>`2({kFN=v zbs=j!(x3NK%sUH7=aHS3i%~xB?hth`ykjj`6^Ir1*miSnrql@T_K*Uh&00f{(0L@Q zgZ)#`wh<;1oVv}llO33=8_^kZ#XXi8@ZEz$3VwT$0%vqz2h8s&wEKaZ@vsr5@#D7s zKgDYD=(=LkG=6y(4A4-a1Gr(sf{!B*(%Fy- zh7)4ChR2R)4F&jesr_X=mM;*buQ|R&Ts%A?Y}b3X9lIX_16(|4smg#gY``)79byoeG>$;>QN{Zz|OPinY7HnIuJfPXB6RpNFgVw z;{eX*$6;kPclIeexw2Xp`vh`G0pt*Iny|mQ2VII*FUOo7F%Q^6QGvKX;GYrzP=PQH zVG);q5(W1&ju?W663PQ0ot4GyhG6&0V3Gg;J_0j=0H-fJJbnEQ+?SKMef_fJT^a^@c%(brb9L_iGOEfAhTA}@VhlS-=4A3jVC za&n>k8!QHr%8{=Ed88YI#jeVY>5zo|BKsc3qgQkYY6Xia`odJHt>}xJiTa>lD!+D|Lew$cB2jQofoxJ@zzQ%$@`fZ}q-|X!0biKAY zHoms8N1^wseY%S;p%T#^lq-NVaX%RMKZv0<+)j8J68?An{hiZ{cz^eAvB~+r?e8ia zxh8AK*XtcaRpzzr?|_KIVST4cz4Umec#r>;2f&hg{Frun{5bSQ*nEjZQ~AaI%8e;u z>lqOY%%CC5ofCOujd?BD%o?Aw-0|z>&SRv@wK5p+fU5M8=Um(;5|uc;;(1rS_M)tK za3cf<4*$W{8wTC_U5Grf>RFw<>e--XNnUr=ADHW)RZlfePJ!wd!znjB2rdm!;CbtF zup3$TES0GN>z#ddWRM{C z%kI*n;=3z^zN-F;aRYa_a1%;Kxe#v$8fq}%dxzQykD8P;!^NjE&TzMmw2=#_?TL>w z+`0fWlof|_%M5pQMLNqDD#LVEPB5|z>u4_;h}okEx3~_$@juK6eK~dpfPtEGD{n-L zjnws=<$@*Q++YC=wsSELq=s@^_{nx9^cBVibM-Ul-ap^T60!<0DTd6CI4SONSHq|b zlETN~s8tI(5{4<)s0@YEAghU_wN}m*lX2FF^BDUY9Yo7;SR21ar^X^EofQVbnqmKutb`nDq>ZB0%Y}p{-Ee4zZ~ zwvMjKpek{0rR!TxTpW7V(IxoC@kK6lf0h%0sQ|h<{D*@=;p)wp9cJMDTwIkwnW(v+ zY$rF%5k9F3p2rvwG2a8v_H)y=0DmHdK-mNt!NaxSR9WCu!fG>FZMpL$WR{_hGnz9Z zc!-EQv$BF_Phchb1%y&o0JIj0zcO9qF?NxQoC1vDFL4fPP7mcCASc;obCE0*AiRgw zH8`n3sZ1TJtOYm0G(c{$)m=>wZ#ZYnQ-xW8p4v|LoD*Rh%FHcJ=87M?lpT(&>CN3M zzDle3G3B-(+^ZnHs|KsDkokvN7M&}e{YtZII)!4h_@y~e@nhGr?#u{H`YEpFw~$Le zt*!X6bJ;6WwEP11V6f~t}nXKy(B1#t+N48WyUVMGeNU#jrs?e zxnU;v30!TFSepA`LW7<|cOXa-3pq&^$^FV*y%%)0{m&G;Ebm`-YZ`nJ#KtKDD|d`2 z?_B%y4w3Mvhc6952Va_xxDq>#`Yf%ZFHNu5-lgJ)lxZPEpKnM1;RoK7h*=Hi*(*7$ z>MOV4Z>Q#ykmwXU(N90wiHvAcnv~`=$%%x$?S#DrzEUi_ye|7wL8AVA!gem=KHsIA zGb|D3z;-sGU$>*bZ{3HhfO=In30O+NIvVj$+VR&CtY}g+r_hCVWDR6%sC@}awf*UJ zsD^A*#6h{4T+q2jdObJ1FZ8W6N1zZoE8&^axK+d4kHp6z>MvJpSmy$nwr=6u$Ck3i&a~I*9N5j4Y zgMg&2rt6HtB$sQqZOpq%YXWlPdDnlX^L_$r0;$m-uQ8G9Rh=s>o@;@f>zQIZ*J1Ho z@3XD+qBlopY8*~5@qVS9XPT4eeSh1wA@c_N7T_;WnZCa0bOI#02a z=ZEcV5vKRQVkcV`^BN=9NmjEKsOzkYTda0-e+A2-<+h?ZUA<)qa@R>yBkAfHmZlzQ zX%R*9BM;ed{N^AybQSY498vs7Ic&22bb|v;h64=>{r9=LTBMz>OKeodZ9!pY1vM<^ z#L<3?6lQscVKZOQalaJQmOR`Vh(ZB^#VDw*II$j>Z0DNPPOc9ye39n3c&-=hTn$dH z6Whu47oBUznGPx5$z0s?IOzr(`RLWJ&xtqp!#4$nbTu8qL=xr+=S4W13J}IgNAkm9 z6tD5Pvlq~mi(;m9WV4@CT7 z_~mm)VFltE5t8{A8(|Z|cKey{?S*+?q6~zW5cu3tcs(iI20V8Zx+>ru;Wz|7 zcNDUd(($>YP>i@s5Uxhxb4TH6;H(Dm3lJXunXnD%l0(LJ&;ruGj&K0MiMt!$FG84( zz~_!aVn3j=t{CTTa9kp}KaFdeJaM;56*klw@ePQwu1R|UN!trze*(G4-um%D z!#)%fJubSp(mp7|fQ12#m3GB+KGF5}^bCK^bf2s;16lC%okL&W2)L9lP>g7P%f_!C zzP}AFIgy<21qg)*MF=JMR&GR>RgjHGdx8k1qTbJEBR)EB(`=e_HjAtFz=y*FPTplc9fn`X>uN{+d^^^_!nRR@!OTu+^10 z`fa^_Gw=pEsX(VJ;?LU3Vt$myzG6p|==gH{L|>`E-^tNes_;`^c{l#1poALyqD2e& zv$k>(e(Vw$0a%`5gk>(qkD7MZE}Cc{mk((D8+dcsrs9 zU!t!RGn$(m^ga$UN!s$_{sxxT*d^jtV3BrWUopMhg)0usKo&2ix5j`v#%HVZhl7uc zQI$2mK)o|&cg)Nyj*j*VRYpe}Via{5EGMw*bp^M8Y7}PxtSnTQuUp9P?;WBik1TaA zGz5A-se}4c%Cg-{0$JFYa;kqjC%O7-PUoB6%S+UFPQ1qXJEX>=<2Aks9Rq6YsJ)#I zZSR$BD*P<;f3~;$3#Yw(b?uLz=CpU5u03AA_?H)?&)QMTksy}`4Bg|;xwYIaD>aRM z>OQRV5nybl8qX9Aj4#kz59iwuVY5Sb0sTT_I}BqKD!Xtd#_2c=VfwbmhDd=X9I?RX z#>Lf>s4ZZzKVY^8CY!Mwt;*yIg(ry#6wC&(3Cxqkyc);yE|vD_jWRW~SrGhcHk)XF zyS^#0v1ceU7siqhVgAi=l{{ZmPGq9rHYQ)*G0F_#Z?K~w|Dc;weJJSaAXzP zyd0*z_Q9S8b|MpaKEyd8u?wvox-~j!3%33Ka0!M1&&=RF{ESbyylte_)|8|oJ|w5g151dvb;xfwFK?-ld*lVno&M{xs+=ReA$itNi0e)7QTsd^=pH* za7qQPiK{sAYo-lBLY(`D+oeDmPUsN6%aBmRcM+a!_#$|;;j3KV2~^-fdEiHl#I(SY6dQ+~h{OHA9@<%$+|?LB z3mn4TyyboSeGT&R&RBPkD#n*8iY@3mg^f=%VoXvaFaai!!lg*aMl4C2fTx<^zv_c8 zx#W0A9P<1_A@5w8`|H78hZVoNf0NzyJlB8=)_s+=`*BZ~d(K}7)-Uv0fg=t+I zkx#Xa$R}|^=nW8v@M-T+MT0Xny235$0aV!hMu&~qI?ZXsdw4pi5$jrYBd$6gzsZHZ z#a3)T9d>CQ7Cbv%@STSid@BpKCNvR4{}~N)SwaijiEbQ9{{>^3l|#n#@|#_-d2&ly zYMMU2(^4O70#Y=KaL=xjtzOK2kt8EV^a(q>|jS_9qo?Bdg)-ySR7=maC}_LClGRI3xk$NgBlZ z;AYM#0$Kq;gIj70iUxJfL_MecYINUlI??^7b((7w9Ktmq?`O2Jr@Aq-1;$h!5lzxQ z8ta^UK%alebxAhPD`DfArc*xt0Y~$mxfK-iXDDlHQb90JH&Ovhf@x4aKL95ZPyLN5 zWuOpDQ!>Fc`~re`dKg=ph`+-^KOnfp`3J$el=*YiVQZtnYCa0OZE1?3aM31bCZt#-n={X1h)W zY~;1r$ZG}4;+y3Tu7)|7;Vzco>N4j`0#_|GJe9ybypdf#Q zz)GJ0-H-kW8%$f|n3f(f3S6>PvVrbTIch(rmo`0&KJ86d>|MR8DhC{X@B}*Q9KLCAS^#Qx#1jCEC(8R2N5g>=(`5i_p+fL zwu-WJ>l?7J-MZ4j}`!RSj6>!K!47yVn?e3T~mLAM_j( zn(BiMI85cw_KAnWb;0$ zs?2nI+@U!w>LzSvunX8H&4X5lJ8>h=_1h=Olze|SxB{l}bZ+b1 zwgR&WwsnetQf%vxc^$N^b0>DXg$%czh($ZLbsFN^IyvfM)C!VZi=!908! zb-tbJ$#^bjYbHk>t8@J>p6f?Q!_4Jz>bfPKOK;84H9#}AFOX)KovTExVJ=k)^B&nT zfyI4}WHULU->V=1%(t4#hQxje6$Oh*rKpFFb-r);UmQDL}*3eb4Q^|=R`U_cNE4W?reln2z>4+TnVOs z2jXWT-2F4*UuhoK!wAnI@VTQ9m#5mypU-C2?t?HnYlo=(%(RC`+f!(DHfJm-mN1JJ z^3*T1zD4l08Zdv#k3LyJWvS(Df+>c2`3=fFqiKlz-8=SVYPq=JdhIO=VE6h&f!L`2 zaXcwNN3DW9h79Z5W|*rpXjmH6jHC>Ipa5riubQYC@km{120ndRs6P#sPvT<-U%v%t zUmj|4NesBuP+**1E%Is@bQ{Pw4_hEoHspS_#YYnRg&m1aS zA#zujpy+^kFSV|)o5Bl>jrh&hA5C19hQ~&rbrG7Resh`}Peng>6Z6qU1lxbR6SrrnVsWh@+*7e&9Asd^RAG#H>hJYNJaQGSh9yReJZLm zr#qQ(HkMiMV^*5-dMlXQM#^P6vBya){Z6!AjpWqtB%t?{dMdx%>16!uWPk|SJiYYr z$}i#AjWutwzjbCi_aUV;W*NS+oo{FYy}MqsP@if#7DdQuZo;=~y8~a7k$~@2ohA;} z2BZpE56UJ4#F3l+*o7=!cW?o#*N_D97^qxHitAK5K4jkOr!r^eo9O21+Om{sOWM`R?+H3LV*qH$5PH+Taqd%e!nHAK4V_3;4IIQPI&G01eo3=Fxi+BG?;8Z zR}1gY?wkPg>636?(-Z(gQ4yQ*RsrPTjaxKvxCb+9bECjqibDZ4v_k=0F1BU-N*-u! zz^fqniJd~hCux}E(=4A5kuTo0{7T?zl)&F@G~h=KA7HBhbbTc#|VaJtCKq3T}LB*G8I+DruT9$-`mycvd6NJ6IA3U6|K~L7q!3n zNJZNmDw>L~q@q(qN)xm>okph%UP>C4_ate6CWl!AgdF0W>FP4}W9r|&OcQPhxrn}}hY7yUKtX3DA>jyC2PDMDUA*E9 zRGfqa_wp~(r+R<|NQ}Cc2T=<+=!Gcp^I!t4wa2t=K;su}X#dtnl4$=z6w#KbBGJFe zh9AcJat(M3G|cE|0)7)dIkit@H2}O@o8DtfuRw)u0q-`ohm-Bo-|7x|K0`2nlwHYs zkIni)F{G|X&f_H82>iN$Uvid*yd+f{JL}X}-Ss-;<|Cw>S2h4Lq^d+YVSQ7`N+0HCJ zij)YM{T;RctroH{ow*j7ah`C2%#D`Jlxl+}YF+U*crpQQ=C9WcFL1NrcGHITVO&zv zX2Ssj)_c__LrsNDsqmjhY;8S_MB%Q=O+x6}nCx9Ot<*_c4{w9elX?n5SJ|;2N~~S$ zYeZ9Wtvz(DRsR-*`r}0R1VK;W^F2Vzc9TZb($m`DbK<4MC+2@of8fKG6+-5N6&#kJ zux>|d9LJH`ME*FmUmU6Gdnp_xjAaQ2Vf1!A%5>FMFTv;+D|E{b^i0C&CxY!HjAnP! z7|jxlp4|=Ifc-Ke_3msIbM%0(cM5LnWr?k8xZwbBt5YqK((Q2p|M%U2S3L%`LSr5- z)qovw25^F_QHh$#Y<>kEKtZGm+%KE1qU?4kNGj|6f_jw$K*PK))m_~aMPQZJN3Qf8 zg7q`3M4vbn0;(3jdKc)0Yib(f zZ*WQsS?9}=y3sbqztBqUa01 zq4_Fep2^lyNcRn`#i2GRdEj#Au|-Ik6F9PLkbQp@e4MaBaehvu-r?0Q)d{7r9W9WWKw^!*%R0f;XAB>8^^Eigkey+73B zAbL04XdDO?^nNp-wa=DhYHII4$fkDC3Q=L?!s58OcQ}_W1=0-YFmSA2Vr;_x)+X#@ z4V+cR{^|CeJcyYu#o!<&z1#A<$$KPm9Kx*aO|ZGhV9%%?9(0MQBX42^9okw}1!L~J zi0@!R%ciDK7}Pxp{rY^NN-l%?d)q&<+u%EH0Zn@6RyxXkBAz}sH;&k zp10>Ksm+KQ0N;Rp3P27=hlZn5LFQ9I=6Q#bIlGDeooqG?GS8kuvgSZ}S5=+rtm6L8 z<{w1JdoqN$yMT{&*0{xE+dtLa~yEM}>+=&^SLT$zZn>xCI2O z<@+SMu43zjt{)P*_KqB(dHy;q9gH@|NwMPGesIsCNk zwtY00)+bk$XivpmN4m;JVr$RWp5nSI6xSsBGgxf3E;g>X{C>oAQX*1{s7OMnW+exa)ya8M!Ri=8-YGT)q!?hK{A6Z;h3I`bRToRDYE zuYA>sfqPP@gu6Avg8;^Wc>w|^CpXVCVVL2WKEJZVxnH=eKZ2c1kaJsr^U!gTt5=N% z&3ulcBB|>G7^%*H|Df3&&i$%6HJl4mm*ka1!se)3&iR-Rh5QbK@ubgPDc<9jKBWJp7{V-Y zz=@MXEfBzlJ;wQG*&+a|#yrDih-Ob@7&21)XkcNEvDWXG#uxI{K!Dw2VIe{hLNP)K zLb(xLsGGfz_WF3EhNotssIH>GQb{@j9Mu$N*cIC|Yd(Fp)Y=m7CRKM6nFB0}R%hX) zW)r=9{YG$CIir===S^q|o52>YE&5^J3j<$&>qwsQc#SmTuZV#-`h#ephWZn> zgzfnY;9I0Bmw`yzBD zOtb7sq2$Q2Y)Ae<5@R^{J*Eap`JV28z(pHm`J!xWhsFpJz^ES;eLr5VFV0id6H zvL9f&6~-T9SvKHPS3TXfpTp6TEF%i^lmo7E%n5$X36j3O?%Al0yO9lU#O*v;4wl?Y z;8f8fM$~r{4Mmh8Q^*50KK(={-eDM(;sF6EIe)7Up$KS~sU9>3;BFtB*4M&CT$=fW z4U04P?WI4`2Q3|);C=^tJ+ltFPzp8gqq6q6{t!Ferzvf?esA1}r@20)x(>L0I`G&I z*S}P_eib4~20zR1U&6vf?O676{GOF0n)vhlKHcW`m$TRfy4ZI3efqEC_gPJv-(MyS zRrC8k{1)f;RZh&W;rBTE(GI_V7DfG1exC|CHNo%S6(HK-_YdMAeA23Ac$WmfA0aob ziclwW!E0f583zBm(CE(-&R7Dv!Iku)(WbV$0`E8^kH3kv8`&tAt~Wo!wGDU@n7=Wr z-UUI!;84F9LkjYrX6x|BBRnDJk|WD7;utFzf>(I<2Gwzk@jADPUmv-Ec&j%SPu z^lLHWdx?mM)D#ghNi!o^5Hp%-d;bbs7)eoI-5Fm&I<^{YquTv8wJHmwYEZ`KTX}rESt+^5j1)*ac93s`Q&9px@}^-|Uw&BGii4KZ?COD_&v z78_+$zQ$I1!tOl%j(ZERBohSWwoHQ`*uA`;a!P6#vImyC@ZF6Y3aIe7_9g5l*LOa{ z1&1bFmTyw4XajarEvNq$U?LDDLimhsIIlMvGnDewl3lSu>1L1m3ukt z$g7JGk9ih=6RiNZWc#-QcXbortpx(EWhuO=E!{v#_{KsxO91cc!lUBFRQp6)vP-JY z;v0#(?sz(H(ggw^7_ux)jKi%~c^Zcm#glwQFS0k;i}jKU!*oFgz961I7@;2h#vc?) z7!b!F01v6>yh0;7z6kw*FS=m@2O3tNS00D@n?W=>*R7fjRn)xg!%;h|YpS1uETLy3 zw){}4te4JY1hL?drA?3cN_xZ($tkcDFrZ3r@e>qGv|5V#W8%<-1nkgj8rzWLwL*?| zT7@;Pdx=9*5Of|uc{QY{^RnYq)lfPfD>af%hr|`g0P#)BCYe;2Ir@ znvKf+Vi&jsJ_l#GA?&DIv2W6rqTE##sJT6=N>hKqwp{ZyHSN*MQ(X_Gmtmdd8_44C z$AT=Z1)9$Ae*5LSV(25B`_Ytj3AGJ&AAL+7h8N;o1@N+c0s3h~XLt2Oy1)J>?4)h? zZ7fwd6s{NDS)+sO zlhaVLtUJ6Xp2|MJ`b)ipjRbzQ?=#W*`*|0TQoPYv5B8LgwO{uS3enh)KPAz7ACUAQ z8*u2wjbMt^1<*?)LuAB@a86!@Zg~(z#UgFUBD$$0N$IQ({-l| zlDaDh&m=o1U+lBdRud!MJz8o%S~BZT&oDm`Qb_H#=uQOfM(QZ|84 zKu%kve(EnE1f>YPzyGX8%8rv0IdRKDdmU1zvmPc{*&z?xc^B)hSVUy>u=Dc8L8y-r zl{)u^eFRyshX*N(tB{gW8 z6xfEsG&z1F3t{h>NkF~M<-B_71t3&C&%c1;`AZYX8JJv_Myu|eKkKrZe@t}FbWsi9 zT-!;B{LLwcAQ#`FpLGBPLVQvRq*X(9ogVnZ=935q`^=YQX!@eG~$O34gl?vjC>vss{2z>4+q@C<>{S)yoBfR=E;i3$W>$eCY1U`2Zemc_Qa{tET z%0S?AN8v=oJL&k`QMeItmm*w;z~_#_MFTyq`G|iQ;qjjdmmK49os1Ac;B!Y|#{iEj zhLG;_xcJ;r=!bYG9iKZ2mm%&vgo_dQ+);S?6pyP4@xMp7_h&-*IFGA8!np{1?kLc% z&-o`uvmJ-6Q0{jgj?olNq1P;)$A(B54fqhUmdR*-?g38k4eIpMxRA~B=rfWy2kw+- zpTD%yUcr$Pp25TcZ|F$rg6c5COj!;w&K2`O?97n!zZd{7< zydsY{WAW>^Pf{k}XAwWBM|r%(N_!3^L~&Ds003vRw1(ZiL08x)ZAy*qlI3cp2)nyx%>@s4LJB8`WZnVng2$_eQd<3w{l4 zbr!Xw6COr?p>jWAHFWjjiJ0ZIJsvCCDC(b!`blB#mRIbbavXG}g(mZWzxmDLv#9FTX|Ei^{)N(d!iN3T2kYeSC zZJO#PdE~JSOA-Er*Z=5aE%*TaD-LIzTD(CY&amB^RyXEwW8_VJID_s@7qmKG;s*}I zwI1D@@~{TaXGjg=-jpSC7-{Y33wY8xQ0Rze@RUa2)x+>jPE_QAdU>Sc);32f>O;BT z+2=Ffd<=xP;|bA!!pUyfL|>fCtflq(Oom^d$>{Ka$6OZhj4r@E^N8l&D0}Ks!<^}9 zUW(Hh_KA$wng9`Z2Yo=t#PvI|$Nv(0*v4b6JPIBg@Q7Urk^`~FohS!wzTpR>&2YXX z(8i+Lpp69z+E^sfhINtn;C=N`y=!?*cT)5g?hxpM3)Rx^y~Nic zir^a=;j?hx(|#)ezMSG1p-)*$ zS5s43uW;^eCxwo*x9{%(&ImEjdMr>*VG-+k?Ak|6WuNu%0+5Kg1DCkw7*-FzZGaiJ zMl^7(1^bJSV6cfzexmG+kFn=wj)Nb$aUPtk#pwL7K^&6>GA+g?q+~?O173xfRpjU%a?I*wLed2CY7cL}-mtTklX2OSN$asXJe&3Rw@9zrwL#!FF|vz)3RP{Tw8 z;hph~h}rU~`{PSl+XBeiEo!uWgCFpY%`UKf9y+|I+#Q ze=YS(eiQjOJU7(iT8Xd;fzKUG<4H7=DJw^&5oWBJjDRP=FcZI>g_EFy&`L-I*TOBM2`e@VTSl$ZvY9inSBf$-E5G)F> zFen8cFKdyuLG?x%kig)RVfd&F>QHpa{I_|-V6{Lgok%X!i zjO#z;@D6X7Ka`8$ak^{>;K<4^*bdn9BgUaRWu88YU5=vyVzp5M2k=FZM1r+AWY(mo zg&@u#%E8T+#I6b8YXz_Hgsl_8YqV_O97b$8m)s)x;AV#3{t|bE9Z@`t2oJR)7~qH= z4{o+{ZmXD43-z(sSDV3xu$gTe!vtOvk>C#4F|yppK6o8n^V$iR-Zwld^1;~h z^ONmi63vl4QGdHOFrnO!?2@Lkq}jS8TTs|P^?5OYc^;|sjwnuSYV6UgjBN_zcT8an z14e`e#2e=$`;Me4zk?orfhDI!-RCFvNreH1zei-+}Gvc5y5^Lq1VMCm7ttQ8mP_ zVWd+-3Tv>uLm)v?EZ7AN&@Zj9uT*H>h26BUS zx5{EAIPU`~k9FQ9b#8%US*)qLjObK$Rda@YxjUtn=f(CCTntNHjJ8V=@SB_GDeWzN zjS_DB5?vj?-o2K*1*@O>+C53VSo|%~Q@OTi`}wqNM*L)Il*op7Y0ydEAeust<*m;r zoILyZFPJrpF3rA#yGh-bE1;W-GbD)Y#s@Jy&U+)*LTQ#sD>Xlc7PbK(N&W*zwyjo@ji-L|J8o=}r@CY0B$s{1_;Gu7; zO9s%h0Fdfaw;U}TpRVitw#vdko`)NG@iYKT+jzJ=y`j%T=5{Co=oLU8W%Px)m{#k* zK@&zfO%Q!@6n2(rH*gY*j>3Utc+|fQ3}q||d`HcNXD-w}wkT+gJ(a@&8*f=R2t@Y~ z_HgvHaP(GKf!^u~o38`hW&ziHQ?2SxJ1S@xK#3gSQ)Xj;190A`IVrAiIdr~$HnW6O zhC6P+0(ixva0D}LS5If^E|Du9C%C9?fcb;JK3JfQ!wc1GtpYBsv%vQ1gMK}r4CCr6 z^yF=*he580;N)$9WcP}62@!pW7~q~Nb>sbGuC5s zjEXo@k z!@AlgzW%D#9?;Y#9IFjpZBA_C^>3XuUSF=Z+k2a?c%`K)zV267T+NEZ=F6I-%OF;* ztdWs91AYYdx~mpod(eIHp2_osq}~=HIA0_F4^=$2} zmi0))uWE%o{~Bue7*6Db8cIk3#aQf>Eeib8M$RJES)zWQs*&@8p1S>NVw-A8gy=AY zNZP#PNobp{@IZ7WETUXZV>Kc34Bi7MstHzRwgJ57)ZUI}yaz%ojBWKo5Im1K{! zL@$EelJ*tmTZk@51D`Sf!OLVoQvj@90M)_qAt+_QIcLqlL)1sN2dKcE zQ7cL$h)KpFnj~Co9CnXft)9M*B4Sw|BX{@Iu1mpxV$JCoX1TlF57ySH0hnET+7*au zh%fBTu({LGH$6zSzz_W*-I74X3<#^?kX)*HJJeUn7fl)w+_#nc18QEY2J4#pN&Ai5 zO;gjX!1ucHO-|+Rszs>GSUObyOEre)!6gF8?P)SELYMYX~fGaCT{ zAko&#@1uW1_#id#m8NAl08>OH=hpyL`86eem}nVb-gi+b3r9~3N3R1*zs@t+z7(Yf zk|YeFf{Wzb%7jIf0j?TJiBNHQUnD3G;Zpl4r-iJGQ$k?-_Vu~qiwExdTSEiu9+pgz07Sjg)Zi-E%w1;?c||z{d+HZ6TX8Y_gCY^M14=9b1!Y=d(HsENTW! zdk7JQ(ZJ{Us^z?o&k~F*Qg42zzb&`LJa`4Cb%f=8;$so>(p9xZEeu*TB&n!9pT z-zjSLAw?DGq9!^;oh3yPEZ)a0V8LsrdOA_qU%Lxjwd!=Iu+!MHRwP~Z)`j(O3i}#* zr-Sxu0y&T(b&?SiSyIb{deYA}=vXHAd{61I zA|&!p7XSDRc%H>o;^GUmGLW7Dzc-kgeCjA1s=|~(@iDtMB{E8nC34H+y!(hP&QlLO zAcQ^O-|RGg*klTJlJ8gKaYA^r=`E~`E^XxAT(y;cO{GxTMRWX@qJ4Em?WKRFZF)$a zq2mBX6wTsRTU|b+;QX3UAA3iR@}bCt)kYOcqHw(5-+X*v)8oHe6ywYsx$Wh;zO|8^e>&|8K8qV2XJ-huPP{qBd# zt2buCb?Odk=OKVc;4Vcrn}YoSZ`l0A*=c&Ji@>AqtfuRbe9T$!_v_W)itTS6d^-g# zV@ocyzh&TCiT%wFfrFOlE;4@0JJJ3;9Zb88sz10A9-1~`g}0I_^tpc@xz7h`={n zq2CEbItu;!ik;jM>q=4RH`xmPE=UzIzr+M~(|7g3JrE}*Z3E7ZP2={+2K9aAK2BcH z$bE^gyI~#6uQUHHBn7b+gvU*3%V% z%L9`Fmtmy^Q*7@55}y@WsqVs@NFCxz+pa9KP3_w&LqC7B@at{ry*XNI-c0JUkYJ3R zXPd2WkIYePbsmq-Ge`Z&&hs*`EA{j}w4VEQo`1h@*K-r{z!%cIh{yG3gl7==+)-GT zl#b6G1}^5PuFr-p>Rt((Ob1;rQiqMZsIE;h84LF3u@1;tPY8?v(@0)T|2qw~f4J(jE zIlYiQJ$Nd5x>Da4do|ZOLSG-ulODWEFiSpv1XO7U!SfOwrE(Ko!_)M?f#>ll33%R- zhLo>QH#n+QQTLzkz2by-(Qmb9@}0hwc&l92bY@ZAj$@ z(N7s%mL}nc2UGqB^n67UJok%=ll0R~!*ky|4t_=+3eSJ`wSk9T0{#c^Y`P_ZpVT-! z(=EYIr#L(>K$8{6k2Qtn_d)1J}VOkr%<=G*=+)IiaYb}$jGIpiMvfJWSYXI z3fP1oGrQ_$L3UAG6(}f;!<+i+;RVbBFGNYMH~xEoH*X`rJr4r-pEtDwFy%qmU)`9Q zK}#qfJ=p`ju!O=%+TqR_&FrCHBL!9$oBTP&N0to>o1NSPs(@%r*x<<7;o*Ls-;yNu z@l0Msh*`Y>GXwLKZuaL~e`HxVtQfFi*lFtJ$tN`P(o3%+96rL4wJaMs)f$kp7$S5D zMg6`|v^Xmi%?aUbCW2>jKn`b8JCN-@iHiq)Tx-3uhHznpO-;@^mqFT)g>Se4)5*f4U47zbgE~UUcfk9rqwkKOS&f-a(Ce z{1mCfp$H+ELQj5oRww9Y*-9LX#qo5y-K0MM@)nrg$>JrUPv>0(Lu>0(&^1_{A<+k6 zF179ZV&e90zKY=~W##A(EE&Z2Kb8px44mDUlhcFZ{cG`9vG>|aELd9JZi!XbPRE3g zD{%35pK~_;7^@@RMo~$_KzSTet6!43L$?=r z7SN5{fCp!uu?PruXG5WaunLNB@CeRf5|`h|^Y-JxLQ&9v*}m_gB2k`S(Y`gzunpdg zs%w8$`-p4|HCSRzFsvIhpH3{j-u~WZaKUkUsaP=_nxl_FW@K}+g*_PZ{<-QQXywU< z2N=sj_hs^bCnLAcJ?A+gUg|mqtFrD??oB!qizw_+Zc^W`BY&N+m(Ro3@Stx5g+*S* zvSMY}!mkxXI_CXSJtSvBgM)eC9DA|rRn`wgJ~QAjTm&cO&I4UV&c&|>{1?l6q+J_4 z7uAEnQF&{trb;t1j*N2n^|TIrG?RioMvM;&Fqq1HHfgoGf?~G%-~eEgy4R}5&;_=R zW;Q5DiaW{Hk2p8E?NwcUGFn`3a8VShRwI!y+(S}_ix~C z$%?a}w4EhTP|-lD7oLUQ@Eax=2CgZX)IR-xUqSlc^ncTTADjNyFvCj8a2LEXqhxZ& z=v}~^)COhZ8sFusLGRA~S9aLMMV;#+1J|+p9n0I3Ln~|(+`~e9u_30!Ms-(`x~1+w zCu+*-)VW4#3kObU;40C`Ko1kjt#?=L;kpVoz@dTb!qIEM4(on^8||VL!~Og^Xgb4W zx-j^n!rEuN^_79_xee2xei?RHgocVEzvJQ8-hTwuSv_tGLpy8roY0Fa#~uw~>y!r2 z0=RM{-Hdnw(TK;rB+@5P6Tvc=I*qQO+%09nP%f7Jw9bTf)guNF4u1(p$FvyM1sU3w zVoZ~1c%oyJdx_Bp+SZJkF*}g8?8EIdNn5y~5Yat4H~SEOOJF9$R}b` zu~}lShj9xWHQ)f?$7MTkA9Ygy;OZG;V4c$=hSkS!)P0)j=$A9XCMw3w0HJ}LweZ+F zV45GYpc;$m`aG-0HR0&FT)UTqtUjBJ=*8*yb{n5Vyv7w>C-!NGfR27mw!JwS^S-;8 zBEW$U+s<~JPq5v3VPHbwqJYfx^pyk3gDKGuVKXH(urWb-#@??;iFNxrbM_GW+7dRe zOpgp~3f29T7EkzhoO5k595U@hUnW)OgXTgpEb&Qp4WPI*P#Y-aEfN^0)uu56GzNp! z5NM2yI}7uxI{7;4%!(t(8#t@=-86G zvhx=$Io&F-qz9Em(p5PO~N6W$4iqPrKE zl^%|FZ-2O8`N(jO{D^z;jSuaPMPN|P_J_>A*yoABNNi{=u3+#WfQjHfh+&%|c;uPc zXx~VbHe__1b2xgmv^Tr*5!u1JC>=M?L+;w7OuUE9_1L_ZvjNzX5q1YA%UvAEfCgD_ z0R@gi@?62|WvkU^n+2Do|BSX{0>c3``fY+8$MFZ8;VO#|I4;W;6t#rS>FJSyKZfdJ zsR?XhM6@Ph7S7+R>d5`z#z`|`^5EnVu{tp#`eQ_F!-&{MLWh9%j#{{odhb?IlXLU~ zNevNeGB#75$mGIIb9HlmW(DiOw$$cNI4DXf`D)~u&`f?+3XSJ`>QbTyy;c&T2JRw^ zgE!S^e47U(Mohqm0~R>{E+ui2%1$Ok_1yahQ6TisPv7oIS}&SMKy#kH{a@uVk+Tv1 z$sL%;qnM;txjlh&OvmZ*)uldf0;Y?hnM}GzM$8`~W|O`*gk1M#f{dQT#f2E6vYV4&%R@FZpi46kn^w5=ka@TaqXnys8yZXE^Iv-+&FM1#U1JX|BRVK_16q^%I!w0G zLpRjRBU(_1cM3AXrZ30D*JG0&SIPMG9OMtb?Rlx+_386cu*k>>4vhuPFY`HS zL}3(!F}Fo$TNBU%OrStG%jf(8sW#^BcZUXj9xDYgdLaP;nHR5@L~8;q0NpYeiQ zK7)`BaMMN?F@8SVwGanu%$v{^lZtVcgRI#;LZdyE&bjdh?5?G5ihY6`?~QQogmP>P z6*l{@K~xaVwJMOF9~j9~7{S6wZk?n=yuEoe2xE(zNAObm;C!dFkTphJIKIKXBY4Ek zlPPkets5(#f~<&tN&s*L!Xm!-DeuF+4+?dv%wV(Nchv`L=xQSf6N(v&0+ky&=VQHq z^4wn{8YYAI3DC3gTCaR5!)kPb~Zo@!(7*B9NNKaEInseuDarztu8S3$WllhhTg^Y2?sxnyMY3^*q zf`uTpr!43qLFGXQ6h@61C7dj3STKwqBqKO=ik7gE=UfMmn^4G7Zvx=0cG@zXu zZzaygTe_Of$}R8uSA>tItIKZG8*fu!f`L4X)my7{p2hJ4?tT@~nI4c#Y~OF~TqB&C z9Zjhl+7d17R2fpF0Yt18Jp*za3%b&xA3*^SBuN_OJ8K z-%5mHggfnLzPA_JtmnVQHLoEG;3wFM8VKOVYjLHGxsDPv4b2VrcL(i62%tI`W3*)Civius7<<|z} zz}5F)Np!4BbBN+m2qSl2>2V?RJ7XXmFV&Zz53%@xf3VH!-6QM*bN7`s zhs`%5oZQ6s^jSY}?16P-S;B=dm?jk#iN&tUz!*u)58=%8_<3q`of^0m(h3C+M*+%P zi#Wq*y}f}Rfu3!Ctu2!pW-nu@Yw@~2kKw?r`>HQhNvVzHhwn1nC$HM&zC7*I`Q2O? zMXM@5O)=h5M)y^Wsomu+M7TU{4PzZ(@QdQ>RIkhd&Nq4Qk$88%oU#mit**((Ya5Lu z`;#AHr302@Xu4wFCG{9nP%?O5!vk3Se9@d{>clXoB>f97Dfr23QiZb_DV$tp3W zS$@~#&J|>qG4BKMVz8T$MJ3(*3E%~lYjPYoohDFU03BtmaJ;lZPO(*)Wa|O51@lKa zFa_v-WF_TN3AD~J?+{%_^*@Nn=(CxvNW~;~(k6N_UhJgn-6y@8xd`tl>P{9F^X`2; z-8J;<;LtZHNM+|^twqw7r3r2chAb2Fu0fKRw|-SRY%4uyUvz&rmxcN0;yuO<4cD+k zzC~y3MW>v8JfdRW$B>Xw=uO7fA$IL#_uzVWce?-M)#N(UF{w%;NPQVgZ- z8k=sI8XxW~-E_m8D+pyz9CjgkV%C~kB)j5rv2$8Xhrco#jI9*K=gZ5j0;JtZ=X7we&^!#i4|N97;fZ(a<+y-ku=7 zQ1tE!ATeUCpd=>q@g{ZWtC*BR)*qjePgv`&SJ(4XB>L9|CXW7<@<*U%$rk?9-~9o8 zQt&kcB!Ztp{j*U2Y{8FvNmVADF9mAurgh@7PMl1w`I$Tj3cby08L!pN@Y)xsSiux7 zcU3C(D$x8sKr(cxUi=`A6}rOi{03uf9h(Oci2B7?9bEHvbCvB0nNabGX)hvY3Rkal z&wd33hj_*H6x_XsB^7pvDA;A$c3a$Anz#e)qr$8t4Bl6c)hRQBe2RF0cgjhIH4^7H zARdO`wG6JY5P>T#yHCKCmYsXm=R?HfNr9r~-%wbjkq&|0fm=Ie*r?mLiG7y47cLV= zB$X1%{%ygp8$LzsD9Fzqcdxm2bdd+{bTdTuL@pD)EO_}gjq>E;ZHz`1r=D4Z;&mCV zQk*U$9q0{5+mvCL^D|ka?C<8tX+mAbFWBOJ68vF<+Ilhda~ghQZIzTJ0P3cJhW?ww ziXka`CdxK@et%If*R_V(`Gi8C5exfsg6D#zNS5}%|~Y@48}EZ!K$}I?%*46T3yx;iYB$^ zYMQK<9wW8E#kMRW9+d)1xy6{?{9?%bH&&;HI|wh}arC@>Q5RPzw+sg4(^)qS05lj_ zmqHTO&r3aM;bgpU#0j0|o1l434>9jOE7M*1W-B?xXLV$mV<8gMjleeA%#(uEvGUA4 zRhge6XG$4%A4mD2oGidE_Mb-;+C0J4?02{WV|ZT$j=uMdd0&z8M&*Q~J{0R$16#2c zSv$(lA-z0ZdVOq;x|P#yqD=?z8aBuJ!WLJ*cV&5|Ks5lRsJS76QU@5zogSOV{z@^1 zwnE_h5xgOk`^JER9&ES(UEP6nb!!HV9FbXVb00qh?Au?8ta z)&ozmX7KJA7el%;Tk}nS53?ZMG&;w;yIv#fM~79m#>yZmtXjdo_BCIyjM!Hyrt&{Y3l%T4UZ}C{-SES^U~jG6RJw z?<$D7tIh^!4(#sg4^fM`F+Rwb=OETF;fNviN2BswSK08GHwF}-!kG6Te87?uB3)G` z(m~`2Sm)mnSeh#HC{o;s6pS4trMP3>tMLKSKNKZ6rZB2d6P~;348mYuR1ouCz%t{k zlxd*Zg}p$)DmW9VW8Udb31&C63on=j+|@^;04bMW2eAwSc)C0^;!frw^~p;=@>C6! z>T_jQr?4{VJP}qn?I-JrA!HnX9fgd!A~UH6ZWlQt_D{+!_P0}@+1sGP*J5%Cn2=$H z2!^o*jndgsSLr=-RO?VI$ro}tQjls>*-rEDnD;qmG3hiGOosmF$u8Yh zv~o7bgJ>UPycT0{Ac-kKvDmDGJAcwGi9*9qi;1?6>#c^SQyZ$iWR z_oeAB?2$*Bk4eNCW}py}!Y(cWc_IEVtz||P#N7g3mktrqr(U^DaF-c}^}JC>50LDKhIM`sIr`Sc)M;_Cp3QYF+kpK|_y>z`TQ6Na3&Zbfpu`y1 zgvG`~Z^suKix7iBM&Y+eE>#+qZz{c)oD&@Kd4A0`P~i>P!((Ho*^&c?A|;3#{5oiI zS2aPbh5%TCkN6LPS3k>=HRiqeWi8czid6M^MoM6%%TF-~@;XI|d6;R8;guw|(tg-Y z=E~i}h-r+7N`zcailIbPeg)aB4%q3Z&#;U#ozP{DF0WS*>iuU0s**Lvx>{7vWxqz+Ppp z!l}ksZR)B(YArcMu1Rd?yYp-5d0?(!H0J%=OPUQ`M~7+&6hMLr5*da7A(%8Oh%J56%G+_>F` ze2GzqZ08jMEq-9Zh8)~I=KXL9aCUVoW4ZT?FHhkM5OQXv>Qs6%Jxv`|*$S8815gW7 zNt*dcv%M$2@OW~{cIsjRFQ;sujo<3nU3by5dmAj!Gxt!#>OA}xVPP_sV8NQqb2>o6 zoW^#LP=SGFBOwlD7u}L>!7B9lx1ho}dX_Y5rlGeG%{y{<`Bv4{z!-*?yZRD5&;}wm z2KO!K>G7c1seYsKfb<;R*ewCD!6jG?;S{e>|2mlN7lV81l%W2jN&Vd^npZuAY|WX0 zB`Gp*ZGVUg@qs&y)V+2Uuds^kv!!s5#Vo)G(R|gppbYELOwN`tyM%4SR6oov<6=6e z@h`-8uhu=PZ*P{F{F1+FA$=YSRdX&7fqSf-juojlbh;sSI{9{mPPf8N=So4kKk0Ob z+3DolnMkLWzJ&XS$4_jD#k?l~XE{qdm+uY0?=Dk+u-T0)2MZWDjKQ1-c!UKK` za~1)JtF7@)HWYtfoDzSOObK~{r0??&T%DecY-*h)L>&)uu)V9g*5Blx^+U%XNjZFm($U1TM%sY+7P8PR0inwM9%$a`jpYf=+eRFM>_?T`F`>8u$JXC8Lf`hb=x;Vbe`AKS zjpHFDebPB(!sBmh9eNZ?AD9Q3A*f&?bBx>%O2=q@a69_7NLSV#a_4QNa;*oIYY!EO za?K4pn@vV;Mkx+nK%uru{D+~q>OD}Z!T1o5=A_LPxvsKq>UJOo6oxNl+l<_?>187+ zvaSKr0L@P9kV8}rf_;s~A}+X>dD7G<1&LlXQpa{Nff7Kla<~El)xLzT z2D>da&oCMf_wqq&(_v^?02>0#e>43uhvG3hEyrJT8f*w463z614OdxjvVE=oaUZf1Qexhl@!%ABxGoOms^eLj^~xetWtih~hVJ2V!2^jE z{y5wVR>cZ@Y%5X}*(o}T_x&I7O=t^i=pesI_Mjem2D7$hk}oPtp0O6M(hphc4*dY> zv5f)M_N(!o{2Wcspk=a;JF(a;GDpI@9*SbcXF*6R9ZD9S6W2GxD%%?8QJKhY>nAs< z-hPtuKIo1?%Cvoe4#JKs&GZxRS8U&j=~3#t46{HRn`q3EFtpzS6RohhJ%S^y+|hOv zYP}Px^`URT+NSi_WOce9+d-XsK|PD%{eukehACg$Hpdq1QD_meJj!c&xa~@XaVY8z z)Q^TNn?u=a={=w2@PBG(c+gXJxMB5t;(hLO?)e*rMZ~%mdt{JO$kKC&k!1${sE0tJ z5Wgs6p`q`<6^chK_!Aj&5G&hJ+1MbBcwo0Q77dGdcEfUM5@@fE+ivAucXKzC>fkzT zW>K}x_hof>nA#IN?fPE@WI>d53bxwo zL`{on(Qw1IC-;M?M;f#C(PIFTTm3&`dVa;C8Yk4m#Af9 zWFlo540@oaXuc(EW`h6S>^s>1;-UK$uHb>(Y|3Czwt)MDd6;x zj6@^CW{ZPhxr>NYn+7y(-1lOr|R`MH||jBA$}S(7O! zrVYOUI-n%Winx50!9nbsaIt;LzBbs5RsajjOswR(sk+1F1yo5qe34APYrBR^X z`Xgbq*A6Bm5t>nz>n*|zOkt(J8~QfZlVn*|q(Z$v8lYP}A0bqh_hJ0VzSNSG`uwzt z6bwcfCPx^t2Io`RH^#u#&0U== zmI0pnt$X%@Qq^d^ z_1P80Y*Lf|3h|C-`Yi9(^9esSYv006o#v9cTL38Jb$m4{@6626yR<%I;FhqJhxJmQ z6!kAGbx3>Ja#Uoda z7tDKL9a9r?-W8bgc4KWekNi5x-bSQJZWyKg2m9~T^;XtpxO*ktW)RY-55;On=5+2< zwpTq1b>%!{SX0mrF$sTexBTiv`ReIMbrBQCwNnIUlB}5bkBeZk0Ye_!IE3aOX~*&2 z@5(h<4y6nE>hp(1Akw@QHj%60TL%f4su&Y~Tj%)ZXzn;#^C zogyJMwzpygjg?uPI>v4-8m7bUu#8E<*Au+EA`l5nzpz{m0Wmc%Bd`>zCYKt?3jZH( zX96Epbv^#95H??^jKsPSHIyhSQAC45oj?X>WJZG;#VSf&D6Lu}BoeDgAVe}9N5QIK zYb*Mz#agYjRW=m@Xo8|7u3)Vit1T}bmAF*mI{)uE_q~}(NHp62@5hIidCR@$Zs(qR z?%A#@ST$)gdrQ0D-f7>Yce}&I>;Zkry1n2&)?3;Qd#7F2Lt3rxt$U}P(?eRV!_2+Y z{`&O2>&rF^eNk%KCD+}Wo3@hcMXos4XnONpE`trvK8qANy`dConG-_C&_is9j(naG zv4;TBbgDx#gOSa_$kT!K+1G#c(|?@zyx+g}+{34CU$NDfC+<|6J{uyNHHrL`U<;Nq3FXH02Ij}z5VE&N-xjQ?9b_Az{WZzoaFf}8v$2RX>K!C{IhkB%d zAT?=_%D8#Sm`TP!W~+Jc=EXSd@~t>0Z7MrrlaGdWoei?TCg{dAJ)uHu+1VwpV3#a> zq;+`ZR_pMZwak^_kGZ?$BC!J#8=tcaW??H^R(vfdvdt_TKfd~0{OPigZUi!A#SBKX zGeVfXXb4DbMLnlFd(r;E@O%i?d?b~=RsQBJN~q&o%8DoC$?h2=|J z!MFW_##{Z7^4wqq?~6#ISjp6NX3ahn1DPzp#8o2dopZ2XdUIB8{-r;A8IyKA)X3E?8hc&@#pkR{+yG+j&q5> zZr=TJu4iZo=u`x8E(GNSt+t#-_j_epN|?PT%6h=74u5=0?S#BE7oj=?p$^)YJC_tw~Wcpeh!kY(rJu3d;F7q*VU0P;0B)CmQ2 z>L?j}Yhj7Vx#Do)Ap{d{*bQr;3ik1tghlNXm#wW$VKRB67IO};-sV&tgH&`QJ_D_I`b`ti%Y zj=djM9D>Gx2wjotjq=fVY~1@vb9&VY0TGcC2l5=cscRfaqFqzLlsJ%wQMAZB?mY&5 zfynrU8+EIxCT*P=*22F?s=CIn{LRgV?=;eQcT0IdFghp0zd=6nZ@z@nUR?rjW0MeSLF%K4WFSj&+|_tl76Fmlx7f0x$zJ(;AxAL?n4_ z?KPJ%jlx-iN*k4qIJIO{T{P;YmJ6hmOsS==6QBT9=~9Is_F4tp(^Bg2;iXasiG1f) z!Voh-twbey3nAnCl@N*R#)ylApx1FSGBR*Zm{BL+e9)`e#eb294Uv38p1fpb-i#66 z+#Y3!i^|oy@#Yu6n>3sfoHw%D@Ci4*a=Y!U|IxY1;s-L}#sV+u zS+!K8?L03Maepbw#Wq-RwfNOXv(AFJJrxaXB+!X#%8 zmvHJ`cZiAn_N^KL)UnD}*z!k&R^v0OVUwUv<0s}+XClEr*0s)0rB5OxVj016UD*wS z0r`n>J}BG^cu`jtD6=eX$HYU!VHUG27E&Z^QWucr zeE|6>or^CxAVHvD^a2cbHLAv(Le`dx`asVgET|QQ_=0yuWeG{2_GfoLUdfylhn0k( zwjU-=cG9kmx?PsF=qByW7yYAAzRTA2j*GSb5S_UjcFGZ4 ztF?dq6DJN+ahHbY_o3lw+VJC9T15_cfFlq095YGryw>*0DAw&xul~0VKN~kh;bILv zt8|@N8DR9vP@qrqXMThst5sJ`2XF|;TtunP`Awf}v8;MU4)$i#0(GAXu@ViW)cws_ z(hHtqDG=J(N-IS`Au=~<^@<<$*lG~y_mUCjlJnvw4oI_?N%zR$n?5*JNv>?}llas# z&0WLz*yBda5J)SK1t1o&CULLLY@#)6A=S=%mbH3Nw6tyg(G1Om3$4k|<4icGAQ1Jc zt@kVi;53iy6B~x5O>8P-`HJlWlm3h}XqtW1LvT;4O9TNr4FXi!R~@eiP-#!Zfu2Ux z*UFbm{8>$lhV10F$k8|l&`jLft4zYAGOWP->BrqYoPO=GM=wf;+{ax8cDk%v%j zxXe@QzAK9^tf4h!;j&@ZQ=ta?hxlQ0vn1}RTq2zuLY@1wo5e^KOVOxM6j`&5JH)J6 zLUM#5PL(Ign&mD4tPjv7#tgdD_+UZ=Qz?s#aQTkNSfEB;6IhJs+1Hry0CK7t~rT%4Nt*jHLN zE(9cyUOqX|!u|?L#Q42H_;NaN=L6OaXp@i%>i)>S=LFpw2_>KtGqDgA4$Ku<@tCKN zNzoNEu}Gvbr%JsGsGD!=$;6tnMDW{x|oHD7ydH>;h@Sm#xCrKeUc`8u1~(E(Guet(s6h19^49PA&cd zijm^Z!(s5qMypU-{v?GtZ$u&>5E}<=(w7440-KNTa>dB<+@Qp^O!WyGBFac#Qfw6N z`GdO?8-;U~#L5U);1uQCBTmZ1VUdxxZ(0nMHuPc{=Ku)Fj`|*kX3^Ml%BjxEnAo%9h4<18W91Mh3Ab}*G~)o#V-J^`)>vTB`ErnbNuK|8V#@J zg>XU>A6)73YDLr;Q5)4Ez6X@AhJI+kiZ)*czQ!KAkgD-fKIwr8upmI_Lg!N!_Eq*B zM^j7j+x`hr%LHZcZV+V)k$MQ)lgp<@`;CjF67yaF0Fu#PTkYx#NLsfgU&01F4vc%`*kdW-dSGa+eY!%Uv<_{x zPY`=MS_Qj=S(?#)@WnHSTyal0O8LUHX0MUEFge53%Z0rv@3Jg19^beu{^llG7GGqs z5-HY*^Bi{F54&Cr*ZGOHXeYfGj5MvUmEMd-We*nj>?Z|_nDIUyRl%6hPeuw|^!3pA?pKu3^@4}tzClk>Q3IzgTd%#?S zfJ82tq38%E9_aW>vOeWSKo4K+e1*>o?LnJ5e0 zHd)akQJHDN!&GAZEVdvr72#pnZp|qYao&X~{EG~S6YoEIEf|O1)sR>vNG^3i{Z|ZD z&{0$J?N`IHj^e2&1`%~)n{e(g5_|5kFA%~IgR{KcvdA;|u+7dSE>&sq_p1AiZQO$Y z9?qfPOPhZNI26FtH?t7|Y1a2Rc4XrG;*mmVj%wpi)d_~G&3$+RlWaKN*nNn=B|f2vW5YU(spC7!g9RjdOowj0U&TMI`bZ`$vvKzC*+mUa z7jx|Jj}T4&D9_%0w_y?LBr=_Zb3cDesQwd#K%nrUU?HZXv!VYm``he))b5p5U1UPh z1CJLTwI*OJd5F`N8;U$1iae?Aaq+53f8?q>cfN&6;5s+qXh`Igt)Y@F*Yrc)60fG$ z(AOYZ`BFVh`&+Ar<v0Y4HwX;AX#G> zC-=)g&k%r%G?^h0Cw+gc>=Yg!EICs@MVE@>QTVpOcgY7n=;>qjOuuzQBLq`^JFNP@l1OR1+`u46L#+8Gv$*`Tcf3s@ z$-q_rP`8k#A9X7getg&pfe=Z)V=Eo<=$z*76YdOk5}g^`?Sy zMkekVwty#Lx=AZT1zCD^UqhB!d3Gg1s&7znkXAV)b4_{nQ848@-BHk3e3`- zQn>$;a-sL3V`MNFeP8OQD@25o9OLpaS?TW+S2%7@(aJ_-O(Cv?)^3|nvGe`$kw2~# zmZr-;p^pq;&?S;M{%{IjH2czfWPza;Q*(3@Wk4F)NJbe-7=i5Dp)LL}EZG?-2G7c~ zAH7~V+3aYM)U&@#ZME|f@|oC6O2JBxg^p0DV_7zX5;5^YH;R=PVPfs&Sb1ajG21Jm z{D?dtWRJA?OP;!BNHFpo^U?kfZ`tykOtDfB^N|7x@!*d}75T1#_5J6Y7UmAn5ccZK_XkVY?0hfep4md5E)t@C`t^|mln;nXLEZUeo!O@?@ z2xhQ{!OoNgis&$}&~xIbqT^z3=IONP;1fclze0?j8OVG^OkN-4ZEU0|MAnN!O8TLc zB*sXkW{uhKqKw~8#V}v9WA(g4l?^=R63=*OXot|?l!*ct&-x^`t;(jMHlBTmV|5KZ zBy6(b(tOPctLx^jR@a*l-8d0OI3Q&TB;Az1(kXw9v7BD%SWXj@c}5qdZj|kf(Hu#< zoOpBX1i}RDp;~KH6X9@=opZ5d755h38gv{homz2|`6}8T`0n9CmlhW|>Yk`?CE^0Q z37u((Pc#L=|DS&2R&KFVxn-tui=E1`)9YF}Hh;1a?4fg((K(CV&RHy-b25YPTimsC z9yu!6Ig9P1P5D?Y`G~f0SuR%|70_p?0XHF*)^1gxcoBa&mgS54z~-+O!eqbeF>HP@ zmIz{5zO2c&7~<-vm>h5``v6Yqoc$XITssB;0&Y!{Z>4~HGqrY*jc?q9J*W(H+d==xOo#XQ~cXR5sQ|&e~GeAX-@nV)^-7q7yq#>R`c{yHhA&k-g6Z zPI(ihO4PGuG*c6doFW1W*(Lb3U1vGM)}lT%tm6i0*bit}qCl-qI_hp_kg=yIYe3KD zRL5Bly3@Z}5jjdfaQ@YDm;MnS)s`rYm=zQ{=U~l{b!*nxr}>+&8*k7ts~`{_%*BEx ze{x}M@&Uyra1nojX-rrW_8k7``RSN~jZUlnPbe}MT&^l84@B6Gor>07cIs+i5{R54 zfd%WT*l7q?hFo6PkV?DbU>U~e;2uXyNLQk5W8aunnXqpRNIb3RfhS=3YSoP+yR|yA z_WG>KG*0b^Z;9Fd(V!!zL@nB1JEz-(D z2?bTBQzQJ`iqc{i2S$I~txoMfqed)M0o>p4ue>IkfYq@f7!DZsH#q$cu^+I%!md(f zXu=*!Q8M0srx?T_os6bv-|>6P&ye6|GvtIWVk@3qkXv<_Ip1PvhFEfXt)Zvou2#P}N{4GQTq* zyF6{D@G0IZEXxDvT<~{5PTb*t8RXh=ju_QQp4=nW2cZe|Sgamefw;G~Bz zTiDY~uXSfjEj(-KS~abWdj5Kt;S*lmAFP-(gj)J)9TrkjU~svV6zffDbo8-Xsg=YF z^W{6$DC$-X#;J|LW15HVx9@`Eq*9@^RID*kvHn^yjQV|RshHYS($(BZ#h@V6!t*_+ zVkc_F`b)*`cPb_+s8|OFgRVEJDd|k9n32cNF#UyoSZj*b(o|Ix#@(3PXa!Sm9?lom zqzcAM$chlB+vh4U7?A!U&N=3C_+-rfl}#3_|88vZcZppVtriw*%Rs{@TNp2>`AQ}7 z@EMRXx-5kmy}u7U+XMwT+X1)%hg4ye*Ead?7jVT2&atb??*q8^s-%900nT7nN^NTU zko`}Z{T-G#5%(84wc(KTT52O!9|F%+t9$zZaJmBgr33IyRQ%ds2`kvn6o{d=J^&o7 z04D-a8VF~W`Np^Mb2&s3${pn10c>nulrCji&EX`e(^tA^tCmh-c zZQ1`|*+d75)owJQm~_7zdAECXR`%d%Lc}OiH7tqheqNYn-F&Zn8n;d&+t1%oyd-%J~Y<3YRQ5fnHoIIA2Qy>ZmNeGFS5L zpKObZ)>F(#_A>Wi!5rw*n*CZVL}1B2KUr%Pkr)dy)2`c2Zk2X)F=Zm-^JS#0+fqcc z{{4W-yn)PnhcX1}eUerUfIk0#rr$w2#`C+($j`5q5k02ALD_lO0Cbs=u1%4PwE2BN zlKU0p8~p?;9PukV#D(!}o{1kIoxb4775pGt10P;J@SE^KMQyJBvJ%b=25^ZWKqUL! zUpV+tUn_7UpK?TlWQ=K$?v#;OS^lob|ifS$}Kn`bTsD7cFYkGfWUZ z8d_^VTqB&y*1dcJGG=qk*+k3>*=Dj*>y`~EY3bVh^AQb~g|l+;3&?Q&0$@>PH5k~D zlcu&&wja4YU`+)1<;Dvjbbl~>bz;-X>20d%_AM7AEV4g=D+FIybq$YiWIlDBg|iW^ zanzmeh+qoPA1T8rcd}F!N*{Ax??E!_w%NCQPu9>vUcvLmM#xmkmn78gV+M7-NiGH6 zhYHP^dgbn7#UjPBDt0y+9zYo5?(qT6ozXowfLK@BmF|-4taBljISkj5jteZuGt_57 zHi|zv{zGYOMNKNLoY4n7Zu^-`js3EeR(==D%DWZ7%b8|w9a7@Vtr@I#<#eDcqj2X| zQ6K6QRFDfDklRmmKzadL1W24&l1oeo&gdH{`sY{b{0E@)5elW`f&dTmjoBa9>>p;B zCZ25SJl;3WayC1Mhtl^0J;c(7YO%Lpk;VHxk%88nW$$R|*bG z*!mpvs?ffQSN@0^{)tQ~_w#H}@h%Np)&0>7t>27vpFGXm{bo&c@BAfs? zNC1RcXU9WkfXZrf2rvmWG{PSh^%Z+8qB!gcMBYf)UK|{Zp0s>_*~%Ju5>_XPZ~Fu| zB^p6b)j1exN|4GuSBR}j^@QlDFHT6mW}LS+eo@sJ{@ze^cvHWTkrvqfO?H-qpeSyb zoK6JxjJmfhc^u!+Ps|qMO|iSZ4JSLdw>7aKsO1mKre8SFvoRD?GkS~$FN49nEU(KV zoS|My&)GW{D7E@7)8(Mc1-s9J{QE^#3H1=f*wZP9K`=Y8!W)QO?ia1Q91)I2d5b+@ z-xM{dx580a8*`~fRvxced1fziMGqj=t5`V)Bk0yYWgCCL=s4JfdxO#GBLlj82zO&i zJhwo68+!1-o`3AMAAG*Fb~DS#zJPJ}gChfC3XI#)@qf}D!1`sQBAB2Ux=Fumja^B^ zN3yadd_V+O6+zT@G@mL9RX*Z=_=;$#)xMq0Loiz1`q=(igh9(UqaY)YkHx(1>LZJ^Da=`*e8Y9wTV)qgSlzaK0TPOA zhc>U0RcMx7xkTQ34R9q76}5>iQ~K+;B4KNciY5R>tp?;cozH)>eV3m{PxaU$hSV0<5p~%kZMRmLSK`p*)&=CRL~4I zbLVO$xb0fAgFFefgp_axhI91!x7cni*p?*%R;@^q!UL-hG&OIQOoG$D%+_7Wua0xp zjA;;6KOiesq)_QlLmvP(|5yNi`9-#_8MP_d8P-1JU#$6`Air#r2DlZfp+d8yLR(WH zhF0|f;PDFZ3aQX1TQaI9*1gREnH7bpU~>BaX7@~K*GK~@ur=t(quh8uGlHF{u)cfz$k71n`JSl|7B~$0)GCyM>Pl7IlR@nQqoEU=F=E#{kjDV-jp%NY4 z++f9A(OD!zk>ic=Yny%XOb3jJTl75Lp5-syJZecKvlw0|(U=4|sT6WDLr_M^$qctW zyzEL&F1|O>AlXx%im8)nQKQqMR@0(Jr$w#ZS|q{1iAiE&UmPzoJF%5qa#^B9UbjUs z=gOpeT_(M}8z{4=(jutj-YqJZ7I_mb@+L{Qw`+^u{WzsXUb`ACfN4UJ(*#rqUN>s4=`{OG~r4S2PPHkOTY;wQ-UV7E|pFQ{+#8b#!3)rV19Um(;EpFa;=aG z#7q>7F7?rpQ<&%4K1}xc7Yn_4bdRBf=@=IXv+Ib9D*UOWr>GC$iWJ;Tz|jxiMcTCc zM@s*k`dp3eM^|an&QxmF*oPYZRsp{BiD_WI0qARO@-;%{zl*dYqyXz2fGsHdyGSc4 zU{8|!m$p9C@QWGJ!!Pz?lWf zSq*ag0PaEscN^f;Kq#c#>-hJLAZ0mdn<8!#^KUzp!$e4~2HotxyZB$P5I!lA{l{zF zRbh--3@p)SM8qln$iRA6rIFA#BM*^?5_{VAS`S=t2oWpX^?>u9M4z$CzD9Ll5g+CS zA$DkD;!|qE07u6iIz-eF&9iGzM<4s~99_g7 z1d^_K&o=vQo=_`~HRe4Tj(N{>BD9S9cEyOAB&uPfia=RQb$8*>Y3ON+O^>JmnjK<< zO;0yr__wg>QL~k9Ha%YsOp=~vd+yJZr02(Qi60q6 zz3~V`dR&_j%$<|dXjdN)_0j19F7}~|sOnd|1Vx|hzXj9SX?2Mh>iTFYzv9aGdcw~^ zbN>(U^OY4$8?+%k;pdGE&DY}Rk4f{_o)DrRNJm{i?&@=f6yKnf3B@KE? za9kuGn%(QCs^_qI7}TTO;^wdO!qij@@I5-6261h}~f99SV$^?71vMU$=YIYI_SK4P)e_I;4F_oyT>;qA2n93rpx_UW~5{FqLSd+HVRDU#^x2S4ZzeozO$sa*s( z<2LYv3jdk|0t~*Y=YxsC4@JHTCI_FBRxopT#eU~A9enUW{LET;;^gn-;7j-j8T>VT zNEv*JI!j9IGWbv5|Gzx=8ftiD>iJ-i?XJP=O8bX%{?`Y7*Eurq2fb?s{wFBr_ZoQD zIy7a_XZIGYW4VIc&T1%l^nJjI>7~*$B@JuOkq!ltaqm0t9YdCcz!(8#GE|p;U z>!Mfhm}iRHqK*A8gILf0S7PT$5bG}zx~1U`uQ#e&(9Y;ox_~&=7X~}xkLA)Sx>{rZF&8thxnf$8!p(JqkEHaIExA=^*1f$O za*0J&k`sG4Nnv_Lw$Wz`?*6FVAlpOe#|6bg%{DKg7m_}9f)?ET;JufO>+Imw&t;php?jQn5YUw>CF*z~u58Vvmb3Uj6Rj?MkI z-d|NHxCr1<_}8L0`o_OPbFOfLut|`k85-dT?`J*H$Y|gQ;*vCRZ%9wrutxBvJfQZv z{jv1?jS$=Db@~42Rr#2^Lc$iQv47n>xjjfpG3vv}IjKx6iby$60BIuz-$Kb?V*3e$ z_X8TzT; z)nCdw2@RLpCO8FUB@5zwc?wc^FN^ZWYscQ|%|7R9N?wu_thqMP-V}P(qfPV-`^C3q z+$QDL*6g2FRmfeA+*R)<_QWOAawR$yI{>e~t$L4#_OP1O@-nCPTIu|2dDit=J%C~7 zw<@d;+Gp^AbCOO6+Ysn-F1hJxN3`3oDeV;c+0}Ith4S)zyo^%UK$N?J}hYI5A)xf!<9P|vy60bKsMK$#Oh$v zxh(QnHhGm7X=h+qPY(<{(X+hislLdYs157!fkx!C!_Hi)Byk?v@A=eY-o~=6*n!bd)j&z=$1ONEq}kUjNFyiHL{6!l&+u)py@8?g zz%Y{sZ|m3}B@bs7NwT#Mn131m@jiSa1_&n;rQu=U!*tJ@bu&n0kAGdTp@Wy~dpK1o z>d&{wl{pk?GIH*pm2<%7G*!Y*_OkOjIT*fyNbNV!m6P-6DIgIeZ=-d%92dc9OBMJr z;z{?GI!AZ-qc?bk7r`^3>H>e{+&rBNMSe`v*`}nrss|&b*nDqg+8{QS_=t~Cy#RCU zu(zmTvxz88NjsET3GEWmlW`gF?MNf4hRa4AW%fTzPj~+_yT^%ek^PJ=r_MwenV1Os z_A(2e$AdtphBFH`=`$|yDHGr!^)eVY1wTg49peX+vI++MSv#G8aLm^bLw9wKj@rbT zERxV75@?Uje*;?*teDYYN6+xuMN@=}J0ss7#m#ydD=`Y&k2*{4Dsf@hqp$4@-Wi_; z4al)_ry;~LS(1XT?uR-o_z<2!=394vA@P@7qNQaYbg4VfM&Kpc9E|+Km=x^6ODNP5 z4sBz?iPktkc<_KTLZuB>v#&+al-)PM$bHs80oLprE+|CQne5?v)jML7 z)Wx&K@|S!n$3J}7*21Qr^G6uDmA#9dUf@UQgUYo41X%rIu$w=48>QAQ5 zx}%pq311??;=AC|WNYY|wbve4bT3T)~CFE2AL)l50=>6k1$+rZtsaX`8h5+Ivw^;Z-pv8ZP$ zDoUmVD=<+hgkLI)diUoy&pu(g;HEeQ>KT)X%{ezR-<|j!61(FW`!NpaX8DHY;M|$A zoHW*(een*SMQwPmCYR!Kj(Md&d>zIV?i<|Sb4c#QyR2JRYcjlAbrj@qy-wNkJc&|p zkUtWUk8w}VsW}{#!R)?sQ?wM8Q;uPvCHm{uk$4=ignoY{``(Kj(nBzXv3TxL#aBg< zGk_(!EIK)>Dzl7<5eW-y38%2=w_3<`bQ(p}D*=Or@Jh`ik4dVgN!O=)8|GXc_nbb7 zIYErY)5ZU(NX1FwX{K5i?4r*u$d`AlQ5c>5+ecdF0?H z!!#_vv);-j^%j3vOB72wFJGz%PB1IRER*ELvXRSrk-@Kf(oe(?x9R#T@kk^V2_10H zg^3OT_q^a#M<5g6fAc4L8)J#Gg8ZsV+c!8(M()S{$Su-RZ36L}s5Pkwir4);kySL&2*Y5&Fw=oPkvsTS@!Q#>=lZwDhc*OFGdr*y4+r6!!yH4zbEW(WP`KS^Fzj}+fv zIVz~?04GbbQ%V0`sdlP=bWA8Djed%*H2u>B{f#}8j5(8$_Eh*I@4{_K6_^kY|Ip>O zItBeBrLwK}8y1m$%$3Ov?R z6=k+d5O21wbknJBH!agCAGt+(i*5pqq?4q#PL*zQrc2#?=G=jCPce;yl0POBo&}#Z z(^|c={TcaHrQc3?DqBkASG?g7C+~#Zr<-hL5!ksOk{EW?hDYxp5Z;`8vp4qHa7R03 zLjY^!+ga9-eAa3<0->GuwsVCE#)GzQUI+0Jez}>HA+R@O2Q!~$gSFGQ=mmti zK#3yJg&Y=h^SrSDjpByN8z{Q3Q7I+t6cp`@S#i(V;3zCaHpj14!$*)XGTmmEw6*%u z)Y2NYH2hf`h0k!$sR>aiUwqUm<%pW0{{U~pKr!9d{ux{0y3UO19|7J}UmIy{$cvrT z^%Xq>{8#;%J7wyQPW9LH$G2G<2IJ$ntd@@DJmgbAG!pfbJh8W|)ze#J**Y@XwJE~c zohjR&-ZTL>Ly4ZXpJXj!$%=$Jg>?V)S+jYN^4L7EN1u})h+M}K^fqBko%LQ(6aGQ5 zGmni^xgX^khjK8s1Mt}wLUKMJGnH?^l005s9O(p!s%Z+3iSHV>gah1Q(30;{ri{=K z_q;Tj4zEf;Y%LWtu}OLU@i}vjlF(E+94HVk*(@}GgW$onNyYwn&e+B}P?i`bOiHhm zDU8f7rDZ~p=J2uVXV@r%<`yw|S?oP@h}3dQFv9vCJ&Or5w2Ftb@;Hg8+}m(sfb#`P zHnY-%>vZyqEEp@{6tv5{)&_cL z3KK_nWT-}bEs;&_k4tZgRh_p1UuS0qo&}#FhSJQwBH^*7%HuShjKXM@%cEbXWZd)o zc%6!R67ooyFte-;Vi<2qjeB05(6z)^NY*N^fjGLOYDCa5m?AG@1#MDVP8?#gp^B{j zz9cMfnshaR*C|x%t~HNkn{gn-k@S%8E;TX%e)6=eKX(<}FE1B7S<6o{=2DX3tm@BF z_wtE3$+K7mZM%JcqWgDu{>ZV19si_;uvyMfRUP&9!{ZE&juOLDd)@VERn`7FWi->O zCL+CJY$v&6`%5#n5oc_>WoBC1LuIXSdGkw4a)dwTx|)}qEjhYan03%v+RxfF`V|=4 z@FX}{umYA^CO921Y#bCM{PgPoXw<-95@lFvf=YBgajh9PXpI+{s6$AkP+&qW)YpH_8(pU_Mt zn`gi89*q{cNoyt;a%!_7ky3X^B;@gO_#+9Fc;OcR=%(0<$qq^Gw=@!%{RMkKQ3(xM zzg+vZ#h$!f&`q{g5DFzx$=qG`YteNQtxUkQ*dzbyg2~nXYq8_c^#~>y2{&dEeh)gkc4Sh1PKLW$_ny@2uzcyUmW*r1!o{(g>v-yD4Fo*3D&J*zabF-nTG1c z`;Vt+P~DR=&fj8iQdSMgkIzS!DPIiF=uG)j!CAzN)dOm;ql&jR#vVGhG4=-m?7+M^ z0n_bcU0=+Wq>@%2H8s&{upD-m9TpqBvG2jE=QCyB`-hpb3pPnl!1o=4oKM^g83l0d zB7z$}O%NdoR4RMN3&%=0vq*m@%IFTwO%N;d#)%ww_V_QP7Ueqa-Z{<$Kzr#eDJaw1 zaQXFISL?UseDjC@SgReJ{i_$;33>UfXvHCAQJ)tf5Ohycv40XN+N&fryIu!Gg@U+3 zNbwa|cJrrPMutCP=*`A=n!@oEPA*+P$(M$0*u;|&=O)kp<#{9va3W{b>X5ATQIUQ2D*{XpLnyNMJ>xU6pYp`)-SDS;j(ggUrPow= zV4nTdMrL-t;9rpwaQ?5H+|G;`R+M;2#6j^PF5~5q0?BLd!j?$x2r^qBFrqgVG*S!B zNgX2);bD@r=&{XIYQd92iew9__$>THxzdH~3r z?2vM%*%L9^W2|Ve(=*SXOG-Myn|MjjNZdu~nF%J-b5*8iX2d-o3SfFh#D~O1(PH4V zZYt1rGWPdulHt0mpiqW@5S!>3=#>dKl6OU;`Er9Wl zYnoVm;IR^qE?sAFyYO}Rwl zG06@j8J1hsM>*@GfMWsQ3*2A>PNHnJ#Qs*dElaw}Nrx`;m_q3+rZSw_3{bvO+(+pS zh2ziM&J2yb826maD4`Z<;YS*Vl+=vl66CVdfYTzu@hSZW?;wJS3&h!u-L&fwnL2@; z@l4exgFo4qO-a!4Vt=IF@CBgm?MEqr$iDAcA)e4}M0V-)e%$jmUo^@#K2p&MPf2t9 zB@^@JSpLXqx&Fw37Q3!$k>R~o`}2ads$p@@k7U$JD)TtFSA#_!*k6+P%#7!*#2--| zZhqYJC&5lu$EtJ9S30iPz51ydfav@;xF|?2Hlh`!;(LV%$6&dhjTRXgj2@XD#KJvL@*I)4 zR-c&*i&Z8&`}7kxSM@JFv8-Tdwc1w@7r5lP>RmcHAk$_MCbQX+EodpDvCJ31`3yyY@^*4w;D-@Yf5W;0ScS)$^ z%c@KCmJD=Dzp5eHH&y)@;ge&B@D~KrPEm+M9f*IYF*4x!$&W}Ub!KjIK4k~u&9S?k z5`lAiGUOsj=LVT(YbCRY`_@6py_jl4dNm3^#Qy0$M%+OgP0Ca1YoS}Ce zp)>TT(e4a|qbTQr8LEwBhNe=u#0;$zxHXAsIvv+#U1$X#jlQAwTES(w*H5dd{s39w z*|i==dD2hW4W|x>aSXA96H1dapT$T|5)N__4oW1PqzOgw2XB+Z_URPhW>$Ysi0b!_ zZIo%G@&$-JZ{F8uc)&Uho$JtxZuCDS=Sw7(fEtK*5NZ^NTtC32^?PGE`mq5iw5qSP zUfPkmD)dO}H5T(;Sbm(?XE6Fm19dD?NB;`bJ=KGBv7pmyVz3V_u@)z-8d|$Ve-w!^ z!KyBtxkTXgMDGuDyE}#6(=TTB?@jM(dd8;H3l*E*rdpOJj~7rAqQfK zj(O3|LTe(sMRzQALfFf}#vsYtM(nrOp?Zc?0Igkj%Dii}o{^4I;V%^#lJ85=6- zKhVBi5)gwiLo{JjRU=ORO1FFog9P!x!ao8ac)!P7_Zk zt-XP1cSr!Xg>r|+J-7Y9%+G$M4U-2DV=a7iY18DKbZFh_16Z^h2KNiZ`#Z@k&hulW zWjYJ1lTG4P>EuIm^^%N02L=#gn$jS~L_ z8uUx~oBEGES>SmqDT8T0AE8c40=^G;nHeX-^3B2@N3+*;Nq@lVz0$vwnqDcDRsXxg zJK{pnT=~uZto2m^T#74Y^UKckx?<_EVZtW%cnZRcg`$()W}gqB^)=E^9!}HsT=GMm zRD;wred5Tn1a*S7QU*R>sgxHg70mg1I&^e`=R6b-4N=I#i`R`5I<%kvl8J^pg${ws zv258bKW{isYtds;&r8nC;QEHXFq1+?nsnsEc;FA!iA{f_uyQTu5(%_z!yt&DwLZ(`K<3C+` z<ZPPQ+e<&+}ma*ATfH=dXAhaVVBIc8J} zrsO}KohEXH#M%Zf!Uui9q1f#^-%Fw}`2Fd0V;2zSTzYFL$4p`p071;R7^a3&4zQGf zN(gwbwo-Pvj_`T#*VS5tf9J)aSi*5 zWRDUmvVT3IBi`gI%v9A{eXdNf=;`_PZI99%7N2N+zAO=8{o)V*CXXjgN{s3`xW3KF z^F=3PbL829_Dx94=n~mxho={DZg4TBd9^e@nlSb`A+KH1@-c^MRhOfY0xb;Ks1LDD zy?`$Lb4Do?A$q%1g!Gm6HlkMr!;jX2OhD^YXvA>lTbljm!BTfZ<%?P{S@)ffxOGqa z=DKq_gJ*^= zMfh6Q!1hTXax|dXAXeH3NehVj(Y*cx{60h#Br0YxPBb8d9qb zX{dcWU3;#MvBO1BXgS4 z%eyxdL8IiJVdT3m5}HQ$G?Htjr4x_SmTuLSR&UiFZPo5@{GTHi&pld zl^3^|R{rY*gNUsR2U_atHZ9H8(%S5;uPYjMfQDO>!z38lQ{`Kw^7Ui2@@=N_%N5)T z1-HV!lkk*HzUAF3f9s#WMddT8{6pJKX=}B#RrVlL`9>-)h-K!v zwxg%Y+fw12%Y+6R7!;r2N~$QT1i&P%Is&*4LB@&gnuwA_Bo`LL$zhpqO#&WGQ2`G63`Zg9RV z>h@)p{WIswPrG~xb=noqhpAmZ6xtK`paQC>(so3SM?d5!h9LeZhKkUg<7J+Df);9O ze?fY3{gCHIJ1g;7T}auU{1j$eXUx=XMe_Xn3$YzM~ZL=us@J%rQCmxv^*SiX7f>BEIk zQAJgp36BV;4F-uQ5D}o4$Z!Z?puzbBS9;n$_*@MgoBh>U()Il%RPA36;x>AVEh{x_ z*yB%g40hAv91vPw6ZMnVFWMe3fO1(m8x||46TQ1wK2e$&r*bBGcv4Q(Kg0g}gADcF z&KGQ_n}wZ1wb+H7a_gHoAM%QV4wxykD1ItTQ^TL7E`GLIk;;7kf=#AI_&2IDA9j1b zA3Mgn&Ma%;EuwLfqvd4xj)ex{{iG*MP&nDNKvQy_k>(O!XJ1GXJs09i3E4AL17#0| zKVuc{9>II4_K7F3PEZYfI-9wsNkajb2;?IvC}b2V)|=FnB=lH0Bwt&v@t(Rw5A{cv z3GdQ9^k}Hf{u%3>fSY_DJ$fUDwpfT zS)HMARxdLx9r3hj>8K~9rI*oCigDs5NfMg+#a5bXl1n70la6=W+SqF(sIHZZE)&$- ztF4XpLY76RtzNgSJw=1+3XZmx8y_jRts}Ipdgdw8kR6|V$C!FAwWV`}(cL|b}uxHQ@00Q`{w2o0i!Go*%WF_SfH>q8B1R)9}J zqom2XP7U2?OUqNi)%F40DGII{a1v%lh!#u$hI7edH0=o+y9%(BJ_~8iXXT%Jy5Jnr z9d=wxg`Q%mp=5QzCiw|r1a6=IfcOaABG1P6r=L(*Lz(Tb_G4i-#M}N*?pghzvc)1^ zx~RSOr}21c?bEeo4Fi$l%$vLaT7a-kn3!IBT6%4BmZ*3kn2lL@#xw>NbjIVHY;;)D z#Pk~otD4g=F+eQvC_>vu6lCjoXEoHM<=JlB%~p3hTJRn zcNNGcD8=VReb^6qT>R0Zo&irV3!Cz5xzC()u!yPrp0#?ZAP-iehtz$RZqv2h|_6zs-9w_=$QB{j*Ho7W>4@KWD_m5=xX==377K+rjcJ;$RyA zX|8PMYVnW9N7$OkX;~3hE*^}WlEToGbXbf305F3|IM<2XPSNoDAP`=8DD)Abh1S?n z#6)EcSBzT|!yfRHF2^_Z50-q8KtbOG7X{ZSgm86>0|gA6s6dV!YwCX5D$}lufBHEa z121lt_#i&~rL4u~U~ZTyRtWYC%Oz#BVvVq(MfU7pDqf1k7OKG_?BeJZjx_qYaAoRw zx5wT-0HzD!vIx-6F32|-_x}l2`Yv!kv*Z?Fr@QS|(kXh!Qln3=J>^7P z{N|_UcX9Ev7Ks3gvknb_W(Pov{a6A(HC_=?5$6aqv149z1sG{4)efapyXc(Va-w8O zJY-GW6O8=J)G-+OK@xk2#bhnMESusS&qt2&%AGS3sM}Tz(Bmns52)GO}+aVx1hJLqeV8Z!d2wXS?YAgeO zAw$ueVQRlje51oxuH<@HLX$7tsUv{xBuB8RFQ<}F*J+#+&We-mL9b>lzDF`hEOYVc zTuI9wmMIYwpH7(w%j_E{nTc@FGJHB8hQO^1Myi*^5OZ^Er}%WzAY9&JL&T@kxS3iL zI}t3V+egqKs5V`@Oks!TJ?y|`YK#KxUejznmgk^6K1?5++>_Z3{*~vT4kAYWuu+3hqF(LpPPA#r8F(Qua92 z7D>s~3TXDRQa3rJ&T*J_4#~QvGa&QI2-mH}b;@#Vw?F(JBqlIK=q_Q1Fb6_4C=me@ z>w#uh`Fv6~Z!H$%3VStq&G2V3OaxKa$x#2%7vlS@lSHQ71qJ?6&KnjQDgH)yo^eKb z9{OZh<{BaZcR8P&Zm+my@AJu>N_07&+**8~EVV#6ntFgPgsH%48%(*yDcy;ra=dBO zo^Nc__oY#9>AEAemox4=v)?&N;)DWq%H1(tE-A+Mb!8rOAbEdl6@7BWK zN?zs2ujy2p=JfrI^?ZnXCJa%H(m3;TwERf-%#`lgU-b91Y?>Cfg~HyH!syDL`^WLx z=+ZyJ`R^PI8!UhZ(W-7;^zGx!{6e7FjrSNHc<`%+OYh(0+e2kV-9+_&DyF&g)|=8> z+w5h7yA3duQ+ungC(!Tbwje;UZVQU!oHQ?8(UQt{uSpr;-rQK42T2pYT#=oI+W8zA z&kwl&@8MphaPI?_XhlQA#iDe|oiaV{GFFBQo)kVJ)oa&2|F3W{c7^^ugTK$(f3Q*l zVq2>h$ec;Aw0rR<_=DBGTW(Gc^o=Eg|3qRvi!|d{A>nLdBWLDm|F9AXJ6l+4t^ZH| z(z-7PT8pzt61e0kwx$&?y&o@)+_d1GqM>Pl%%|gTDM5AOomi{A>FD7b?uLj)Iw#yv zJ&qD`tc9&gR7o@dMX9ygpAq96`O{IHH(9Gc^>5mRkBv8T9f{J~C6dHCuCxjBt@=2a z4}^i%!kb+PXDWo64006%Dbv5{ts?)R7Hf4)7Ox8ZgFfYLHgEII+kU*wGjIFzHrKq( zkwSUfE|wV9>KhcCHvTkI!~YiU@d|e`VA`l&r)-ymV4h-X|DCG(Hl1Rvo=o00nhC`R z-f^b3eQ&S0G6RGRZFEqgUSi=!7k+(b#V#c$N!sX7Q#?^lWH@{1*cgK|nfGmUc%qbC zQ;OU9v0>9b6NR0lTMrvx%vaag()3YZZrdD^P~3kYAkQJE~O{yrXxNMNz3xRJhl9{Z;U>+Yx-k?d!7v6TMr66(S(97O5m5Ds0cZQJU6r(vGmp zNh>(pUogm8xNl<4!gRTuu(fcH6xP$6eS;5i&*ho0aFOanp(SbftvfOjYf*{7>{3&e zlQhLWV>6I}G+FiglcIepa*(dcjJO2jcElw+vrJO)&}{z!Nh8%GYP*)>G3BJR(k*9O zy2<muM>SD z4Sv?H5r~n{DZ(n{FEN5pnGJghLdQN}q&)}xQ8xC7F3#L2BkOtWlR@VBU6@;u_6&3r z9Agsv%1yA%N$~0e4uo8j;957q15SdiZi3w#w1{bLg0Lj$`fm}(zi*Px7QI=|a>fA% zxU+f;cEk9Ml>T`jqS;&qc!Yh|zh!oHnt9rbJdu^Gt2~jF40+-_iv>u4&>eC63AR7b zbR$pv`lYPq2zP2BPXvm}6AdJ$R+Ru^Z&`aoPx8dm3ss&tGQ*K4Znu9v`M;1So|NXw z6E`H}iKl<9JaJIGe=qXH$q9Ml8o}``)s8&TbGxFL$`hYJG9(0EtU$WU6Q5scFl^oZ ziXY8($KyKu=Y6ag)@=U*#$GV&em6mjNl@%2_=zOw`tNJ${q8&$Glbr!&}t~R%rm9c zYcnyTAmWwP}&;?&;f5Y{#8bmHWH;E?92zcCZ%DmTF$CPBQzNl@e@IN425 zZ4$iUCa|0YN4W{kHVK|^6TE+ynR-pST~2E+m||>P(UPqz>S`Z@L2DjHFsSuQi(~<7 zD9sb|R%6gg`Y`F$&3;o}`|F=~Rlm9ZlHKfO7LGzZJaofnaahZSvvTVGonCdN{3%vl zz;>C5p*IpQ!0uk%8yP8|2^l_9wqpW1Kv((D-);)9yPN;x742(4y%UL5tMFQz@Rx zC)BGemA`G19*AVe_f4U9##y=o*)B#J)oWBhy-|(KHrh=e@5ZEUjWKES^;e75&7h!K zwEBo>?IRZTbW15_sv)ab@_aHOHL!N!L&{qdAwV`?^_i36OCgjCpL)4 zK5{OM82$Fw6}rN-^03mrWArD~eMVuCx~r6EqsYbwl&(TnWYVB4fya( z!EuF{v5}#HFy5IGU}<0biw_hmOq%W~hDzI%MP?A(Jw>l9@`yb$;VN#*PSc==^iLr> znCFz7d~N@nGr;uEes1kYO6~hNAOWqigJukNnn3~-3VGU7)^$0*ZH!$h2A$xdY!pwhH=9pvdCcx0W06^cgqE;7=)qP}=n(Y# zd5AH+FSS-@hFpGy;O8sR50@74i$X=>so}>E#u_qQI*n^aL+LDM6-ZJv$A2f9eVstX z8cyP`Y$~^p`;SmjV*cR7gX8X5XcV7!buGv$N|B^(9+eWDcJ5IDy5<+mbg7pU7a=^! zFM3CN7lcUtBrv-;zx`F7;-16)!`P?TFC_HQ4;JLhu5H1)ZGuaY><9L7h-$rX& zT{-6H?eY|Wx<2x@wEs~_9*jJpZ%g(N=Xns%(INddyiWo5>0UeX8`;kVBacc6!N@}^ z__0>+SNGX~xrh2M*(_4$ta3-{94vXLkZLYry6?(ZGcLsxp0mBVa6x%Iu=8(PWh5^^QunJ^+Td8 zhKV8@p2)cdzG>Fb3@bM@%NmLoci1V!Luim=$4?O= z;HyNKojZGo9^O?k%|7oFiUo~p{LyGFneEQ^^aWz9A@4o@J~6%q%q^2dP*zMpfAFOY zcn1xtq0Oks>T7{utj^TWAs|ti$d@^^qP;nrH6EB%ej*Ji@-kEQ03n{K?GI^+F| zf*?9BUm8P-lOi|W@jLf@AcF9hh+7z3hP9N~;ep5vJfGqZKhXf#SpH*-WSUb*jL?8$ z+G65wMl=NyD~7>0ONLJT0R3-C?dMGkNh`0)5iGj0(uqHSBUl2JsNS<~H3-2r!$00s zV1U15-Yh|-*Bw+6i$SUQ!BqU?WRBZwrCxQLK`6{N9E5s?Ue&nH*)JlrOE@nqMaKQ2rFv>U7DpZrfzl9{_aX_Imu0 z+Z#!ZyN+a%h+(6saOC;!c8vmKhEffuSroJm`-7Q^9_!R_0dC z#rG@R7iP)thVM1s3g3f*6>_}74E}^>1tK5QIXd@-Q+hD!S+iEPa|>^y&_L!h@wa&Q zKfEKQ)TaPqa_i&nw@{=KLHF^o;h{(kH}iAovl+1=8)VYSEi-AB3;$q4fET{wW)6;j zw3c)PBrb`^GW{iQI5XxdXU2?>q6VMoR0D*N)ZM4d*+_%aPmG}hb)(|Wx2t=lO10_@aRXG?r#!J01 zOF|nJ1fqdryK*c#47!S_90qa65W9z#_-c5`GUpjV)rFd$NUtosAkixh*&q6qERkKY z*VjAt21~#Kt9~0sMC}(C0>1Gs7jZA!BZzB5Cxt#ZG<=2LJ`K|7oHmqO=}#*547ql- z(d{nM3ZmO(9lDHnf;uNt^Q8~E9|92{i0k08Ko{CQ&%tF~a}u;$ib>FJd0>J{ieOkr zIEl@4RfQ7U@dnoxyyTYVqVCc!+&6(pHH94?%L{Q6id@43sJl<;`78h{S+ zE+{z5)me{!bOi|odA~~K95$yQ@6uo*b>wzQ-5q&fBXJYJvN zJ~Ru_T&1D$A!Lq*z-Ofp_<1#kx<85%4C+pZM>9`^Z-BHH^hnxqdAjJ`E_D5K=z6At zB~JOYK*_l?s>XGv>s=U@U^q0(A?Fp9O}=Sp*-xG3Ff4)S8RhorxDp_%uT&Cl4gd*F z`zHE5-+pnvOTTOBF}v`ehJO2m)jQx3GY3urlNMAZI@jT7h9Ey-4x}PT+pCgQUYzgby;}29UTd3MUNTqErT$88Kz!}!CwoN}_Vq_I+@|+GI+83=&%22(dbYuI(LYeB>hPC#s|4XZ?I$|T z_-ifX#T`zr2i;tQddRid`(AW`{z`#G}~O6AvIsr9h!^9b1At@6j4 z%8yA@-g2rj(yhiK1=Iz1(@iZ-(^`PbuPrtW{vg|FaCx^p(!OU|Sg4FAQT6*wE~wvB zG~Mju>8pI(ldSh&PH^gd&-;7T`-ail>2sa#^V;VE?OE@{p=n2RoxmmcyT)#XK=}VZ&w@NKH$nK8=5Bfy#or4Ai7Y;=P(|eGf8#XEE($56gHyz?fL84`w}|ceB&f zBip5WJ9`?^9|1_-qs+myooI#b82t)06JyjrF-9jO>wYTZb4HgjBKr?}9i#VP2vX|) zK3K8DA8%?8nIS5t>TGP1sQ6sesdtrx$?X{x{{WD^hv`Et)g^cB2f7gQ`q zw)fpov0v9__Sa^*sF);JsiVL)_M%zt?0N+(N)83%_wr3nKU^V^aUEq!--zTdfWaHE5JMWZz@wz64~o)JLZWtEZXU`Kh6j132P#f*1UQB?x*nrw&Pu&aD z7z3)%1vS8cYOzM7T7*>bm=stN)(G*3cMrB5+#UvD6Occ;_ zI_;#3<;-N!otbGGx_B)W)PS;-rW@U{np#8|c2Tqo@Avzxz0cVoC^*00`+xs@-0pqW z-s}FXXFd0&^Ss1XZTV#@(kJAog z3nXlfsMr&9pig$ufBk5YC}q+mc=AI3Bv}M6ivWE zQr3~C1$ERNdE}hQD-4MIjqs(;GS)#8XO)r9GREsNT(eJZ0WtCG%q2$na(BxTe056_ zFnYlusBFB|`ey{OHeeKU)W|PHH{~zVef{+@_H}*}n(qtGCxH0U=M(-4a7Ls&Aek_P zWI~`M3n-e2F;?*gir2!?3S`8pgY;4KnU;d9iluf^aB)dM$PNM4Wshl5sNa%L4w`0( z6DglOo$}FB?351j(Mpuik`$GXvX+(uMYqMM&(LqN4v0nh0;EtrTNT7J<+bIwYdOD` zWsb2bpJ-Rb%8zB`rFM#ziJsPSXdpbxlIt&FaV^6w(Z2kGGL~h-nY0u)$i6yDOP{sN zgQ#D+&{@)N~EP)K)$6G$P!3y92}v@3}j(4;PiW3 zW^yin0)g?6mpX5;*j*uDSI8TL(z%)?gBr|Ii$4T(K<0q&pu)z6XM}?dd@FHS(t|`- z1zyzfB?VnHu{b9lF$%#oxCOtK)C@xthpDID$EU%=P<#}56r=~po zmSG0#@msxf5d9U*xVxoXw4Ck9Q=fo#!2W5q(3DS)Yd{*tRm7jeA9aX7e~pZmX>zpG zkgwQ`4uGH);1Tg>6+W{yxr7&gI#iowlc7Or&d^GL5oKH{B$aa^dJ^qbSp~lA2F^u+ zWkENm(NZB5Jfc-d$7Ih8eqRetz%BF&7 zO`^UcnBVuXooK7C0Oq#(N`rY~S76S0kium-}kNkbvNK$647K; zV<41kJ)uE@6&B++w7uoH@ehxSa3fgPmKEcFD1N6?@%v_cCK;FFRnaQ zS;aQE{jRa{yAD5q0IYLRv-5r7H`^04kx5{zR7{a5LN6J8q^tC2d@6+z)KU>ANio4@ z#r9!5T<~7;E&EbEmZH3Av;lJLgr|176L#%3JQqc)+1G*q6P+*zLA~<^hSnc0tH2M; zDYa`ge~m7!xd+U!b&l53dQtY2j!R2&?`CPi`l0M>=wzB}ML%5qmZ%j5S4?L>{}(o4 zcQ(wyFUYTtH)@r`@HzJC`y3qb9(S3pSKr`mf6*$qG13dIg8Lk4_UgNLiv8lh*Um&8>Qt`3j@r17?c$8+ z{?b7kcZg#F-rMg6TX)y>{=$zP`^!Dmy;*>FZ~<=Wn@JIba{(T$)p9ht==lO%2dtk_ z^7U^hu@6hc0xSZ=KJvZM63uz4GpDVc z%TmwjtlL*<#ZH!*Z{=O=$h(8Pf?cc58z@&Zb=FrTD}D#8oL4(?uIV!8Xq|JeopXOH z=W*Xg+gs+$Y3bc!RQo5=Q$y#BQ6J3EJ^j8VnsY)IIqTJ{I_D6bvtB)F zbh;a`zmImKaya$|cI_ccZV>H8A&k#a-VOE~o{!?*czJR{%$vBHaPhgjtJU${c06}? zrCpH_b1tq6aq+pkYl`DLK6iIj;@w|xJ%NkQ-Cf3Y2{H9}|1Pc%cXJ(cWkSrh+=Q5e zaOZP(R|Vd^fa_IUeD3ag*YVxQc<$~RepN!uNx06y#pmv>36Agh+}$-F?{3947Z;zq zyI#S#JcIWy;aahqYtEE}mAf8crv z7oWSkUUhuO=kBifsR=PV@je!JK6iJ`xjrE#1@BMAb;fS4pRP@aS&!>$Tzu~CiU`~A z(3O11L&j;&x7DB>jBwmtn{D|}6}BPJD~^vaEDoTc zvrqVKHRl5;ix|8r&tWf&D6J~x_3xptfFD8`oJpVJ&bLctiJdC@d8b|321jLQqcULF zJvt>^TO&=sh^Ik8ilu3H34FOnmxQ}(DZ^TOIb~R6r#T)@u{L5nL9E7jUixjZ=txt>Gus8i)zh*c6z9Pf!^kRI*PDg58 zUl6S|wb!+tr)#x9-CGRB9&8Rdly%-DjCBk|c!m+yzBm9~oYo48R5@0`$9))XlB?ic zM@ydG*fYS~xO%Sv^T%}r%;PSN1HUl8noS)!pJEV%c=NdCzC~OBfXxDtUF;GKwRF-} zQZJOnEh4Cc-`m>0hV(Zv1LtvObVNUeSjk>sC@cehKUg+eVuFD6zK{{m;mV=PD~rn@ zNBy!&CNlAho1(=$B*nD)!pqpgK=>JHZ~9NJ(&MC^9CU9nWQb*N4i2@@PL5X+$-shD;)jeJTHJza2e9emlcgYBpuN1TTzz@zX&w?rw6Gh+8| z8EC{Jq|*)wpbQW7#WJd)g^N%r;Dn++Jzd;~*PX9W>GM9wrl2dB(qsJOD>140!v7%`-%Aqdq}^7R^y znPbZ1UlAzIZW8QzviA4F77#(MU5iEj!Kul+SZLO`epEu}dAFzc0$^?Ex1s9&$yK%) z+!O%438Mf&Z^X@b`Au7ABGH-N5g_3Bawc~V^T)iswcWMydpH3mzD&J@g)G0v#?(u2 zAM~;Y_X0;Tl~N4Bo$Um;H{r%!l%^6e7~jQw3Qvre>1%%t&ZWNXO-9W(2-LE+x~Z=@ z$ldp~%n>yi#nq|aU?0kD%l=*X9yl&$f|G>aZ~hJEnUYPzG*DN|GSpZyN8N&j!SvV_ zNvK&BWs#|Dbh$Y$2{A4=gsZLu!;Pcwl0EnU(maHa6ImXZN)exVX8ehM5nqR!~ngV>La9qX5tPpWYpX1s(Kc~sb=E>;Wg4! z`0bQZKP>U=hFG($<6Y|cHnwk$&UdES&+YA7oiU=mxF$6th~Q$cbHd;4JmH)BaKig{ zHR1D?cbM?`=k4``i_r=ZZAa8`^xFSsrr(EUrDLWWmsv9nH?9JgW4brVbkqGnsHZF% z9zz+yA4n5Q^XidR2J+s9Ha$p1^41i-(^RK0l~tO#-4~StIPSkZsG0k)p!7sCsqVE=A?& zqAswDI@vDjGZ8SMSt#m>Xi*-!s6Xsd)L>myf4iu!Aun>W2RMJtVcUj4dGxhG2orHW z$F_p=B}alExH8^9vdLHTYky-k3{&_Q>rem6ReC9g)YlGs37;DWXBjm+`cq}});A1m zHgc_zUVjVReow*CzCR%v*-vzPhr;STRW}Eo;xLOsT^^(4i)x&m8tXGBc{FK=T?DHy z?#R{wF}{!&nCK$N$e_o{2-5ok;rl{fx6ce{Mb^hJa6zHX8DURaM#!5+JE$bMFyd3h zf7yg{8vW@%6b?{Vum7Q)nwt02rFimVOG?6P#0=%PoTqb;41VQs#%H|14>K@d`lmd9 zE*4l)pC?*iyO z6~_?mLRGG2a+UB1#jo(wFpChs=<6mUG`_9n44lS@qlQ1jiI;|JY@;#fml!urVT8Z? z1f0US!8NZ2Ia*e896=9lP{+x7lM`*ROY}?jqvMGG7VPgASID8hbX6GVAGx;WAb-o!HQV}RDqH3z}5@+``Y^BC?m z1S-ZHbU1bSx%dIvY<*J3@U z4)WLVg{<-81AoZpb}jY8<-!;i{e)X=T>DofRwDK;;TjmWfI_?=2_ZI8xQ_-ea0f5Q z3SN){hgE-a{DpdUKVaoJqlOAKexDKjo^8nr!Y$j3dt4W;UVzjd@XMo0^wEa`I#K^@ zerEe;ry8!+D6OQrPeFoFqWTokoXms=(w73 z=e}jh54f1+JX*hr;W87SdWSV`P@zkB0?v3hk{+~@PRo@fG(Yi>JfKv3b$_WGS~J}G znRy`{SXyCja!GQCw&EkE>&Dj;kd*GYtX!>V@)*5*+N^5Q1<(^UYD>OfdkcM zP-PIZxJp|j4*<99HCHL4sDbUQ1B3BC!XlsITWOQEE}l0Hdcg+*uxIpw7s~|HAuQjP z>_A;$BEHA3I<>6XmY!^;4waEF`hk77>7U)jb2z?=1z9oT?6`)G_;B6Ea=35_hcrZ7 zVfC)oTc<-SYyuMp=t09iy+X@O&a;~}0}Qz>F!9zgcn7BA9AL%3CM$RcVx(r*A@e46 z@4uvvGIXCs3wJG@oWoU$FK)yac+oF7>3t*YeIG-NsuOP&@d(BsrWchZvodg`S@6gd z)wk8F&tN)~T6}8~QW?MmLtdxSu1BbAkqI1TSG5p~eouyb)pIi3FvddrvS?O`?gGXE zK9B2H7>~f|gwD@12%QfnH?i6|>j{WFCSXk8!Zp#hU7T8cTTZAvXcK>e-=K$p3O5Th*JF6wRqgb>!Y@*6ORKU zUeb2JEpQP;AF()9%iq6mZ!QGg;SY~@`|4`A-vt20G^_qJzzyq6d3nV!Sr4F$$uGf0 z7R=@W3>C>=Y8}&5*dO7y z`?k1?H@6k6KUXTF> zXyp;b0S0JAGtOzW8*p}nu$t{Nj~`9P;`!TjA&e~#tPZLu)qvk6Sfey<8G1CnzK9{o zh9||eTqCHz9--KAN`^kz009lsYYd!{f%VfzJudor6oi(rAYEWRaXCzh+SJ1=iZRm< zL3@Q%b0y$Y4^BPAzGKyjEg35jM+>NRhz7TJVUn(Uo-6&)aoFU|iIfiEv;~GMnPwgB zHhGLt5uKO)bz&x7UJ=YAk-Gw}>)O}U92c7g0GSpOT4>i&2D^iev=t&={v z5~g`MLHP=MIluZ8dDW6UZZ|T-hz%$wn`;2&FvSypOB`v;03Z|N>1_paNUim@Y7Eup zT6)<&f<)TXh<^}?v;v8w0EwjFyEfEPfQlKL^%Wv@*yOmD23mvhK?ZDvOpHhENKBjn zNU_}SeDL5Asp-4{TDLktKb7lH<5+@uKzRJA{dw0O0q zQu>UDGl6?fute=X9t3Vo~8HzB2M zp6Ny((t?MQYrta1c z5N^=W|4#gh481%^ds5L5^|+r(3bK2ta?-v2&VK))VM11qE%Ek_pAr8J6aEeH2eX~0 ze#vl#KlF#2M{N^|#km*0zFTLLSCEtsO6yGD)peln>Kyc)7%7$1 zfxfE~`mRmrJC?gs(|0d&6yyk@zi}MMpnIPY^6oM;QOG-qzi-!n2o5(oC`#fP=?Gao zh&{)dHZzZeTi`N`=^CyLiJ8xEZ_lWG!CoR_@iQ?k)2-n9Lfe5WwogEd&~~+=MQ_Ar zg`j;XEL6D0DhT4Ib>OKOg}&uztD$%usjt?H@(~Ok{57h)=TT_dDOy9cM74P_DZK18 zvbks-c;J~HY%ZZ^h`iQ}f&6o2D!RmQ_s`=OBwa)=gfpNQ503FOd^pSZ3W#4OT`_5$ z`qTLu>4N8iGu5cR02cHU?CP#kcbNYKj0!B!`Swaia}l%ty0=`!QBM)dE+Li4)kn5#Z`<9LT3FvEZmxPO)HVaxs>@?4LZBZcYvN zLBBYyfFH$vc0afH%pl!b((kXpbHO3hKPFN62qk1+i8okM!mpCFb~#B^)&43wpe=uk zISKRlUQgIR_O4)U#H)? z%xM0>o!-ZF`rY68yIRFefv1eLx1+|^m~x} z7W~=4e^8(2C^S6;)!aDEz-r(;fkZR0 zx=p_;hTw;hDPJSN;@n9qc?EDdqH9tRVa1KwgzfV)>^Ylg>afqf5?K?L`rZN7xxdi) zVcz*y3~A~9@O^modhHxw1@6B(g_`3Y4|G%1%JVI0%!1mL%!uXdJG{ zNcLiLA(F2P-v1rS?FY-bN2EWv2scK~!uN1K@s-SDdOU+~BE@Ik6U0xoI_{@-t#dIG z@4HUhuG6Vu?s~f&*lXWc^C7fluQ?1YLyQvdXYQ5(zVO8UYF%!qo4uoHqT(+})YDQ>YuKwI@ zm+~?sJ1FI9oqVeO`I9<%icbFF4Bfnq08QA#OhXetvy%3eCN`pjY5LoZFOw0dS1+6; z9rWnbCtqXg2KBH`rS2Jp+`vX7^(#2BqJ%7+I{g*>t>%=BKG| z&(hZ3ePNY>3ft9{kzBSxf13IPOBT6~iR4;p<$8l{X0DNuT$Wk=L#k3|+G+}^_K=#( zJnCec7m*gv?Y z;o@_5*R784_}tyqfOji#t;5CV?yjd6CB(Gh{qMM9AMF163*Hsux*r#xySqq*5Z~JJ z%Ma9Zt?lij(B-&QaJ4c*hyWVS6Bvnm82Hr)y(}=tX!fC(3216YT`YhCuAlir8DW2!z}1TLaIoY9rnsq}X%+FwSV;nPnfSEz)$5Wp-!0>s z_^_4w(-~5tj>?euv|pF_JM@yMM<_Dvaa(om%P*Bw9Xl=YF6-OJb*ji1VE19AKCH{- zYDF6!v{L6G6+a)cel9z2XM4DQ`P+f3+}k(TeA6Fz>mi}?%*14mZb?7vtJ@l<9#TEE zqzTm8!1>nRI?*cPfovS6u&lmh$C!fC=Ip?^DlrAgb9OYjxhc%qk$Y@ROyMyZwewTa zj(#n}t*6+Q{j8_HE%DY9Oa~K>wF=z?aS%7`^~mKjmr-s3%SecPAd-yTNts3BulD#o zA)C17C?NvyLM@Pu8LwC8hOEfgUJsJ9knCYV>?eXm2eaVEIm_cJ`v!i|I1CQD`xy|^ zC4P#don1>2PR!>Zs?E^>R{dDSRy6k;&Tyh2Z)UtsEumlN!m+#2>PR~TU@KX<)WV+D*9=+ z=%@E#q4}x;7@tpB>Onjqzzk!ho(h%s*H?-=WbyIRk9vlD4aBR>koMYR#*swFN?t{j z;u+YiCDiq#VR~>8BPOQ#Y3$V*#bc78XnY>?=mVjEfCwqR@FZBf{47WGN<4(iGQ(|7 zd5RSsA$rcUgh#-6$m5|!O&okK^e5B7bWzbJHi^MXf_gMe!fJ8R)8*fZcnhc7u@amm zLTdHPP`_(@HHuv6Ly-qrMRGrO-9sF>8l6Be-=FYBuA$dN16CYjAqazICY}g`W@3Sr zNVO?YdzFl{a@_Do5CtVou~W&eMHf-aOFHXpWOXgAFW%hOwe+p2HJ|rQhWM&_>b?zl z?uYLmvKF1oD(-xI4}B?$Dp|l+L|*$^@9xKf;M(~LG#g+FA-+hNQB?+;@FG>vgpS?1$b}___0=>TxcbhG}>J@4wF=M z5|w0a_}Sn3U<>3$SPTH!0(<}{MLf*WVxiGqaBN2LnkF=+Pr(6j*sR8rTJy}0?La$C zc<$p1t*OSn1(MELu**oWzF~jW_!F>SgHlo*j_zpxb*~2kxh%Ag!pETu@q&u3D+4&bHX=GPrRib^C$q;Mx_TWJsYZQJauOD|T$Zat1? zru4Tl%ECz+qdeIGqbzvRiBSr>#wdh0p7P#&zc{G=<9^6pd}cv%yoFs3q8TM@l%v5` zRwberf?U#}MA6Y!oU0$JSmkt%_-uIEE|KIIR-(0s}h(2R>w z1aZk>5PA9;M%v3YOcoT@R}3H>a2u=fDgTOLX8?uEFsQQ#U^;%p;8P}Q5B4`~P{W!` zLK;6giIGBnvR^no*uC*B2S*~L%yPFRIKraFC%MYNLX#( z)zv6^&hWom+nuB)k3~|Zon%KvL9}x_DoSBWG}<{#J!hr*)4y?*9f@%PtEipT53w-F zbh{Y;=)(A2f}Rhx*4S|N?}5mt;cMc3CF`-y{Nb;yb+!^P5(xhXBVGQSM!i!`04@o6 zfguxToTCT-0-cnCq^qo?vvd-$VB*Fwk!eT+hM&&Yr>E#ue7@P<0_5x}0 zdVp7J&@gY=3{zoa1ubJ zz$qOv=H_<%7~})q?$vysDiGTF5+|>3PY7-{)9)a&#V#T4v?(IBFWDGu;uX zX^@rcNQ|nqZ%(8pi&L#szjMDr+$FoF#y{xRZNbn>p1`hoUe|f{xAQz{rE)6Wq^+F zB3Gr(wRM)=!a2x=bALxKPKY@U*Cu~Y8yXzLmcYN;ddI9gA!SzpEeD3bL0X)~g@&036n|E`)`cy*91Grwq z#pmuWr@+9ItsM?7&JdH>YKRIvL^a{KzE9br0?=_gX$463%sc8!&{yTcO!-6CfEJ}k z@KEe0L?Xa@4FJm&RaVbHv+xw?y~pl{cM%P`lj0B*?8dl>m&7vw83J-?mp0pp*8|nb zBS)g8NZuv*>*-h&Oph!10%yi)_tph45tgRC4%ru)*$bauRSF~!aUb?LYxJ298XPWg zjj1a41D-64eFUOPsp^VeS2c@O`NH#xLE!mD&nv>sRhld{aDN4%N(Nb&nS9$96mH?V ze)q#Vx^F|1)z#1L?`>CqE0OwFv*JK_sWb!1@zTe*;gy_?#@r)YU*dGTj@zYA?) zMw`?xXNmEw!;z7B5x3O#WAvy+CYwd`boem}7jOG99)ifb^kPJ0-4L7@W1*6|I$nD) z4uqCdo%bG^M^B_w_Bc(Q$L8X6o%rU9VRq`HO)7w|@mcvQ8 zAMHhT@!e<$P0{0!4BwYFsKs5SZ89|$oMho!QVWn5vR93?8%@=MmPn9f*Id0$VtHcH ze#5|_&~gHjl6(+U`8b6sR%}ToxW(HrG!q_&V{rsFJs_E$n@3#n}_R3I*@0Ey=px7UaJ>B}A z*$0+M0kp{1ZpcZmgLzyt4E=Ya0L}_wac!|Rm>E23Z9Sk2r&wj72{MLet~?oTBDMK{ z6r?5&(Y5l8NT)cQ&pr_y&Ln_a?}qa%w4vO!>`@w1O@+TtVRTr!YO>2}a(~w{u^?ar zems@POV8({PyzL>0js!bx~>%GF@iNGo~-wGZ(_*L}vZ3DD zP1Fb!z#31pYCO`>xwZH7wsTE)3b4+nfWR0nvH@4=A2HO3f5D07l3)Z$pyx6Iu#KP> z3N%|lH0?ngv${suB5?t`bUVH`n4NFLZo=uEpYHrX@L(UOL6Z--*b?RqE<)k6 zL;!ZXj}-~9z-!WRZ02?wo?% zbXy?Z_83>l#g33mF&s9PoX4m*w>x3YDR+|cxPE^J<&o3HBviNbEB>O74FiuBX&7M0 zpDYW1YAR|Kk7>3r)^Vbl>kWf49_3;}79?T3TcTH($5Ms_*PjHMOUxddG>;st5PF>XA~l_U*HX zgf4p>+o5VIa8dQ0j;im2SgCjGr0Qn$y5;8Gk9HUzX}rME9wRs{vA?6!;H3IbJwc`bqOT3_ZV~_EIgs=-OEJ76`{V*+3 z5AlLxua$T~7THs;-cEEx4C?RdUBn=1oE0&s!5J|Ku1Ar8K^53;9ej3{N(D`5VVO>R z_HnMI*1Q>EO%jsbmL%-hi-pvbP%ncl!cDzXtHa3(ICLW2>OtoL-m-&&MRoiju+R=H z+I0Y-7S7DELm=-ism&z_lnnuAjE$uMQ$j!8w*+BCwvklBTu_Bq+Ff^|fQt;cns=h@ zvHRBc|R>T)#O4%2ce=9P#>rI7;L6 zT(tpTGhHH@<)XTCSe=E+C$j|+SyPT28I_~yd4F=QePmQFB^o)TAad0mtbCi07M=nj zx4N%7%c{B`>W5psrpM7VG~!H0BR&9+-MdC?{}URa!x&TUpyvNoMx;X^m$&sd4CGSI zX@X?M9jA2_t(=)T>nY!G>MGh3+iykyBGR*uPy!M~Mwr-#WMbj#>?$KYYcJpk%VO~> zGmg-#W1^#fJHW-F%X5#_)BFv8T4UaOvlf`U3A&sPk_l#S zFlzG{;Q~e(gKsA-wypXLlHIHt1?-U8rAjnHJv$t=mQ@!HrFESyA(bUSTSnVB2>}C> zOH^C0S`%qpC+^TvRjU5R?yB5bUk7`)l5g|jEo#Nf%!Rl*Gc+YRNd#Mc{h=fMp{wFE zL?&<~p*4hm9*mdAJ+;m=jHlNOpv5o72ZZMW8K<3xv;u9kO6(Q!5egT#${4`9r_ogk z2ZR{ks%-ri2a{_{bA6JQZqK8jML_E|Al)~0QdAhN< z2(~#V!l_g*cVl!`(#(CWmmYV^5E2J$70o}wG5osVz2aMuXCEV+kz|Y>n=^B=fAo#< zuF?{Ig-siwgQg_stVqRAbsB=n5oW_<5%bTJ6bR*}_(G|^P<}ivn6shp*unU{4l;He zDJ5H?y9217)rPK1!PzUm^helzSJ{4G)9D8Vlh|rjS+YLgx!P6VL+Izx)%-{}qh_iT zFhA|wQ6lqmh93v0ttdu$YHn;7^WzKkx910lN9O0Ug9V~or5|E^jPRmHHYR*XX4>rs zxyovh=6eM#6R%gme%TEJjF znKWaxA+sYNbex^G=54kR8=nl+~^!9=CCWjk*>ak8A1J{NQ-3wXsF`ya;!< zK;;MtFzUwX6xK$wC>aI4sf| z{y8%=qdGjef1Eo8fgJiBor6zTy78Y89#kLhx6kOf*g@_X*Mi^0<|y&^ecgD&I47^` zu8%HCnuXX~fDQZ~S+ULRudD2KWJBEsiT1;-2B04>E~yXj5Gd3952|v8$??Q=^50+EL;1WEMEQK6L6y89o93C* zKEm{_koDf)J{u$A8wn@WHkWHI0$hMfKj931P;%zExbf(b6Gq@cwg+#8Wm{AgFt2rq z_orbNR`}DuzWG*P_*bK36M}i{xEU*Ehp`-8;9oIpNde3C>Yd;F>F`{uDD*P(5uWR- zCg``?T1JcQrIFqS@6a}^s6NJ=9d>}O3sFoFEK=x5#78GtpsL*Zj3$1{T zwF<^9%L53G0@EX`-%@v6%nxw&z3K4ym>-(R z_RS@XA+i{rrq=a~{{y;*$CkszHwLJThC2sAX}gloy69tQbBy(o;B9re;e(tIh=Eys zs0a!qkEK9@QaMnM#}%j^FYYa7?1ih z(PR*KI4d+E(stSuGWx!w!7TE!{Jv}HeT?+h@Rp2Tdt}W_$iak9jG8^jJNQsDJ zuxClyH`lX+NhlEWPdJR`Cy%t}0{$iieAeDi3ObUG&xTPgg)vl(6($Q+@Cmy?`(=_}JR0#}hUNbz4;I&J?N=BCBYZtDEPACsSsmH? z(zm$guaFOabI;r#+I;eKFr>DE1-Fbh80&I3A*$M;fCh?|tss?5ndB!cP>^h>Uj|ae z&Cx{Yza$AxC7u-rh-U@d77_Um6wxMSTuaOew#t<-fOn58VZ6I`JbMfF0V)%M+}l5C zkSmu4ug_(qAhl&kgs`)?zOLeK*8a2Q4BXHNK zvyIqBhE5Gg=+wB#hky6G{?%lx*17)PR|2VK0d%cEs=kp7q#9?q{slU2_rX+C7)*7< zHj0^A30ocnQoY<)^Pf0>tU^51TuwfSZBVGhbl}V1RD<%tU20Z48X~pUpS}|zQd@7- zAyVI0U*U-yLy|K@>L#@b$v{yOB6X@iJR2cWKPy0VA}d6y8!^#xkyHqh8$L4Q5v8-n zsA-EcR$4>!cXVp4VIJTyYCey%4cLcu6*qMZ(FysY@e{wOSGB$uzC+5KFn0=?UI=t|cX_K|F z)gSU!!dFceKLDA~Oe_Vz0HAx?rYyg13cc>|E)ym%=h~uTk3UohTGmK&$axz?&Z`4@ zdV~025d^{&+PfeaLx|2>nS>(MHmbx?B;w=XK**s|owxXK+(C#vHdJD+ga=pRAp~k? z+2F_VG&N)#Q0o~=qU&hia@z_;>`$tV?O#OWM@zi$5g!z*hvJBZp5-XT1Tg< zQkBmLo@H+}!m@?m3{j7i6hBC)Jmjb%eK=x>gwf2dcW!%lvqwtf%Bwj^4*`z@rm~AA z`)RVvp!6Q(KSJ_fV&$)JRv+v^_Rp_k^}}>_hz2^;Z}gym$E1MwfsWDs^JSjh~I1U~5iqEYyyOl4R$V*N&<^f(~( z-P`|ssS+kOQ>{e++OO6&DXSuWYPV8aBU?+p!qixlur6hLdV9V0u_@Wmb0UQgEk z(Nf~&Y?6<5mSAPM_I&AY>b2(!&5EqO=5IT!J#2$B5oz*vPbBzI#>D6%^oKw8g)Wzf zk8{3t>un*g$XaZr$&>*4EEzK;+zero=QGC&UiA3t##RHS@r7P<32c&ip&SQNnyl~! zu1svFs1P4WChdVOA>3;3E*kr{QR$2|p*I_i{ju3t=>KuIh5rAB2aW!pz*7|c-<=%C zRz|h}flyoi*z^6MR2M^W2lWv5!yg7fS}O6I*g8%md40Yx-ItOfBw0Ax=GwB9I`g&Vk#;FVDYXT$8}?I7eWx-dL`7%<5R#u}S0 zaKHno;-1OByeC-3F@`F8)WYvT?V4)_e$QBQAVWzE@k696K)M>w`;&_(3WG^< zM0N!6O5g;?c^q{;qNns|1s16s_{R{xWAd`^W&XiBzfB6+LYkf|xCfk7OZqDAVQc+mas6QtI_RrE<2aC>&{six*Spm>8w^==^-aUCT~}W= zQhP#QU0wNqjlOF9i(Y>XdfNhO0No4vihCDDH#Ut05zeZ=YcJEXnbiA-d(YI|eKD8P z+7`VOdrfKuBzuX@zBi=SASvJ+6hKnzo+JNzQfp;4d(?`3t-GZdCAIGSLN7%cC}Amb z6LiY)EdIOm`YQ$p&cz!D?+9SS3UBp?pAupzyh;RwP)9%#*@l_2=%ga(%plwgf_p9} z_naA=jswQPKIc%hAxyJGm1R1%9j^zwW;J%r21wQ#)!+OY9NGv3(234Swb?i54Y_f) z$z}>fJ)>wvK8jb@{)gQX^qqxmD~Ex$X-@^JCw@ClMawp_Lh#Nd)s?V;-D0yH6* z2kZTZv&HKzyVo1WR~K?lhc^q90*iutwyeF{BGz6qFdVNP7qWdI{PQ~yVnjN&45vF~ z!ktpjOG>YX@(%fndXWDt$zP!JcgbSkm`1sAy@ode(H`OL+2jh<-o89{7$){Sutdhl zCWwAYr(1}>EDJ;o7-}AblmzJr;^9JD83Te=r5*y~U+ekHPukkcYs=tsOyi*n#Fgnw zS(zy*zHm0C*7PvbzQ@D&06+MpnjFg@I{L-Qr~lmU9rY1nhLoj<4$rK1}&zwd0QC2K7Q;z@p_(O{+ zuV-q7zKi-9$<_EtL9-dCQqSK^1CutNNu3g;;1q8oz}^P6{97Hf19C6y8e(UIDG`vE z(VzK;LD(4&*OVmOhv5!{GCm1+tYCTsP4IMO)NtPgnAtE4A3|eckT*UnI5rQr3xZ>> zLoQ&g3HfTx^$^yY^Xu72Gu(umFTK8Ce_z-gfOP|oO7hjT^;ZL*!{LNW=ks;2gjf>R zZGt|{a10iNx;2+T_Yj{^$}lEPMG}BA?vYtCuvGw*A4~Z-s~SD4LK$k*P60fQn>tpW z14U}`pIB5NUd3HTgE}CGkI#plCX7M>aVH(5gDITJU<%7^P(XPECv{XVyW0T}HS8iV zV@aLc9}?hf*~e(dAx-j`K=T7=E>=nNI9SN>(556`$*f$MXuK}{ganeyG+f5XV5EKl zuu0V`xbvv0&#<~}i!1MPKpLZH)C0^KksI@7rXm~mg(f_v=|_c~CW((D7Y^gCW@ju7 znRtr%1;22;mBk|&Gk~NjH6#~gLTy2}5M>Hi`a7RloR= z-pVV7;rE>NM3+v~iVbYV4S*Q1{i*6eFLnqnj?_qih9Y&}WHvhSqcdqk2&PI+BQ=kd zIn$X>qqI*lC1)A2S0s8ts=8R`ebmYeZJ3qU>&W|9*Le@td9RM-{qehgF>n0i%Y>Nw za6OKT&)r?EDk0`Qy#E;2=G|NgU*r8(2{HX}=W};gSNui==$%{usFU82H6C8oz^Mz( zvI(7hP3RN@WP>)LlTShiWXtsATxtizEQ^Fr7RUu4A1@G5pbF2+@r-3PqqP%t1F-J%eSkQC)GGre`Xh3^3m8kr0)=idz#Qwf;h zQp3%;)OOJibg(yry=@?@w231SajLQW=%bD-{qo@-HW;H?jTJAVFv0w;e{IEUPamdQ z&wU-wv5x0{j^{YXbAQM40PEQx6Moc2BNoTfW@8_m_&UJG8}AP%`O-h8_Tl3|_}3O6 z%-CM{h2b3nmrYnTeNb=$Vl&0_XW>>~=&+1hgb%YU?t*AA&3m0g;17S{5C6h~jTK{W z9sHkDA9x>S1>CTAGzULlI3T7yF?KvANp=ISiWC$Qqj!P7e?ahV<146KyZ~@0Ce8DQ zsXxu2FKRg34Fx36<|`WTqv0B{77@w9uN!YQ!z8GrsgJR5JyUCbbmdf|uW5jNK$rgX zwU$KA{#&YKGrp_gclG!V@uDWzxc=acaXnNGkJcM05Y4_78z-Gn-&D5=65ePWg@Ln2 zEfb@Lz?BU3UAlBFfnm01Ja0|%~s(3L#{_qsi ztYAsnx%7_}b!lj{5n=>nAcvz0QROz2ii4rD<7pE;rnLpf4`3liYhC6`e;)^4@zo$> zw7)gJ5UvJyw8C=tEKXCO=8Iq*8G%U<5y!O-(Pw2aQRJJ{+XKnqkey3_>Kfq9D@NH+ zkMBSXFC(VlPVNXv>icOj128kISEDc+93k`WWDj6g&79KOUJGe62&~aC5BEdz%ya}F z0D#?{T#a<~uOz*{QtYYLHp~8Mz53~A*pfy;Z%?=#za^rST!b0U!^8x_n*-FD!xSF;`#&3H5SBFY7AlPFXFQsGQe-;| z;;cm3&Dg5wZieKnt~N7dZAJJFr#jQx%(yw}d3xntdo#ODhGf^x?89%m+{}D+)ih** zCh?r&F#}=>u}m1B%XhKH?$_gx`RY5t}AtB^%X(KkVgxHZGGp&KuNvKqp>&pnHtN|57VXZ#eP;P`9E!x*6HbR6VB5&YUP^|nw*Axj8G9p;)r=- zUb6@*hzV(pRzmmRJP+ z1P{S?78`$olZ`L1^ZU#qVdL8^Hh!Y8@xOzGuaHi8E6H$yIIY%fdnK7~;p%ZGOW%Y` z;fT6E_=bT=V>01Ci8Sn3lduWL)fN$Ld6STof-4o&Wg6}VKF`ucro})C0RKR}8Y|Rr zgqy@3h;Vt=!z0={6*5Jg`kx)*!bIjAytAJB>f<@cV8Sm15(M4Vg=fLwbI1{m1zH>r zga^hwG(H#iG~DxW_u!t7yMcQVJP@*i^NZ1o@Yst&^GoF+CnVuH!eb|f=HD$TxgiNI ziLa*w=RbfXJY5rVd@d8*LG(F3XhPzUAr?r$lN)^ zcOZB)KF5Pc#*GvZuveNI;~^J@pn9Y5U@_{!feuFfVSBPMY6J*%TNa1J32hKE5kMo1 zIw8w2@JCN9YcU*W-_(5}+&(Qx4R3fa8EvW7$6 z3d}pfscJ z!ZkM{S@Z4{>V<=ZcZYR*Orj7N-U^KeD9lqA4HMErd!mqV+mO-TAc$cRixxgTWnX-F z2+lIc&`G8n53+c97AoI(E7ZCB>|0R=UlJ~Pn`qcH*<*F5;@mA{H`Nbo!Qi**v66%n@Fm8L_>>I(zc=vb z!^z8mc!8~nf1}tM0jkWz#>rS=Ak!U-dEY>+hns&&h?#_I z1};8#cfHk?5VIKXpTJeQn``B^gqXW<{Sz0TySr@Kh<8mNiD6+YC?o3sjd0vC7u#w@ za6|x8n2#d7-9)G=Xhesd%>%$z1Z-bNi@_>k)|I8#7qgLUc#A`?F9_JS5sBwCWATeY zqOttyyen_G;hO0)S+W5gY!>zn38@cFS6oL=7|}oW(Er67XX*d*RhebpER9c%sI<{r zY)TPJ5X5#}KqS3UJvB*|(_Ro8>FFd^{?s7EhOL{nxo=>X2$Jkh2eI=E7Lck7$nLdh z;bqCb73c`~Y=Y39+6ZKWMeIaq=|DV})$R3IR@(3b)_n~1<^&JTUv#g3{_R2=P@sQ? zD=Q3$zp?H5fFZPrSS}<)fTIouAWqX#(Qn?-g3ujjP%cL z=||%}Mu8r=9aKsfri>E?iE-cCsxQP;^cx0Q4#H^*#gpcsQLq98gEPpWabK-!lvFOK zNKa|?0fP%#Q-a5Pk9f(WzKZw@MUDHwndC%lK7w$ng%qPp`#y|U5A9_l7PS{M!je6G zsnqc0aadBYWIJo1zko9ljX`3w$#8Fg<71beVtHk{7veRTG{ z(LmoN1ysMGHPD0l{r4K^G%4{0lnAaWDnIktc38g96={ZLX#4AWy{mPnfhN`kn+tNp zw*PjZ>DgKK>cjGCi`ah$VR9Nl)UeuCT_b4=Bj*v`I@;8d$2FLo6G75q86)V}VW*dg z6~ps)duFe#u`xK*HVG?a?Ic}7mtbTVj+u$2q7U4tp8TT*uU_NBf1FDA*!=oltie-s)zn_UYs-m+GkesUXz*>#FG{dAgLTlSv5(6nK406i=bh_}L9 zWuFG_-3sf@N*|8kfpKROUg6#CfHqw*+^uQgS;<|R`g<&FunZ7$yOx$FlTZy}ksIOC zt|Zv3m${&1Nu_R0QF)uO#RjGJ`Xk7`o4^7;+?_)TJjP;)u5?R^Yp= z0+}-y{`-$uX|yji%Zia?gvu&#^M{sH;)YM*I^I7Jy1|WWnAh~i5%#_$YTKxkk5nPn z5w#QW&s~BXQEO~%Q0=f!q+EFWSG(AsZ}k+{!v6duBm9G9e_kd9iGOZ|`hr1;Ji)>? z>5Bxc3qU^x6?(0=O#+bKyRIMHDZCXDFEdcZn4`3rxvYHvT@1Zd$XtP8K%ZuSfAlt4 zUBn}1Tl~2Ya8XPx7qaUZt5o${=2ke)%=iM7J=?Dw<5#Vo zVALcucb5P(=N_*E(8R7tLa)^XEHR8?wI0O=dlV0VDv6`mQ0uJ*aDX(`ra5|rlvN-r zS4)03BWb7?$I3|3gfQQVfm5VMvPjj9lqTdmMp8Fsbxp6w@@q020Llx;TVq*-`75sV z2BlJOxh#TmbrGxd2ICOOD23|@X1Mrnk=+N~A8$oB-N{v7o+I7K2lS*y0ja3#@3jlz z^T-0GYw&T0faL>sM&G~|fwKM4O}=qC-h4yKCSSEx>sLP=9L*%JJn9qc)dwA41)9`4 zzHxv!dIp)e#!8k=RFg0w!zf=tA9MqoU>HQmrTqk{s`ADymJlX!@#h#-Gf<%(KAqoy z<)JXOTFu}m5RW!78V3f#GKGco3Aki~XxbAu7i$Wrj~`oq!^Qze1Wjo2s5YJLp9;ObZORzz%!tq2|n zGdx zzODruD;T#`7EY@=1mz*oTB=Q`LNC?*S97U00_`;-4eNlf5DQG``&W*Ige0U*1fdc@$bvR7$iUIrG3wjTf5p3N+<<0FbE{D8 zaw0_;rFz70BtDVa>(!QHSbH_JZxo|m(}31jqV-9*H{zZW=><|?j@Wu!)V9C%? zxJtj3o(mBq1B4yvXuRvfKWcMyKhHG#xxIa>Ge*=G*I+{*NcAfm%HD-=o|&~*Vo>dO zBLGvDW~Y61#nBiv?yDNGR=zA7Qc!P5i?|_SC>KG%67jT@Z5aTy{bS4!EV(!^M^VIu zGksi3fy#pMLCRwhjf8?(!wBJ&Cs8^ea2fyzExldDZuYzJQiSbuZ{RXqf>>i@DNa&=-~m$hV`hlw~TR zj?Fw6AD7s%lyzzY7vEoh1Xc#lkR(%wL^_=fG3L~zVK8{Mec85OfU(T7MFNN#5<*Wk z;Fpal;WP}xzJ>gN8;cHJfs+DlG*uR$5VQ%tT|mScV8jKE?0Bv{rDr1G!$^1ko{mOx z1IVYzd=Xe-x~!}o$Tpg%{`!%KEpECUB8!2XoP3Hbp#KzyL_V2uoAHf9WYJ2I#itNi zv{Pj9i!t(diY(x3IANeAvN#_iRve!v{)ih?It8xgpmhI8_$*#L(1?AXB8#IX705aw zr~q$j2`X~cnPBa7@Q`i=6|`yahl}Ge_SP^(C45u0|7H*6dyeInq@I|@Iko4|w%nn> z0>Fiu#4Rxi5Pa9|7?m)nhzl|`OPS^rIVAN!19;MJIu6ALgWrs+mu>R>E; zz`Y$Q(Bzs^Kf~r6-)%XNvU{EMMlGc1IKQ35$Hh_6^|Z4sa>I6h1T7a4UyEQQ>JsSj zhh7plM_WJw`xq?q2gGNP>)dvNjC!d>ogkI$`rQahB#@Kk*tjz4!{*WQk{-f$Cy&OO zJc00N^Ffb7ksk$dha5YANRs3dJ{c!+?7ehsyfK-8_S6aibZ*L&&Gkl>eWDaFMHjI5 zj*VX*#daL3i_tP|!lIFG$+Z2UnIK*7jyN?w^E`ktD$|~Hc|`o6<=NEDOHjmJPxU$e zOk1P|igyQib()8S0_6ubnWRG~ zfI_?-d;9H>FO1(0&}_WNN!p--qdBn<^noo#TtZtXTui`!qmlHXgcuew1;uGL)EjS8 zOW8<*eB6opOI`T8I1VF<|S+kKpy#TK&$!U`sfSn z!{n1LVt=%OCWH&KT5SQ4#cJ6$Enu}gD9Npg#&MB1TI(YpluWVgT9#2LgL7T;?f?Yo zf|xPiwRCVUegv__VIXhCfSgA;_NmcLVOM|PwZ`@y(PQ3IH8HkGm0criheoE@8aURn zZh&t@|C8@Gd2(*zP*^8W;&a+rdTXe1V$wxDz@%p$K}emsRBsKz4htr~2l;jL&d7`<5Xzs;rI4M0c?5D`XS`RtyA(cS8g zzdGFk2p;N)A&>irJ zM@JSg6JLeT0TIf7Mr(x9dyLRBoHKp|LLdsrXxgqf7~$_yKohn^6wrHp@-)f*n9kk< zee%e^1C2!Y-Y)gY9q@<4oB3a-+F%3CN25)*O^U=bLO7o~?;?~g?mWPMI#n%gU<(;m0cpJ*vO^|d(mBV z9RcW^@vb)eu6OQ5RXx}Wo>8rkGa0Z;1!_5#_YO8%)jf45|t4mkAFGaA{D zpXgfirOgr|`mdRY(mWRS+K3YuffcB}mRqVXGBGGfhqJQOUP7oqjKRg3B!<}--gJD2 zg|S=6hS{$Xe#r_Bg3xPGax!Xv-Iad!vy*Lj?sh-S-CO;vMuV^_cc8(zW8MH7!~#H= z)5Gz|C|{YtedEag#ziBnbe3=RQh%E^u>EmPP`1qV2&_mb{_+%!0DHY< zwj3z<@1J{*|D=E>Y-YrN#T`hpydEs0>m`4M&aZV0ZeczmG*ooUJn^YLZJE2$Pfq-o zYQqcgUzC1|;6D;37~~=g0~XVCG7`=$kKx>|w~@-8aA4Qr++fIx^&#?LJaliJ)gfft zuJn1&;3;BlqAnG9vdFG9y9?xGfP!=e_qi&V$q1jNuRuam!*N6f-L=lKc<_)YCw$?e)( zd4FS#?feBren$9B9>9>~i#UNne(GAGd~#XT^8~y9p%zraJdW z_(woYn!=MBhWJALlD)y{$??r1iCUhZ|N0;a8RZWVyaoU*-m^F8zcSe3I|YMk<@ZsAUyq5C<*UOavffb zGB5%c0%XpC&ztSx?n6j2M4wJ^-_*|+J`bnbw-pXzpuBltiU0xo`qDosK$ytO<6B_1 zf{?D<>&fqPwp;cS_~auoT?%V(rQi$EKLVTpQwSz2{%F3?&;ZWg4TJz5H$krw80KvK zpqfCss}QCRr_{9U=TCp#dK}~*omm49G|-nd$a+e02Dab$KECjJveukgdMG(1qnfOV z{ErzQxU#c<)h%y!<6ni-JVx#v@+NlIj5}dHw%z{`f3FCB=)(T2{WyES!ZgDA zvsL0xKwidxn3jE4?jG1YM}Rq63P*#>bw%I|9{rC9pLa4Ih0p7f!0BL*)3g03YAt+; zL=cG>sM%V72Wpffd_7D~@P#4g9w(bGR{`wPA zzurZA=MsC)bLeM|SIZE*IAzt~4g^sq^L3=O(* zQ3n|S}+H8+7YjjqP73Ic#ZEupDyb! zhsy6q6$tBu&hZ*29wqyUTZb3jpw3UyjU-~-m@&nO8!YY zzs+*ltIp`bs{3jH8!#LNaMk6#W39TqkJq?R3fzEAt-D1Rjn{bTLcQpUxrBNWuTk?; zv~TV<9`>tA_B#CE-3RwJ9(MM*yV?I%_Hh4O(c9IxsnWUnUdFFoSKm`e?a}^s@&CR3 zkM`l9cSZONsf8uTNC5yqeH4v{-3m(-?pnRx^uF##@IUk~di_;61;N1{te#5A{^_43 zyG?7_%daP!-nCM|VidsT*WB>mZ+eMR;siEnkDJ~H_jV9sq-v*#ZsK9f{wMMbn_qFr z*UmpQvg-a@`5NW6V0wCaTtZhoP24q)M1;1J@z_CV>o^&~VISW!ekLMc3ql_c_}smG zjRM;$N@{n;?y4%=MhZAh7tnj!uBH#`-~OOpCB5IJ=1Bf!I{zL7 zYu*JNV6t0wNb3hW(PI^$$8xcm{67*;Yc$rEn5)E{{t_^D7xA<%dAiFGB$0Spr(cA8 zj6Je?s0C^HBt<-gxhy_WraR1{PNpQMbQe#{)gqw|N4MTeK+w(;3UvW zRy(hQ1|X{k_%lyRe?*tQ7cRjml7F(!-z8w(m`3qXr6w>48l9;6hg~sKPQ{Sn)B&l8!GUK=C~16?#*akiFEUCv ze@RLX9&-5#LL7!5N*UJ|0Mfu8`RcDj5$C9^33UvU2!gac4et-5Je(L3quzY~CoS)r zfY1rA6%J@md~pY+2KtirEVo1zP?0z#MF={e?)K<7C4Bb$&JdtxJfBa&GaQ3hs1;R! zk9IW|-y4l8AocdSpHuHzEe$iw!P#}+wTDaRsPz3}jM$p?CJKo2wQ+NPdsck&`%t0i z{#?FtYkPA&e>y*LH!qPdV5ayXPM6`QMXLB2e7e|9U(0mBQ;}Le7m*9{z=|{%>X+r} zDJxUHn)ch4_GU&M#R3T`Gg8?8FtcjTveOGA>FK|;wl}BQ>60SqGoQxyNp`w7lHT$Z z(&O#)6C&wXGrg4%#d;GX=^s6b^hP`Vx2Nq+%tTxW3BS->Wxs6VOX>NxCy?n0JH0-V z=^n&{&^^E1e)*3`rX!f?20Q)!NT%l5$W+YX8fU+}Ig-i$I5Lg4(y2ia(UaS0KG*hE%*b^5(}o0J7D9;g$>KO-ZCy zU*E0mh&U&!>&;7A+gr|*53Y)2O__y4DY{3fH%_Jzc{BMAyrC38OvKeM*p(>2iE4|(NJ^T#){VBM!ybG-R zbyhmd9%iR-!`dGl3gUg2JhF#)-&gr%Q(vT-hgh3>5gX*;rk=wmZt5OBpe5MUyNLIF z_7{3T@3p{T+jj2f$D4XT-$T6bfo&WwEWi8?J3Aytdo+B%N9tLBx73qe-XVWc5AvTU z`Ac>F-R$i3T%vQ<6NozP?7Pa#o$KT%C-(U@Y% zAN^!U1HS~Dk8VN(G{dNy(aj8VA%79qH2-Id6;q7Cj__W`JJX?$@P0JjBV-dlM@%t( zBLSNJ1#TJU$l*2L0k!Qy*3oaB0CiW=o!Vx2?LtOCs%>80~v9GnmOT3I> zgb+-u4L6Ak&Whnil)g9~57v7tpqPoNiNpnOwaf6C`4UiUI|GV+z&v8(hS-c`OD!t?WXUmJgcCIxMH(f@w0;~HmgSoU4Sbr^-p9QpIkq${=R8ZV~^S5 zJUiB7<{V=c*G=DaB|;4RXyyYuKDqcI>67a<9-%~9KKaY|2=vKyAP#+x?wrSr26b2G}k`3 zx*?7A%-!3H53Yop{M0h5sCREB!1MX|%Ia5yX2C4*J=H6-Ku>ToF+-B^1ZpB}``{Xr z&!2nq!8NWg78JulKVQeg)jm(YI$D6SM-Ot*Cr-Z!(4`TvM zxxY+pePw&jl1~nFmJGre^SXO!b9Rpd=v3p-^>wH)rRQTzP}q*63xD@wH9m9GChm>s&72|nA;Q)177<0d1Jf%**nNIt=> z8wkS?+#)?gEkuLj6yK!yGwQxVeVjDMl*8haEbfwT_=5T71>;u6p@J%&8~B287`fi- z&I>vYXHFQd-|$$#e!gKL-lG`fa?5i{L_Fpxl~cr0hH9WR5LDnLEEffy$6e(~1R!X|BX(NR)FjKBp3QTC7tF#3hQC$p z4B=f7q%h!6k6+)`T;IJczE=Bz5uv3w@|{jL2TMScVmy}pO1sY-IE^kuCL|gqcIeF|wVYRehPB2T8S zon=OvV`?9)YiFrvP}^HTuHPyu$mgo}F|M0lCP?{yRotF`~)=u72~Dp1OQ(Ee2( zNiaK!s~2X$n2($ztwrC|f(dS{cUMT1;^eJX^qD}IXLqs|?v4QSaozrwFXc!pc}?_9 z7DiRSx+&(WuSu7}p?y!~Vqe~d`p%5E$`RmC7B@gPf!L*Y3lQrD5Oy(=Q(-#{{=6ql zlT*E0)OIjZXI6DR32*9)#DWL}WNtW|X>P9?3Op;2j*S1fhv^3?;Clh6(Ze618lhPR zSg}%m_Z)S_DO$l>Ay7oy0i>g>T_}?E6@k!Q*BdC-aYfo;(!qG$K^Wq;ZC`Q#F}nQ{ zt`vENlLZjUP6^>H?vYMv^14PaxWoOm>}7ocJLA$Syq_D+UgRz)t^#6oPX4$eyPLo=8^E#@V+62-SAwrVu*C|&7N@d66&8CCzi#nN_Tuv-@bhP-ct2a2 ze`=42k;y+skNyz#6Q~{ZBucA9b=0RMwG!yV32P>1=u!c7v1;viq(bOmC_Mqrea0tf z-#(yT#Jf;>BIp$;7~w=v0d|0p8wG(-x9FP*&Vahlo);Za6*&@rJ27P77tGaKN4F?{ z)Y@L;h(w~J$%0%|5wc(b>n21Ve^+-%3z6!5vZO2*GEbAFI}W)iIyVuyqjattxo7L# z4CH3$+$?Y81f+^maxg6B6{gG_S$Ih<@w+<(U>06*Hmi5bL{=S+d5rZrm*spy2NN_o z3zU${UPMM}zg4960M-=g;Z**)k>WB4RLyYfCEG;^?X@iU+uRk({`U+w^o(0QN{>dZ z*ege-`GyrOG4@&uF|V+eM0gz06Eyd5JQelmE@*#xI8IA$nB6-y`LkJc6_l!71yOkr zX|?D^BLQppxcMD7+;bOew?96z2Q$ax7Df% zg!&aBz{@M8!%}nzXn>Ge^cAv`ZV~PE-3&-dbX_+gWZX0jAqmp}A=`2x7^r@0)m|pR zg3GtdhKql#-DEI6hCkPk_M^7A;*yS`-=x;|BP=p@|0CFb(%z5IBskIL-Ig!%ebfuh zdRcGE57gfghsAHbJO{u0_LGt3{J<3C%BJ*tL^PXH6vxh{oBd5&4b(r3rHL^Q7xNN3mi$Y2KZRY4q<<8{D^N9!6EH!N6LB7+p_WT zA-^|1UJ|h}ThT{Cd<5`p+fS|pRnkDr0nrj%7n2B?48ZMy(Y@KM8 z43NKs4f?dew@t2M%`Ux&7VE(tY!>#w^CFPEXDRX?N8U3!Zz+~&x*Q4g^W_*TSHg>c z)k~?PI=5OM0DdO$8=|CLGWPBdIboZx(Mw=+VDlG4Xnuh-FE-8LbP(Um5YgX;(EK22 zevWS5hEoJO(biLbA+Y2O08Zzil|w%|-=_iJ$A!rO)j0hp8#=-?6(r+Fj7<)a+W)ve zcqRUc{KA-)`(Hepi9dlihY&??Qg{BW0YF*c`~zdR`}ObrfM5S@peEEF7oR2VZCQ>L zLI)Q}2gSOBF#HJ|DD5+J`&MlR{Qd+!yIf;XeqUfv=s$uM1LgBzKlgIpZgPXYBL27W z<=6dN$Ctf7Lc1^c1=@;kHh+VDdOUp0kX$nNx_8I?Bv+>i1G z-+6_^pMSRR$;H5*fFg|75u(4MX8tErv~hO`{wD#SU#R>~98d0in_vCtzl9B?mrDor zQ>BCO9Zy~(-8`bZX#-hXUcckXV=oSZ*FfG^8RTt8z#zO9`pRX~R{{9@nSa~R8u&ZB z^Yo6-v`y;xt7v1?U`t&nTFD6Z7u0)JfpeUGI+AT4rw^v@Lpy)sKTqGip9Wavn!pEj zDYSi%rX`2x>Hip_MU#a=SUD#Ith{bBSIn=#mx9(iu3=du9jw$Hbo>OuNNIk9ZmzNV zUeD8ao!oq-w0)jlub1Zfm7sI=xyoKSe=VL5_dH=_pVsj^lq|^mjNbKFMsyC^SoJi{>syA== zye;)6HIZK(D%F%aPpZvpMZL*tck5~{bu_ENV3G_XWd7jWA^X=#J@F5$ect<)6l2U< z8hgP3e(hs=wz_JrU-fuBRFAX!=XwJC$EA5kL!@n@47k->r%?a6&GLfzhyL-JjRE?{ z$v}?z3!3R4Eo4&v*ss#BfBabH;j;@67eQ+bGKjn2IYR3PvMD3*Mt<>gH~PBEfWGZx zBzbId90dGtBMp;*3D7%E#2fK-L1aO^&}c6XBag2XA%*rT>M22mGRPmwwfvz3vh8_! zt*9%zM&I}|q{eB!DbRkc&c{HgtDKUpT^Uc@0E^S~eCR2=8a?G)=(a=BQ@((OY4ntN z&{KX}3rn_;^prsIqNjYV8oNO2DYMy^w-I_u2<$k5qTGB4Z3@?Szx0x8W+3!PSEH0X z|0+>Ro{abLJ&JenD@UF;Si&69N>cC+o*PGN z9yvk7GtG}1c}ghk_#5lF`#S-h5}tLOaPUg|HIsDv@<4GyNeFaDnl!&rHxK7G?1nLC3t# zZ+137oRF&>mqKk>#}0bx4#JQ^-6`!i0#aZA?MR_A&uyDlZTbBJv^Cp4wZA_kSAKb9 zIQ}f5Q4RaNJ&v{o+nepW%(gf4M(#iw;D}*|(moW*Dc`{*BZ7t{M9`ZCcK(b$+dRx_^{VnymWAZ?jQ_!_0_8!z=67b+lxhf)s?01 z9bUPD^jiV)m*YPCtJepP2?c|qJ%~8rn7;1953Ugcqq7K%BK;IuGkez%;E}UF3dIV# z-Sq+c2ii_znf%RIh;>-Ga{4R$N;A(3dzt*cnjH+)9fYw=R!jRGKv?agwS{K~Efb)q z=E@bLUuhGbG`;^@ z^V#Qwy->Ei#14Au4#HR{cS`$>8KEqc%+#QT5`=t6|1{UXRYEA>Cd2KG{B(=GLIVBm zArJ=b_#hb=x&d%otdg=IC~&2EgF<0ACSwwRD!}VrE!gfB4)^i_TS%{1Fw5Fi>yKCH z+sD;;!^or7q~up7dI~$GdDoiw!=7Ut`>`pof^K22lJaVAf-B#!lcyUAo$fVB&~3mkzl6@#z&(##kkwlc}XO*?`{Ey=_u;?}ceg)=#!}^q0-?vj;Ia3)bDoh3lF6j zh$zRMv~V3aR5M!@GN8hLNC>!;iI#6#d;m7Tn_vRPHxCqF(8hCO z&~)?bQy?yCrcA+sT|YAS_MSY=C{tGSo`59c&M@|Zrv)CTxpxcsN(k%EuTOaqK05*k zKI&6OYG-q>J(JKgTz4r3i+5ZmGJ6FV-qXO30Sm{rk#L6~6*);dn5H}ExH4teaz6hU z-Mm#|Pr_CSvG>vly-Wn)nz%CoVXIp5rvWSEjLmJY5NCOS(x-7awsIRwL_(^=n%%pp z-6eABmCh0wisW9FNb~am9a>w=0z$J3%$r^ume2I*EfuHCWV8$?) zNMGq7Rd>+wC9>stKEJ1Ku9wJO^=)^iw2i|>kY)a~eO|NATlQkf?(lids;65yuenB6 z?p7=`5SV*AuX#C~CDO_|YXi4^o98tzd9g$1H9NoF!SkALuWS3f=GV(wIj>oJCby>j zf^ismTjw=z?4sXrezktX!o8l?ES%J#^P2rJ?hc*TRIjyiUi0DiFtpasYpSPoQP6qK zLHD&duelHAqs4j6-|qF-)8{q6#!_wdyk}9bRn%wZGPGAei3ixIO*rIE&tbKN;y;K>NVEFAcUIXp1|U zk9r;BPR;;(=;uy`;8#oTBnG*m*bfW>hxK2wr!O%M#B8Z^pgpao0UUe!c@f+@Zz|7* zFzo}=mT~9YNSG6jIYDn}K0-GShedhwDL%h5I^fP3lh>R@>9|<>2I;ZfjW=q8N0AdQ zB9=b=6k@pc?CG2Dzf#BtvhX1S{mE4msCrk|@K!X>R($7(qm!%iL4y{OcO6+c4H0u8 zZN}NtY4KSUIg2)&`5A!fu^=QsOr)11T|uG(CI=0+ekV9wFG@02W}r`XN-|#pXgYE| zbnLDAf6Zve|LY&!um|Y>6?6X(FuHr~JtA0!5_+7^d!8e}Z z0_b#xEWq>zYQTjMw1JB0gi|7JLp&b{voh6zyCkN%+wC zM068!7OaPjH&?eB4x3K+g2O4BBaJs#xAx{*i7eH$u(>zauOG&2Lz8TKbFFYZ#982m z)hqv|%S@j%?z4zeM7U&S?{LYw_F8etn*EOem#l8>lGRO@tUtn#L0h0yUk*2%U+^bf zvN}~9%Of~9UdV``%vhU78-4#y3F)V`l#b)_@+PO}%Ei9E8e=-ftMmhyAIRyh)FvKZ%$SEi}8wGuwf+DBj zuqQC5yUohXR5>h=_nj~pBPihr1R%<6oa;0zI}81-m1gN>s^{7Uj0}EGIz0v|6;-p; zu19sst-eR9ZmIKxeVr%FOu!RLQBZ%ap6nfC?T4oxX?tp&po_M$NZ$Q{WpK}WHq&l3 zurtzU=o%}W#&eHEzmyl$_t!=DIz`VOfg&27@rbFV#+*u^g02$O<455E3)gXTUku+G zW3fffx~)&dMYx#08uxr$yz{yn*NeDn%O$^XgRdll<`*!LRqEcVNbYy@uc( z$bYvcPyZjompx9j@#V$mw~jB5Ox-)a><+h~f-i4d84|wq7F1$I5u&GiHNJ=`0_9P}2x6|ycHt{rp6MZ54F1l3j*lmfL4O7m`_ z%r#LXPGUP%bwhK+x$M4R#98JbPWpXR1z!r{l*S*h{TWBOO%esy~HgmfHVp4Z)Js%YdErgLG~La{+IY)Xu{JnzFIR2%3`A z^TRY*+lZM0T;haXe9`3B*eXM9L}(cO#NyKJP4zem$|t;Fa+B1l<$#N8bnXLA?&S|4 z_bHuQ=;S_-iqS05xz{%n=!Myo^MwJ_z-Cgj)nQJ-uro0Nn@P=9-JF7DDJZa+)NJ+rnf90mvA||hv(*-- z;2t*$Y$i2Zy~F}}nd1+^%LFm0+3J3$+4E(@{TU{;LQQ#InABo5X{pAyIqF=K%1{wwO86`knW#WUdjt*uSHbvEOJ?4;|z@3A#x5fzlXxA^FC^!K*Hm_#o9%x|&@h zFvz~JLylf?00Vjqwk}(n;=OfYPMJS02*WWTE(k+aNL&y;P~w8#O#e&3`Tj}DFjLdAvoM!rM%phP&?1AR3nuC?GF{|3dC>Kz4&YZUe(nO0Sd30~11 zlXdz90Z}_D?YBYad}EdPASe3%fT=Xo?nLe2^x9E7SWP~}bk|`E`y?Wd`BQ? z%#aYZqX8|7JmolHQGu&+rG;YkQXH1B6SboPvq#l;H7abiygpfu@bcI+I zT)c?b5yhJmv7=gLohA`G8aXhp3$UqN&AT2@tg0Xm%kv-|v7_9qrg==b|hf?>4p{D2g`KBVy3hHPWURJN7Oi^ z)4UR<$Iz+VS}2trHfx}tPL+%S@q&kad}U>wLZZdT_f#(r!@v;PgipmuzNZf+q`xn| z1keGx`APfa;ao*XmhX}0rm z`>78Kq-6nrm=GOY&>6bz-KK4#8f@C05zzMD*4y^eZ6`ZzzXxUh=G5YkAL$dZ7S}tt zm~QLZ`8fFQNBczVgKNLNTwNdQ6R`#5yKphx)@6$j{|E5>6N?4Eb^zc1?GUblt;D^= z_X#6f$M+fN*unQRPG|?;pIdA2{f7_9c#L;pcL(tOakIn3_uqJl?++dj629L}m%HKN z`}y*m7XXsbK^XY{bZI|RxBt`deJSyM7V-UNOZGNugeJ%0f&&UE=nfbB5{+{3DbXWB04YYEO3gbK#iHg z6|{tDV(O;r1;7!Vs-e1wX%>w`5n@2GCXhIDCE`;ru-(8*kDW&(zI>~ct|nNq?O&UR z_u5kKN8^I1k_(8m1&tHG5RES%yN^^~o`m;mVtB8e(FG|$|zUp&b~5Q(#V=f&dWeXHTRlHeWM zJ0huQbVl@w5vLW79*0ICoJWIH7-8X_2*DBMsDsfXUeJ6*1A|J*98CZ~%1AZi~l4K=T zf>bFfl+Rqs>bL52KGXS@*t6#Z5F_!=`a_8EyQzmu z@Q|P-VU~|WjBuHd7^$*~WaY?$T7?f?x1N$?p+pwV%R)rlYK$&`4&nE~o6(DVZUwH& zl^JNIj*o4X55iM&5lC=p_7n-V$i28R+kESM5u zls$E4mQW%!slIgRg9qz9C?y{aBhVxD_k7}a=!vNmYqgy}s%>iABXOgA8n zZNP19XbdLp{oLn3KaIhBwfZ1UV@TkyuM&mE5PGBHXrVC(Xh>tE_R};*nWixan3~ZT zV;>b-LEyks^E9o%9|5#NyhuM{uAXIw0{i_4O=t9doNY-?T&r7xe+-~czM~Yv7cto2 zpNLCvEyl%kTNh~z+unS9iir?Z0%1ZnmSej2^K_n>M@*m};Xh_8m#}wvEpG^RVVH~@ zy0D+@n1>ZkGS*?FTKv{w$OakE(l`uF8|?5O!Ny@IF~(sB$7oW*7kT?BhKk@hV}wQW zo$Z34phBH`RI9@L)b*86tTn-1_?h{qb&ts1Nmxo7v3nq`#d_YWjo38C2(Q7rf`W-l z_r3{#C3qI>@iwXYYcvf}7U-!1fVy4BpARh}4Y3uQ9JRHfSS&1=_zsSt80_pC@Knrn zIL2abdBQCHgfN8r5z_u7-Cjp!(PtVqX)`u!{iq}v-NJQTA^uGl5Rb*S7c2f5AP}*p zng<650fFrm`6!N0kUWet3n>8y5pgClK)4UP6y^Z`Kx{Md^ir zgeB;)7mjuTU*O9|madd!DN4#{j0pd}0JG`UnB5vt9HduFUGG5*YVPwmwflVfsjI=_ zs8z?5&>k%Vv`0S;Bx|)+J&V*x&V|jj>J#P#D+w~et7+y-vB7cc1Ta=I{UxOcK3^Ww zA0Q3D$W9GlWD=$FnBD#SfKf6Y*`I3$N&=1xN`l6-L`e`);V20_wbT)$*HT4LA@mX6 zr4wb)Px6=7DRkETx zRG-+{eVP4NAlP6$bRd>6cJ;!cxW>@=t zr`cr}+fCj-0!=Qqvn{*HKf9nwKA&PDhBvCC?IvB=D|jGaCAaAe2W*?$Z+Fa1kA zvj0F&^3vbh+4FD2%zbNT*D#xJ_hM%}w}j7KW0$>PH|fQmUeMW=x*F#%&}E#ud;ynV zdW5=ACu-HXNYr`l_A~9iKkkISOOag<@(v&1Lc8F(2wUPmRtnCvpV$Mc&Uz2>YSnEY zL)?F=6c4i7{W}63Ds~8M8#?T17Yty57WHElzS>vtFM`XhoX?@sF6|knaI^qGgm!74 zz1SzB-|{{YN8n=mMBF{Nc;__w%=gtF{riDH(FQGx zotYcT_^)wJLX`1CD>3Z}V%VKX1n$;2G^Ri}R8hWrttdg)z6=m(G>1*PwE^4t9kUt5p?z=}7>!dsV?7im*7GgG{w<5bF9>@R2MKE$(lBU_63m zZ9DNC_3a?tEJHmFu|K4RO5<(8EiZ8Y_;4em;)JCfC~OTr{ForbOTiIi=2YN zEbyz~uXGAZ2cW>OfkP#gF8%7|An9KsdbhbLmX_kL5`dcdnKx<#zVN~!R&er%X zM{PE#4D~uv0V?=!2G~zX`xQ?pMIW{b{tc&Sz;2w}$`px{B2I-al6s4U}dor&sH;>qM}9=`Bm^o>?4So9PwDz2~xoq&&D>n?&UraH{oJ> z3GQXMc;~eS*EU>@=J$T9b-kl-XZZ-+*?yAwoojyIX70;O{_E!Vm*&35F?aBo3lan@rGaeO{=1odX-bRmg+fuzh)TdhBeKw|gBdk+KxMoHpTH(xN zEboO;{F(b>YSE!7RimOHDXJ2G7hJH5)+PGcyUDMmd4IFK_3YSM`C8&W{ExoIxN`Re zJ8}ukrJG`&zmC9~IGF}o3Fst3i?uF@Bze%tq69mBHYAa;>i9k);hf+KJreeqB$xr< zh*e(q9ai*F8|q`ocfYL`ecs9HwT4;MJEAk;1ofgd(Z_X*URt@ha%K)Sn%!XhNfr;u zAp&`WCv7Aq&3jQ4f{*3)az17|ZL%^jWUl?UpxI76m3K zjWR#WdtQ{)Gzv%G&ajFmMp;FtT19iv{}_CoQTSHttS*&l-mYuXl1D}5?vLQuYw8CE z&s+TqY00nWA|M`$_OVVGwn4XFb0C z0N3N7oR;g+!lG0gJGZtTBQHcNNVj8!@);ecBfKXffP0cY_&6P>_@=wD$^P2qdI{I) z#D|>aI#8{urB5lMN^ws`b% zA4=4`@6)yNs3ba8@=k&X34WV02+}TojpG^IVmzb2Z+AR*Mg)x~^6)=zJa_kRF+X3m zF&?bH-79mrio42q8Z_YWMZPZMfgf)`F<__!3;wyRqAn1UVy-5-)YntVSp7Ni?FS#& ze7qlg-0pbCHFW{(bjCX@p7YoCc!&Lo+g|2I9|b8Tz~0<{=Dyf z#R1L7^T8YKj;CMnc&7Y`Hs{smjRa ziv_s#^~J=)Unx<^+{2r&@xutbwBt$&Ed~S3ptU$2q!gmfg1n5cycYR$0@TBk|Y0^7QX@d3G%9efd#+CD%k}!!VfSg!#X*x z**e)J>*P405j>Bh!i!jFuX3SPc^-#7qvvMiEk)ixb>7YR2C%kEU#}j)c_!#4($P6M zDI^|eA_1gw9M>xx*W8@ut%PRryf{D_p7#R|;KXeUbjJ>S)~=rE)GPSmasV&rk>cfH z+Ly}*Ri5?ecl@r^+*WqC#lXOsr2ezy+u>XZ=IdR2 zsWSELufKzR0KljN#8l;q)Rq0aa zH2w}bXKlLI16QoRr_q!3itU>;(BF~etqRQ_YXSSvNTv|+$bn?iyznIIO)teaPaT3~ z(Aa~tbXLkMJ@_==@MGad_qw@=>D>eG11;=icqrNJvZ6;I;fw5#QU>%skO94|@VW4psi9;FbldU``8;}?Q@4^10_IumhP?Q(o zlNFzzdS=0N_V(^|9gZ)j^dfG}uzZss>&6bp%Q4mE!;!wxy|C9_I#BQLJGym+Yu7o* z!gK2nBOr-`Hkg~d1XWfsP2rqdJpsj=_Qcd+qK$(T_K&5Ci{?%2Xz^i8$Mw#KD-UuUST9B#&+8%bIqH%HyQLk6TLRvQeNiKX;R z_j;?$0cY3yohH>eOCZ%<2vHde&-Vb|UqU=1_*LZVLhmh$&(gTHl!)0Ixo@70Td8yr z9`Gkk16F7n(9O|iz}N@ClLqUaO3;Ie&8YZBq2h5WY+jxgHodr=UwkW2*6%TZ=8&6s z0ey=cBeO>JUKi0|0|dh(^9Jpdxdih7gBvt7pHQgB>?rdIbNC6ZimRv0m~qM9rp%CO z#FozjhJ$d}=Uc)z2mq&x@f$fEh>uzzT}ZsEYBdOlXLNvbAO!6;v-T#?lb8>(vW2j) zBv)K~818VIx$Iv!p|l?kDfNC1sY1(D1shDucT=p`7IE>b#3HqS4Y=NtHk&)n|tt1cAy*I?iuf*zCLEvxdBU|prl`9Ox&g{@zsW9tXl z?T1B{4U0hSCjl05d2_c+uG6qcas4k`$88Wym^%FIvUoVIAQ@V_FA0bShW_)~N9r?x z?kz7geZF#})Wn-$@#c#xDF$LK(*Dtk?yo@Xn4y*Y=y5-Zj~NLI5{KUqEC>JseWlxf z+h8o_s1$ti0-DT~qTep*jwc%MO}-j*s7^bvxmJJR1k4pC!*<~Y51__oE)!cv{dS+$ z>NEY!1zM}mjvhuj4O)GqZLL0%_G4cE9=gyhPMTLgH|GZ~CD_byU{F%68zfr&`?dvW z^%IS=8d}W_Bsj)`PE;HBht{?)f6~E?UBy)wVQN^)LcAN+O;X#tpzgP_W$1+FI2HgS zC#l1?L5G@+@zlLyN;A}crdgu;;CyI%%bjM8UF`nmUjaq)Qm0^>Q}F0S6wG%Ds+@vP zI%5P=oPwvFg7a9A<`mrN6m0B-f}u{q9H$_K1qV6>m$E=!X6vVTnFhYhk6ea$b4!hM znq2_9u(~guf+0?`A3w3@fJX7US#PJ=q9(l2GN<6@&i2#JVzYccZIM&@K1*fBm;Hfe zxlX}qr(h5ZCOHL5rZ40gV38 zX!h&!oziz%DpPRxMNsbN;^}4T70CqCQy`Cwd?k-NT8=(PUU0omTWpn~E<+9NF3wUn zJ5Ngg5aUpIh;|oescBBpjayMVKsAnkkjE?X?4Dw>aw}-i<-p37<)Bf240t4|q2|8E*nf-$_v)?egkCpt{>`2H_>wBencYukn2Y%QU!0lfG zj>`6K{Dw-$FL*Z|nmz>QpCIs%~dry#w5K%k;7Rp^X16h8iAE#-^^uK{BtC;5YbE_Ao+f09%;j$|N zgTjF6=SQ8|vG~^d3#QkoBbI7r8p}yD(^xWwnZ`O~*JU8oYB2H_a7={`m$&>)Gt(XB zhCe=+q|SayQ)-oglv-H`l+u0D{GD&5c{sf5h0?)4&;iBUpF+|p#)ugpt=;%0w)b_L z9nK12Oi|M1>88tD>@IVJS_i|a*zXj5n{$PFMx}u8s~Bx;4&G&B}m)V9Jovl0xnvfnC|fl6A57K z^NeKoB0qB76=4!}J|6_Pl zB3*9!LU(zf-DUXjX0&uT4;{88;JO%0WxBwdULUs)Z<>p;mQFQL#ujBkr%`FE-?1|~ zD#E&XPS_%>Noo8Xw||b85D`|<3-Nivn2|%pVhlx;#j3U(>%LzdIo8{?9g$iWvPS5a{PqG6u)_4 zzT`azhMDKMW*$=2xl3Bnbx|k0Q#dZ(&HgRve^E-5t3H|{3b)z>Iw*Pti_w{-Hjm`I zEvkyDs}j$nTE~zj2d|ZlnT-jE9deDXjX9A+5pCQr+H-4(+HEtCiFc64XY`ZTgLKr$ z)EW@X0(0Q)y$gvViq!fM6vi~epF*F96pzOLIXphTi9eziOuPccaBjYSHrBy=@Xtu{ z?w2VV+~x;K;<7^^hJLfS!H)kdh(NPNdF~K8SS1}ae5wIM$xh)=SZUrr(Z#qak)_;z4_Prk(7-#WexHYN^K zlm9Cd{;!6s32U7eNkI%?Gm9ibWQuY9TL}y6a6ceu!T*J{zO+RV*^{rSWK6@p%OJgy ziSHyF-~w`hsj!S~!2xDizPZ>2THDK%FY+i_&?c`J4iH{2gaiD;;Q)8}Il!@6-}`~O z7}8Cf1Kh06#xH+-8=C_hMhPf4xBq2Z;Q-xg1h>A6HaM`Hu*7nrg^rhVCfsr}`>W9S zWj$M10~PRE!ObWiFOh@G=4X^0X~>^K0Ml};EYDKCAE#WZ_hW~3SJOP)jt_mLcT@kMy#!CX!cfq*Yu*Zl(l>mE;{ukMhBP4r_joIA&f1*7` zK_iAkxIv;NTir6*9?pN&9^*^n<*OBY3{T8Hg1O5B7go8Hqf zt-}(i^QHOUO><4**y5g0D4hP%ek|G(q}{uZ0cqjeV^p8P_xWRsyiYhl_Gal|H9Fvk zde|efWm-l6)d72qlcd9Gro)O}@`~ZxV|;r$U+@sq-4&+0uk0(L@9PZRR!D4x^UbV>osgYo~?H#4a7q`FxAWEo>&XZF`I! z?{tKZ{cWS3-D=JQG|adKTDi33Uzf#4XqybN5%5OdFu}&JR1r#~Yq59qBFa3(&fe8o zprvVr0abwID-g|gk*74RXnBp)*9)MpsK=MERO}yFCRjuKbykA(b?hHuJMleR1}Q)S zEh#%)cR0kc@FygC zEwW>_C1uuBno?rwkZHuOSj*t)dvAad1GUz_8w_@QyaxzzOoS(#D~r5-V}3}G=KB0Fe!kE(%h$;hokY? zUph!b2Sm6fh;J=IT}J{N75G98A-vG*Cv!f21E#|M4u=F-EFG*u2OLp1dqfTiP$DBT zBmlN-yHh+=I=sSkxV(!d0g9_U`5@jpZj$-cNqoTrO?OjGcZLL5Qp}wYV8xmj!T@iV z9;@HbYoNo7@p;m`h|TwA)Y-t1K{(WJoknvO?OPVEBkl?m4mlzn!FROhjGZtsWdf*( za^gjAGANlIq%MC$c1xzIm3$_2TM-AiGnM+h&bYFZSdb5g_#TRlgfL)0M z1CSm;PJt4PQ=fpaZ9EgTjVHv1rYc0yo6>Ne#dl|XzSMt9{jy8M?rit0O~E8R|-m^Og@9B7&F21JvFL39CrFoQuz4JLBz$>Ap9S)zN~;fITH07 zXA1$qFX2tk$47;Pt>uY|PXL*tZ_H;yIaR^xu(il`Y%TDaA}a~LJ3+6d6v3D=HXbfFLcq!vXBl|3 z0;0L}SQP;?JR1$mr*hD6(Dx4ge1r47A+x?CSMV`crbfnCeZexqSPY~Q$anzUE|Q;4 z8KaT0D`5MlH-@nLt>d}-=T~V+ni$wTHiYIqr1=@9d4~b<#za0nLN^Zw^%Y46ufDEP zU$5W01#4K1h_NFa{>jqg)uzXldrXfGhp%Lc3^J_=VT!&vj_-J|=`dS&=&7yp)Zoi? zJZAJ#>FzC{q`l%U!KwhDnX5JKYGwr7>VX6so(Ay0mV>#91p@zB{O{!O`QKwXoo~HH zbj5QB;V5yN@xL$ZcJ#PCUh5G5`;wmAz3{(5{(cz8Gw8hE4Wn)RQ~{_BpSfw?FVehq zu)^6YRybKeO|@W!T|iT@gaH}!ZrjWxCsyzjO715ItWPBjc!eX|3V6TkD?kW2mEa0E zl@P1Wc=so$Bc(~Iw`)93CZv>$Ls_T*^~nTzUOMzTJR-OpUHcK6_Gi-(d!7PzVDMR{ zdM?M{GawAuziNc$u(bUa3rib)<1K7sP#JL7Bq*0OW6P8;@)rWXj-aw3n*&kV0r=Gt zm35L_C}!#YBg6m7tyuMBs-9q+H1Aeoa7I}RVKiruXErziT7eWGZwQ?paOMyGE@!|X zu-SQyMC$IbK&a?zeqLkGT>HF6=XuU~ja1*_cplhD1*O*F#0J)#&~rvrjIB>)bP14- zG6y!^QpX+??tzUhM{x`HtkgIsi1=3_0MsSY{Eb(2^YTEHRT4t;3DW#l-P}I!VPgn< z^>(?V80p|_bU=1%=}vpQlVSz$Bxk z{&~X!f|6zy$Qdp5&rhOW$MnzJz%cps&u`#YOa1e5GF9M=+S5P3mS=;Jzg+*E1S}rN?m`QXA$Ze%dwu#`KT(@55#B zr8GKP_+1u74&KOf&#>tP+W4k=KZFYl@e7a+vGD3jiBv=Ln*G<+@QV64g?8@PlC-%2~}@P>!xagIKzD zhUqlR)cygh1hq5Njk`Sx_9=H{RxW>bF!DRiTM)}^*1L3&-F?2l zdtu?4cQ4))`0WutT#Bm|2)$zJ7&NK`N<0R$_DlIAO5bu6o5 z^%kN6VS_G-ke9(B-6X4Nt>u;eLICNX#StU)TOlA_ly!m>OecI;2%X$5oovSD#YkY` zN4c@##kYpg`~qoSjON4&pL{1+!K11?Tk-HELN>8SGp5qe#uO=?ChIZTu{UgjG9!dh ztvgKUzZVSsr$+^~5eUi*jLUfawtLJ8p~vf_$1>C7&-MB}^U+}rUvw*9j4yh!{(_aE zz39Qx>$#@a2XwCz>ZGcGU2v?L_|;=g4~6($e<)x6cOXoD(Q+AkHVG$a)Ld2|#VD#s+jF<|9rfx&7T!T3Ah_4PkX6 zToV9g%&{o2hDRXET!MT8+4MK?Ja{3@UgVW0JMtDS@eY=^Ai4@h_;P$c24ujco1*y) z{1zoarcn~OZ6$%*C!YY&56uMDU1w( zA9~(7iS(EALkTe8BOa{bL;(E-+T)Ta4B&~DU!{4X_f86vC;Fs6H&LHwG^pz^PjtUD zfA?R~Je*BDNjkV49T59{_Vs_x6ZMoH-5gT8Jkh4d^d8J3v|PB3tbh#_&0Y-Vhhl^H zp<2xk#c6)%%oA*W$c1jS-4LBtz)xBZ0*>V)Gp*?AEQcGaG>l7);fC(njOFc1uT&e3 z6>g|j)9?y3d?T(1Q*FUDQcbCcq}n{~63h`XOJ zTX8wTW%5=ldbIZT;vvTcpMkjC1t(;ub;lT~K(XY`B$ zu2+bdl@O=%-vW>dsYBpKu`w$8#(e?a(|nI|Qb2Uq;^s<=9wEP}SNC%m>Au-fFL8_n zfEj7YJ7&#G^?qh8dLtTc?q?khhtgIBO8GC}T2u*Zlxnq}%ebI&=1G<>??`LWx3%!# z*jVqb*dLYTBcHhyOj0Ln;cl^F*&pUXM_S2iqHm%Hj{4P2G4IC!3Q(rkQ_Ybr(OBP^ zLSv2qvH*N+s%!&%|G+2Y*eD!mPxWq5msNC$IJ2tj$#_3sB$s}L%|~i}fM@G=ed9l` z<=e;Ad4v0?AKm#?IIeX(_Xv(_y$`ZpT8jl+wi-lbCSe~~b>Rk_PXvglSp+Zy@B{$? zFjy^eY*{$K1X^NAK3|)pq@meR+^zt1OFzQFp1{fI!6umPV?sb$?RId7bg7e5@ z<2Y%4i)mgg!?z!w7sBKFN&B;O`z5vZ3>acsmRZMArhT14&wc?n%5VwGcL%& z``L}XFHDT)_0+2GZQto6d2IUAFL#<2 zA3*PXdi4JddS?nu`5*>smEQ4f2#wyk67@Pp?`#7b3>iD z3q4U=^bTn5KziqOxIUx|`0HcBq<6k^afuHEki$M7-(h;^X=(oDqXtYs_ve5a5fZiw zCZ^~fX6vPN^b zc9>7P)(y(I5+)5bARM==%->A-e?k51fqRDxNn$#lZ^s93P0LoS-F?8Nv#_NS<@2ehv<*2QI<95ZWIq?Z@f%tuDdoNtXA% z_-Ya+3)gWGwZh*8%U71g=c}fsiu_oxFULL&csZmNQn1V8ZSF1yVY>nS(lGIHTG}FC zupk28EqcEKm%hd68>5`>KrRa{pHISnU-2fsJoN_485tanp%W`$eQSLI>%$EolSxQM zA-MzIEoZ$?JfXXRjGo>25V*(Zli1=FEARo_h0C+xlewyZVca`Qu-^h^q`xH7t6Bmg*ywxTEX(pTT3+7hOzo|v|q zKYea?SE`GcX3?5P6gd&*nG4?z(FG0NfWf^_XG*R68_*8|&nw=1F*glC7)D?34`96z zy<-1GzxJ3t*t%?Oiucw<)`@*1QoFp-^f_L)mX(tWEc8&{H!XR21`}OUlRq_O(Mu2* zD|+$G_`2*O7VYoIvD>Hm^4#_NK~03vQw1MK7aWPXII$ z$bd+r_ZyvooV=pZSzLn<6S72u}`rW*nlkUktU%d}fNkT^C9U99Ma zPrdl<@0#HLeD-ioc8NV%__CaAH7k}vgTRkvK5YE~sf(&y;F0+O>w8*FuYphCHH@*7RfPYDLk5RW z_#9AJSy*$9vy$K;SD+yvH|U%SB3fdKHb=Q;W%+$Cwy!Fl^2 zw^9wkvo{!qT3uGV1C44@MSWMWAs44Qtj>Uf0iHcAY#SX7dn;QE zNEOeXbq|IwFiPz#y^$U0{ z$$0f1zLtSd-yp(^`6BA0Tbxm7c(?>LEw7JomCWO*ckm}*HUKbTHg1718?RKW?qYxZ zsFN|Mx|1PnkvCnSv#V9N82Ge|v$M19?Blv1yN8{9j-8$TFJ%8D9#w$OPPMZ?e;U~z z+u4Kc>e-OYB{hb-eaYIq7wZm_f0+D(cI z;ed3Uo&A(udmwA4+1Yp6wd-%j1M>NRBkZy~yUExm(WJkfeTki2{RFZ*+u3K?*(uDf z|J}^xP&<2LH)LL zqEbD8L|vZUzVd0)_mMZD?^5=Cu3h$sUH02z+n4A`c3C0IIH6;E;<=$zzZ-7kC0yNf^_ad918^OWi|MwmeE?Q2LHXZsP20=$%CUVTZo~B~E~eYM z79{qK7>Mh5Tuh&a>nw9;`XXG%9}iH5i@z_%o%Lp!-#*;g{t@&0CG-0obKh?ABTvxv z4mS6pxU;{p=04Trv+q+)8}`eK_2!v+Oy6nJPnr9A+&{zBeW99iHc zs{j7s@+Z^(9VUNrL{lXAlSy}m#Gjnf#Q6$~KY8U3KIdm(BycPP zAa%e?kg_wp1amAeR0qC%R97c{Kvp996(6f;>VY-XK5n5Nq)x^cqfQ&n1Bd!kE9vKkWDY_uAm9fCL@N6Lh(dcPPK)JMtH+SselZ=B6g^i7vQ8^A|!P zdhd538;Tfq9nJW*(JKxJU@LA)aFearBy2?lt0oKQMYdu!A7`@_EHi8c18Cc9#a$V8 z`&3_!uob%uTk$xFH@X8(FICk?!VX~Q22OjDxSq#f>Ui)Q2bQ@9X`fcDa&GU8u{LmN z#^GRb5c{x6omoQmf!sZsfICRIchNfcRF4OX&#Tq#3dtdF0;6~!JKPm2vckYg9 zf9Q2Tg@03?J#KtIzMHypAL81;=`vGG3V%H)e3?R2k<3r9 z7R}EBjen1(@k=@61g{{iB2OtKFlAUt;AcJMysu1x9!wo@E0(Q8>z5f?zXFx2r80;? zJWvEOULT21B)5Wo%wlrLl1$zldcQ(dJkEDnVj$+MjB)>J2hl6 zlPHzP{OHG?{ZTS0CJ_>3n_^^~b{;mXBXTJ@hbx{`v@xNY-C=vnK16ChG~lnvwOD z>Q!luReTdjpE^qu>J_R?XP2qtdVsz=-p>Aqot+6WSKWbj_6>ISKM-}eu8W<0nVsE} z+23jEw?d`a*^3@T_Iq~rFgtrsDY9R&vkzr9r+CRcOmPDiYh8(5*4b{-pG~}WcKt)9 z$#Zi-)=#msw=kP7@6Y}xYEQPaSKGDwp|&RLPqxb*w43BTfF?)T*|*r)Ki-e*zIOHu zJNrszBU&RLSD_}^**kv4qLQas@5Y>S7f)ZLnIgJJL3lQUCK$j%r1M&E{nh3ChJGrWzVvVQb zE>*vthhInAm2R~=IPZFNE@XW-yDY~pyEzYKLe~FVll6Z<-;H$|%XNCec1_mvhau}> z!K>cw&Zoy5{4MEvW-MDO3q5A-0c^{hINcJ82t(TY5(yFR)-AvIhAnkgj%j;Sz;nL< zx+6Q$?70`}){jVQKIKHTeY5x9(%=Gx|nUp!^kFukGb3J+*H{4z4?J zG2Pbnx6}GY^u*O47t`^$PB3?-N8ySZ-Z$bfT>O0!?yQ$?eqW9|+s`q-Z#Tc6F!$F@ z{wL=54s-8$y6*1?b03a7`(fYvnKt~*i_aZr>M?zlN#AJh58%EW*JtMUujal#=IR(+ z$+*~VBJQN`gU&}Hhb{@eNE=#ft$ZG6F9KIu^fRBQ zM6YmnLav?e9FXo3knS3gjtoe53rKf2X&|V?)Io1rT{a+8do0fXZG=8yR8*QbDK&W; zHE7#Xy+72aTHbv&rg|f+Q%1OE(okgPF_!njDE`d-F}3K>l&VotkOU(Vq4B1$XkB6; z^i6{`y|dL;jMcH+;U16$&zn1_EPdIWNhqi{39ZtDjg4I zaI{NDn~wvpu?Kbu$caVrZZ7_!(FsBWj)v5Ax*Gwt#D~Pl!s+}CW@dWk$fD_4Q}O5W zs?k#s`~1HVpZ>)`L{&9ZnS3IEFnG>KV$Qt?M4tTG|5$u_;s9eOYTy3f`t9+^?K_?; z9E-g$#+AD-LM8nJcEU|DUv6)?euWslWns(p3weC3>U6M}^ZvyPFo&z|qyf$Xybw8q zAuaj!+-_2|k9EqpHBq^+*`2#4Dz)fzLYhu>=Qs-!`@YA$y(16_PyYkQ5>Yg@Em+Xna$g5;n0C@<=hrV{-6F45gd+926q80f3nZeIr{wF?vWzh3wJ{sDX z4>v-dX%+KV^En?4`a}34=RL~#z#%$-CA=(PlvCR*!9 zm{}T|?VqK0IZGojOF#=eyiPYMm?byE7CQehUqyEZ&KJkK9&wmWjo|O+AMc65;~n14 zcw_#w@#1|k6JSnl`;`V*4~Su!H}ap|jF7|w#JLr&tAW$`0@;wJm2+ydz=D#71g;FS zOmUp4W3zcX>2Qg~O)ff$*M5)@PkXxHifMV=l- zhV!R9ZF0hIZ%j^b@`Y}i0!>b2{ldRy8}^1*cePiHK5yRmKYG66mt*k#Td_9;gcz3l zP_Vrr0Jq42=f=CuX-lSjk>{aaX!eHP%=wDxkmLC64KKtmzrA5MbH2huSr1lUd*{v1 zJN3V2Z&-b_-Yhko2uRif&sQ|FH+=duZEu(x8K%AAT*Y1U+&tMe9kGpif=bwNMXm2?Gh5y{%@JZ>h7B&y<+Z$e!ORRNYd^_hWn(ea}_-m=$qs;yT8U@o1Xb5j;DX%~@jm1BF#{=AfhzDhy$H)$Z;TdTY+j)$I9r!lt z1)O(oJHWi&fbXj9aEa&lgZ2@A`JKmfGXdt;NiJ+%^NcX^)=6d; z(#*u1an5VSeGHC^_|lKD&--?4z7S<{)L^{>MJ1I;7%b=tvSC42*-)33(9CyVNC}G} zJ1Q4!)qx|JkzaG!C*PpAUB_)3U;m2jf4g4Vk0V_aVCRdOY!}%rmJU{-1Ma(S&zgOg z2?D^v!tVH))S=Sh6&z6;=RO%|7q)speY>vJ+m7~bFrnaH3gq@3;tmPUz0gb8GIQgD z&o>48MZWa+eIUqPXXztA;sgQ7^yBQz|irJ!LZ3 zGIfj$wzS1y4|fK8{oV%~#bNnkKBa?X40bhb>YTxr;hE+1<3Q^*PbK6{^G9maAoap0 zoTUmtmU$?HVU^EQiaNk3Id6a*7$uDV886`71mIbczq%67>=a!vk*h`1iEu?y z@QxMjS(~5KCA#2r7Qje)Q1l9T0)?R=RXNoCVB%L-AYDk?PZ-hV)yLu6vQ%|_hsrv7 zhL#%9E2I$y3uVhe(JRsmK@GcMz*I~eY%vI^RW!aBQCoTZ2Sw_&x1kMOA(c>J=sWKG zKQI);$-+>Yq8D#P!oMP{BJHxZNY3y_yShVrn2%vZyT&4Nimw<+@Vao*FgjMu$-74s z`bs6UpbR%`N;fLd>dv<$pZR8mZih@5VSAR8>O9s}XMIf83TjaP__P*3_z4I+6IlXk z|9zBlTGV08K)}$kdRjHv<-vCWi(r3{aa76sYFNGUCsBvj*iTPf1fl~^XCd;ovd)_y zp-Y%d_Iu-prd6@Xf%lMq>qYr{4qyX{c5e(Sf;#0(Q?jjDNrT#elGKG&rRb>cddS9Q zO0jCzd)&r|U*vPP`;o*d&j}ccj+5ucI)lVdtF?`3bc3MY1Z*bfEmn1*K%-H5Cfy0X zB+F)$viUWiWWNM{L5E3R2@6V)PX=W2`FyJPEj6aU;Gb|kLoE1=SY$c&K9E>AhssWu4rb~O z#w)=>9dPs5^eLY|49$sz7CtFR$Z_)s+QUI=z#Hx3v~ub0o9pm8Se2ESBg}0zZtA41 zSe5ota3Syk=q@{;mAE5lU}a#Y$yaHnECQ>m&68p1wVb^+L~!MBA<6c5b_X%rkFbJcMIz0woaf%wj-(s#2MWF@MfLHqhKo*&=Y@_~TUWeav16z9RZ zCUS#(0Dce4>@&M$6tGl6Ip2~M*7=s!#0Zh+&&KWmgo<7fc`lMLNj74HW`|w!F=zC@ zBIhkTa^9ulFxeS~4dT|QF`SV(?=q6|6eCB_hhB!^XekM^>cBNr9>N-$_A!^_Lj*|N z68ZpDN2CZtq=QRz2OVdqzWa#JANc=~_a<;vRofpprYLF#r6gu5KCvhpC@V24FUi$& zldF`HRBAM6R1TD4G^i+&+^)B1uy{Rv@!rd#nO>!6nV1HcrZi(VV3UVvptQs${@?G~ z`y9?iNaW}H|KI!k{dhS0?)mJ!_S$Q&y#`(U&E%Fp zbnvUb-($fe_*G5tm@l3u6t9PRRA#gDkLFfsjGIAjP&P2SsAB=IW=bI`919ABI{R{?N5Q zSaf;;P@;I@g#VHsm6yJ1%(4rUY|-YK$YRsx`~hT}j+c2BMDtz^Lq^O2=(GgosuP4) ztz@DCw!3EN&H^9{1ZBo1R~h~;Lgmwifq%Q4xaGW~2&5D<97JkC?zRq6XTXhf2MdDM zV2=!{OM!*2DTy$lB+&GjDBM^?@SJ>esL`=!9qf3$BflWP*caLd(re!`vKRm+pyQXR z@9<`t-*1FDP_jNT!6Les?Bxz@$nPxcXK~YsVe1Qyq<>J*t=tTstHSsK zD}(coo&8KPqy+z^j`h)}1qT-4OD;oS%%iY18w)E6@Xelt#_+tqh$M-gU9te?RayF_ zdWs5Vim*R}GSOi3CJ$GBWm3Y%F|iQ9Y#qm}4cItlJ%SdFc^P3F#{}}wLkF5^#xF1P z9AIA{>Es_0VPC+Ve+IAawS57pMIA7*&DWsgVuLTpK+S_7*~_gCI0rjDnGl}i71B|o zdVUL|I;e$FoqJSc32Hm#uD#cN#A&!ApCA^#*1#9{*pac*p zHW&mxVhie4->@`(xCV2iYIRerXHv^2pZ?c!AIFdb!O3iJ#o!6=0A9Tk8tY-&tS(fga%w7kmSF z0K9C?x8bEnCBkS5@X})gg3}NNy!2R&Fpj*330}ya+6^5MqBc!XVV95-u7%nFF1QW! zfS#H;NWn|KpcIQ9%4`Epd2~Ag=EG~-4KUY81%Fi)9Qtiwj1<3I6<6@0ZUeVlw}GSM zv1CbA2u=0Hq}E}k>2#>@O%&;?OB3mHkLOStsPXRzU)2G-d$;qzD2oPCgp=rG(3DK?_{F6c7U{i4qZA=1>AdP{7wkE|d=#v$Jt9=yOW=>Rv<{PC$)xVCO;iJOB z7cWF9Qu~mjx+5k{2~s>YMX^bNoYIUy8oD@%G9Y3g^^w4t9> zdOj;+8n|U-p+VX!{3MVg;z9@PDgsXGK%i}0?9{WL3pa6?xF67HmU(LyEV`IOf6!Y& za!joG^Co*QxWBJ;bYJ*h&}KluopOxq1{2pSq03Bj7$|n<^t5OnrU(kGCX}ZnUuq6L zeB*7~I?2a~_<#_7xb^a-mMRQ07(PH0VO3^&{`Os?(qleG>oFVto}j>7;HsL-|E2XB z#<<98hhD>?*D;qM?HW@eL}4f1)@!I_fh&#_HGm?9!{5M~4Fu8{?uc+Q^f(aKY5)vc z%?zI0q}L$rRsqd8wU}e>7cJ(H%$Bs6Yk4OF053C7y%QqkPx4ojmUBeyUsZCo`Rr`s z188=p&PKjPR`f%RrV{GiV_&xnrTqFUkXTy(QrsE5Qq8c+ngH z9Z_l4T|pqnYLAvBk1f6wHYMgnQhV*4@^2f3rN$qxAtNfvH`gJSD>&YKfuV()h+Vi( zUNL!N!M|tq3^Awo4EY5Q!(lTZXOD+(K5=-G@m!;S--b8y-K&2Wr7QoG~Ud2o_>$l@w4>%P94v>Q*~X;&xie3q4P2Pq7HA-@7;L+f#*csf0uq=hW89S z+4}drcoXrG{0O$UGCd{-`*#k&&AES@ob>;UeV->@kxlgw^k=V2RXaL%SWpF_QS=f<& z#9AVwAo{TrQY+Hz>&J$x!{aU%hHic#O{Y}~7k)89R z*+hQfjogzSvEK4jwTyCwEqKT zSt{Q`a42DA2)?7P3ykql(-w3B)3w6v3Fxz>FnfQoRfnZ8ySMI0Z{E-0c^e=b<$=O1 z@Bz%u;+~&YcoapL3iVLpQe3Kz_u^8dW`Q>zY>6=`LrwB9@2qs|T z3U?WoS2?s!@w*aF6&~=vA>$0+m}tiQa1BYRhE}w0w@zxNb=v^a&zj!_-~<|eoa9D_ zLB1RyFfqyqjEw_HJf~-}|H6nS`#M!WKN@mw&9hYHoo2M6QVtZ`5CblEj z1{2$*7$&7eOyfc3cOgP-OW_OuN+wPCt9h&)YAQc25sLXY46?TSgT~a&iHjP+FviF( z{dyY|elH@o!A^`IIm545kU;{Aq9}tikPCLd7<)Zqfw>Ly%8{UENG|gd!Z42?uW0sw zVQU6gV*pG;^|FNF-_{A1$zZr1VJvlGDt#ni(868ET-_7waInoUu4C7f z#%1wTxqBgEC2!d?hP&(Xm{MS1P)J0?&f^+CBHesc%5wm2Krd=XiCQne&aV>;^XNB0 zh@NUE+-xVrzl?-lcEV+L!mMeaLw}Wf4p!x|6TU(ZYd^CSPP7vyGhwrxaFm_!?zKoL zu@iopW{vrci5T;GjJY-d#D+d#s?5{3*Pz&~cClCOVvAu%p*F=%SZSB&%MzpQgr#yQ?XVhcrVL8${X^)5TL<~&P>_;|bh>2~{PzJ_ier4wA{3%&8PQPhE1OOjnnHz@im zMdJ7E)D!H~^Pn}aREbNKD)9?DfMWGF9R6<*N!aeW<7!pnKp9rIc_;2daLcj%N%FN+ z)MPnJ1R`fcp23RSj(wZuS;kT+4g<0@N2&7nsPYokPnRF+X#XBv{($y7tMcOJPglh z{bqPFp1<4*-CR8UJppg#o1uT-i8sqXqJNj_-*4&n_c}i8HkEInexHjs>r2z`n{+(u zK1G*dy?mJOE}f6zf9dcm`u!o^d+_wXUFAJbzc0soHl9WLcM;we3Cc~Z`T6I+jDLBn zL3~^dQesJ_KIk;#Up_Rs75-%;mL}l*(@t`?&8*Yi2TcO|7<7!vh!*l zZO%(pN1MaVzbszG+CRazRRBiLq2HZkNcq33@_%xmX$$}IKzMpOri$m8IBcWlOdOij zdFIjW)_Eox+pe}>8rNhWD0XO>VnYXnWbx%y0*B@2xj?nxB!e)_0G&auN3_>p$rB9{ zL~B5uf(GBC%>gm1B6yg?{Cyv`dVM-dd{_=Q-4-ZwK)-|56Q-$HEQP=>4aW{Y{m zO3NG&(HYWt&bQ7u3C}bjbKQ|R)5zfl21Y;9Cz_Gys(qq)+A84*WQhr&pS1~~ThX$Z0OC!? zrY)j8EOvfMxAMdhC}YPH0vuS<;Z>$9AN$(EJjNGb;lKzHgd0U*m2+Trpl`Eezq?)$ zTktFv@Yb78jkd`w{JPA82@ZIx%n2`&HglKhyk&?iGZ#4Wg4e3@7MZcgi}W0G00N56 z&zh&`{3MzKeb@Rz%p8ZzybjklEe@t0f7>c3$Jw$O#G#iNsl{$qn@7?^D1FF{$C2ib z2F>pRZ~Z9+2jU7dlVWNZ3QnC2*N_z)3S+~sos81qcYhww|3>(8ILqvuGsP&axaoNQ z?*Jzk;Y)5O9qoU|^ays+cP2Pc9l6uku&a~Nu@V zP?5p#BM5__W~G{-X3%P8gWH~I)$a7sie8tF;lxmOyW+9?94CfMbz;cmiD80#thpIn z-a1G?;UlcXh`M+HK)yM4lA_MC&AnG3(;$f)&Pb43+2-lPK3ViQL6nwn0;O- zByAt1J};But%@rlG=G_}A>Rf2IY`#-R{TIazTz^(?-61egV@!MAHjHSF*M)&;c{zmSEnIU8 z+K-TEZUEH5zCh$ZAez7rj5iyxg^B!OyhY8|1ErYR>-m9^8~!e*0f`z1h6c{ckyGDn zI!$a)rJbhx}E$kWM!*d@VhFg1% z#J=z{(l_8K|C8t4MYuD-Q-O!!)}H4V<9-9rWIPOCkLOnXX83MAqw-)w6c2yT#hdx= z*1sRao8@2Czu(utztivTcdBxO@MgXQ{T{F5Gxa-P$FuHnx-RDD!*+{wK88zmxJtjj z#XEFK&ydscFg;nnug7~Ko&x>*8N6G&|M+jC|If4N|Ml0lLjPaf3jIF-D+Tbi`WlP= z2fI?PHrh%5KiFRS|0$vWT|%KBcKLHh~oes@r_9P6#Y~9`y5`5CW@^;R_H3fyGKS1;QYDB+aCg zUzARe^{a^P7bpTJkNpCHb>+=MV8!3-Ah4np4HXRnt9B4{#)#>o&8g%I_To>9fmvB1 zYCGs0@#g23sBJIS^j(6yrd;e0eZRp3kOQ%1*{Rr1NN&}x*QqY^XAAUupp zi}B|Dc71(Hv3C{P3Afn^uE&tDz)rZzPPhfE+S+M$f?+3omx2VZop8FHFqH{s*$Kzm z2_KC^LSH-K_lvEMnSBaAMrfNKu|ul;@KdH@ykgCt#-i94c0##bZ0Qhd3|_WVi|u0l zS?n1*;U2r#mnWlG4u@{BoqCg9Y_u1}=GqBqcEYR4NSJIVjIa~VWe&i!|>QX!PvlA_HXQ7=s)9%1o&p_&7E?O@%FVm6P<^X9kG_8VY zf!CXX(7ig0^8tJHJLrhI5e&zh1MQ}EpNNi-DuTYQBz3lvj%N~SB3?1T_WQYdMF}#< zE$c7`8VC&?=Jeze37A}F{ye_0oDd=C!-qBzE=H_5kKu)zh|{#x1Z)m`QP4BwnE>bz zJPcRi{W%`K`TU0GxVw9X48_CW$#^s0RQ-EC-Yox+{#~MfZ`SYKIzHqcm9M{k55t@F zrRw)g9nZRBbQ#vmhxwN1d<+-q@EZO80PlJ{$Ls!|tKVsO&&0D*|1QJZ;vHJ_!+)!N z!ckE$F;R(myc9yP=Q`~Zx?!KN^8aq1u=K)X|6P!G%C#Mg;iHsox0gU`H%4~(2X_bD zA4gMyGZuguqV5Tw9ZFKBL4f-}+k`n}oh#dfZ$ho_Ahro%k}wT+3MauvVLIMWtDBXH z2Y#iNOmHtg>NE>k6$ac`m0a%0GAMndH+-HpIm-8>0eJb zr5IQ&CAdGl=ts~P_53&p)}OM|v*F85$sJ8kV1>W~`27$95SeSZ3!+lFXAT^xK-@Um z@WcF`KO7t;7*R@2_$8~0`Api6jdjr;{|Dy35E6bX8Bq8h!FP^*6n@#(^i>;czdEt-LZL4+}6gR!BZld;ypOMA@-^eQtpeAdZW z_)ADcNXX4m)MiTdCpK^-0*MVk*aL1k&jSs*y0aie?;AEIaO4+cslkxC;Twnbe&o+h zKO;PFk)FFLrHMUr#m2_StVc*PKl0BYU!Q`{0-+}*H@7c$;!idN2!ESn-ON7UyQkYL zI~vPv#yg$Qsw$dM$Z7=Y}(>Oi? zl^ma`(x2At1uk30gIexku@|`Gfc`%8b}Rjjv+X^0lKu*&W`E~hdbq|9OAj(4b8zW) zpg+rdR$2N$u}=MJhrYj3iw1cM#16X^MC-OgOM?zAFM=d~m0J7lacG&bHV##qoy$Sy z0D*|eQ}zkcoIB@qyrFV-2F3zP*wDcqCLtrj-{X9Qd`2`hi5NG{XT+4dPJkR&u=~p- zBDF)e2T=T}KD9&SM(G;J7slaJ^BEIM)_F#<_J7%}pVA?!bjlx=v_UTLs=pB@JQSyn z(TA=wHc-k>)a8qu&F8nF`Oh9^^HHj}W#Y+FLonJJtsO)lb- z0waM5BG0Y|%>x^0W?BiL4_*a%ii61@l^dJZWX%8M6yy#??w7xn-0|kgDtCm+od%$Y zKq+u}-0651LiiQo0M)V0E5F)H_K)ahBQA|`H;(z88<=EB_TLni7(b;?Rx*s&E(Wyo zdqzbxm5^FChyBzD7wBI9IaF0LZ}=;u*9>IkCE#U18;Lpd`-IGafS=Skbf+YmBai~# zYme^tAUjDy7|QujKKH$ov}1Uhv6+m8?G95igY{TuT+EYe5NE2mDh!eOKuWW*)j*!f zmoJZRo<}py&ZfRQrW($~&A3~{ zVLLnm^UDZr*DjqtI5Q)R3YQp#a^+(;LN=bYGYn||fL6+F=zsHY&_Ml(_R{%TDMT~! zSt&-x9Z7*v{joM?rQqw()hp2{SN?27p_#e?+%ls3V@3dm$;h&nVRkUZ%)-r|^e3+f zajHjw5+*x(RL;>udXzd@noB2<6oxI%v1me*XGkpho ztJsFJRx0xH5lw)Fd(#3Pq*C?h+ED8K%Zl=cCgPVbj|u@$td7TzX}&yib)Z^(3V!A1 z-H9Kr{B`vAiN%RUETSc98wTHk%T?@pD*e}33N7G6IT9F4_RK;seh8w~Ef5~_GWJKd zka$t>7hKYYOTK z*EYh`fIvOv;PbxoUXI7ns*%(%0UKSsz755fOYyf)Q1DNLBsJ*KOXKf@_hF(`5U zKx8To7Zgzb*ba=t7>@{zyC~-H%k@h6gVClpk(^-VPI+L~9`U|B51*5h04p+c_+8l3 zS^HTxk}0YsRkoO4F5u5VG%M_*k{ISDbgm>R-?+N)Lo2>z&5H-2LXUrn;jnjW)!%DA zX~25+1wA*vtP=|YbWQp7he}@}5NSZlg}kH&P+-DV+HQXPqrTJ$h_cbDoFMRQqYpHHUOvF&8tE5h>B~VkUe-O)$T$51n{l`khy)r&gq5JzG6kOkU|{J7vGNf)-%1tgi#FnmtdD*C4jD`tF+D_cmdg<3 zDaTN%a_l1TR?M1JYeUiOI({c!Y<7*1X%`XdeE3gYggho=%LB!cm!@)N@Z}eo7sD6G zRKKWbfM0TrXr4qQS`oD06!{1*s0l(u>mBh!}GC`FD%1+Wmpornp09y&9G5j>bpj2E4>l--+ z`C&}m7Oh)UKW~>t1AzvvfPW6d1p1e8D9mZ$`U1l62PEQRM$vFj5Y|E>FeC zGAwm0DCH{PXkw7a}zk5Xs zF{cdnkRZ_Znx@wls~Ri<|M~5*co)Z%uoFT;flC=nA{GsScG5&Pfw1*(l!C1|0?Wcpgc%21+53ydvkpv;aafq__oxOfxAG@I$WoTsig6mz ztfX`pRt2*+$ox!|SeXdZu#-WKR68BOj9b84>|C83yHt89p^pTFdr5YSH!bqn)rJb5mI^*QUJ<&dP0$2+3g~ASaA!L#KV2?07NEugi;V&-+1wJDHdJmVO7brJYVs$bI4|Yq9Es(I z)dqh8^WN915Nkp$LkNBzunyso0UMgP{r&`gu2d_qT5nt0mLDi}*|x~5R{jJ)AY#`# zbbkUbE#|tZ>!X%kPSAb@X3;^{U6z!8N|m>m&DOeW%Z7KBRB!_-;6Zp5xJe=~-+q4r zpXc(6`mjf~;bvKO+JKhF*W^#&@uStU%TddYYpL0?v#Base{$c_+@HYom=dhR6txZ` zS6J)NP!>w^(4?{+|y4pS$($ zmu^0e>lj&mpkV)nonn1b$s0g5PW2buv&oiH#!HzLbgr5{GYqB%H{s_nU0Z_lL%@Fu-(ZBMwZ z^oyE7Xv2I(dt)G{gf|$6fROB(6Nn2E5L(=Y8==HabYMES(W*8q=f@yFxYhg!yAg|* zIg1y!q4;%De1$6Bo?Z9^sbCT+AT}sYZng{4vJ^>j3&Etfp-=BD;3sv}Ri;{1W@2Mc z=f+;-s8RU;2O~8WNrj~lifnCPC-cT@a9=3dnZvM}c`en-Up+faUrlz%{#Z}AFw7S_n}m`b(ra{q0%@g8{Ibn-N3_Q%8y zsR7~p=rXS zq1ijxY~cPXmCMA-+%x#wMt^QJAl|nm9)E$CN+56n7Hf{=3cU#8ANVC*4FuRnbKI@0 z2KS$%R3O?sUj@KFSAiOH2m%0-&VZtv3!9AFESz9XGA4w8V&3fIP&i>s!y~m_D`4D4 z>?={*wH&t=1Vw?+wdiZ@Txych*{&ydUOIGK<-4^#Ua*w8!hG%$l3!V+c*@q0q&7pk zI`$=ZDd;!Q`0h$%s0ME{4uv4yQG;N-3YuVtMl(1>4A-TW;YTC}!_^gt4w%h;M<}yQ^E1`USI?OOGTT)kb1opoQ5$fL~zVGM{p+Hg`8F zl-m{TdxEX&;O-_)PMkze9O%*h4|4BOh~>7KK<~JQAr8?-Ie06vX9@cmdERwhk&_Wy zdrRw)pFPB~jB%-wxJ%aRdsJF{S(WRg%VnDn=yFdkYihG|%WW=DWha@6fT#3Np4Zkvmk-ZNco=T&AwhNE{xLnK21K~ZZU?|8*5%bWg)CL{J9^H?CQW+ z9X`Sl?&t`2a)d)2;m(e57ahiM#~FjR867u+K#KxSej^NX4gG{zPr~oyvj6V&e_7{& ze!?4~pD;RNPPmb-G%91Yp$#>i_jF~|h5Xx{I{;;Z%jVYiOtxyea27Sh`u->8V8 zZzq;kAp>skqRi8Jc2t3jx5?2XH3IV49k4lMciCfvpZr=KzUmF*Er@u(mRr-o=w8X# z4ST}V%JA*+IQ&CsKxN%r2eT6!jJM3(UC6hA`6`hQ;!#sJgrDvX34f>zrpRX*kWpU= z%PVrl`=Py~D|W;l(ff(T{QZqmL(R zC>jHn>=!9`h>$nBBfP%TJif7E$v&7Fxg`wtfTN5-S!nWS)LL&Oq{10}vhS?=1Dw&X z_9VQU)mf6@j6S&@&gdZwRv+f|4db+Rs7-=v7*`Xm*90>_u|1+TrRdj61&<-$2XVnpZKv2v9dptw`b`;{GfzL-~B_57^>kw z=()FfQmN1e^?;oJ)VgMJ;n}K8MwD5 zm&bf(E3B9=jw$OL5^}bv056t!(TPExD#V-HM=6>V;1*$i7A`cYPU>~M5T&}Z&i&;V z+w6;alLO0RRIjdx@c3_x^7v;*!+{n*>wxjxp^Ww~{+-aF?xcrg3Zy8gy{*O0KuJq-FAmcB%^r7y7t)L=a~ zBQS`FCHF%R8Dh3>c-VD+D$3(oBP7Ks&Y3S$uaJir*;3|DlR2kpm8rk+4NME=l&y#=W%i ztf4gp;w|TIK;48FEOCcEi^Ct%`dsT)1%yq5GVTTcm50Y)ASJBRL^eg{2p537Z*e&P zll@-qTiWEG)#3l|8KKIRxNaPY@(h`E+rN>4ImcXWGcUm5m6LYJ1o%%Gobw?-nka7F zzgZG1Kzs)Unir*luYo1levZt#RX(E)<>yHGCsp|tX>3szQU3paJ_19#JSGBovbnN| zmRIulZj2Vc6}HgQ#)W$BTM}BrGPUKFyuR6G)_Of;nWdJ1z&|?rKxrh4A1Cn8K6#{p zPYGDGB#&fW>;f<#w@b*t#S>?yo$^TUPa}9737p$b@K`1lZ246xXumwtSgB^Qs-_j> zVECJ4k&fEi98zx7$YP2XbhGyt8=pJy#XSrDC-FrXta^Y?bO65KE}`UYL{beXBM|xS z0BoFqj~5q;-t3`cj+d_`X#4;!b~{1iHmRUQRnQL1ajullROJtXIsW(|2p&MM&vtGe zdjI$@w?Ddnk0NaYp(FZhs(cm-!mV~UO)kH1dcDRL*@5u z_qLPYbLZ6rnpgG-&>VJtPps5FMb+L8evf$-d)Hr;ZxNzq;cU=m|4AZ89|Dza5Q-sk z769pCSst1WygYO>DY;mX)#s46Dm;)t=o_%m!!Rg3SQp_RNGg<4s*BzDyT=i*9>77)f*rW$8Y!pDQ)vfLq= zV16r8jWkhWCjU!V*;2SDfeaT|XlLy(2b6NMm;*|$c9;XQO)A11&|JCcVy7qhQ2`N_9~3toGk6~B)0AW*W+7rq2{JVTCd%$E7n5h1maDqDg1 zpe~+iPD+Qd7@ATAyyu(q?P@z^!cNVXR{S(O{*)<*f76N|YsX*P72SBria*DW|0oRc zE3EkbcKig!=UMTc?f9)-5I@6;|E{a`IoE!H&*3pbBx=lmVB@MCWo4^iHW`hNJEQn% zR{V2z@vP5-M&oK0?_y=kw~PM~isIi362NF=+QrL1L-8ED^+7DI?qrb7V;3L5;w4t` zGwk?>Iw77nOftxQ?D%lTOSK&Q4tD%QSHalMjlAB=H2ql!U#Y^+F+5&{H!?h0h4(R> zpu&CUB7C|Ek6;)^Ia$wmhI^~;{v7$}bR{8OgjN@L+BuE8tmUuYBn^_BNv ziv|zFpW^)^9=`c>d%tJM8F)N+`1>lnneSHp`(C_R{t5kigZ{lkze7Gy<)ZLrz7hI8 zQOD2M?+0}}>poZ4#r%BO?z1`{!{s`>Q@?lPy$4UD{@q=FM{m3b;W=IZPQaU-Eg+f8 zx;H;>PyDr&^LCtVe_-*qLFfP1dvoVG9Or+avas=56h-h`A{cz3KS4mj@O3b9H$;UW z-C<~%;Y*Cb6XmHWgSpX0D8gPC-|2{~eda4S%MKR$bZ5O4Zluu36`HzpoCitYO%N+7 z)M}#TPF&&$1_~|CvhV(}WD@=GdqOpqm2VV#Z=MxN9h-j(wC2A$Egz>x={u5 zahj_!0w9F~-V}2TTz2t#jx~}`)OVl2v%1h7TQ3)X`D_f8_vS%4keXuay+J2i(sbk6 zM`4j8eQLEQcYZ|3oa?yv8|(-Knv4*RI0V|nf;E>;UMR`KK;-X{=q)50_^n4z#kYp9 zg2Q{{$Pde>n{B@lM)aIw_+VcJQ=8)OzI{e2rz-b$NZApZLi|03ecvNws^RZ6I1L}L zHiBOPJ4pUc-G+xI|J)-a{GLVJSo|X+jPpZ6I)#KUc^O-ftYtA(oO^pz#LW=H>6=8m z&~RS^*JvM|3<&~GU+6KY0p~cJ^s91i?Guu9yqv#>-x@uyGtJo4;qP09zbn(`)aKlV z9H9xfMbCq-brmiUVh#UA5k@J24gVG>W#`cFMPFmTcE~K?6R|(j?IDS4^p4UO@tj9s zoHX;aMc+0O8X&uX?|@MVB}QY(4u-)8c>wT^q0Zp=r}5YfePxE$CR}~h?5XFRb&BEZ z1uy4eVW<-ET4*p#we&uwV=cp~xe*XRQbL2#T4)eLOzE~ne>sG;&>0AY;X-8#pe!0g zR%F&fA&&86TL5~B6ta9rj5q_-BL_R?ydU{!GUwef;~*o(V7^npj_;5x`dvqduj*+U z<2liO_-1SpvhxDhD-GAQp~AmQh3~@My+Rp+3#!3vj(6aKBEbb1>C_r) zX+1_s6n~ZALn%`L-d~~cmE1WZq$=cJ2G99~Jn;erV<(RlQyUzR2VL;x2*b_x<>>qs zx_Kcc0j%Il<&ZOwMvF%EDs;|QP8&uiM~bh~#ns@d z>7o?JL0L|TQv4Pchue0+kAZ+-;ffRiKsCw{M2ZR9Ebig7cmt9WM5d6d{O)sg9^^)# z+{r&fEi1&J|`=LjOnfc`rA-U&2k6>eX-c;A9JL?W24HlrS8^%w*{jAzhp$e{QpyCEOpD^tuB7#}$HGNIXdFQRL%=8MxeSkQs!@?C>1>?wEU#*st zdp+Y}TOn;FSCjj3ET(Y?=DVLLcRz{VvTZJ1&v6>TVfmK4817e8dK`%jm!^&zTw3yd`*nCp&PBi2}WHV5wl?!c8yz#WTq?Se~kWy_}vEJ&g|v!dJqcQ?|Xx8q!Z zW%l|sVk(G9q|j1e8jpJE*gVV7wAr=uuVOzi(;{hI3}mBTBk}no5=%%TBMP=nW?lU~ za?U7aH?!GIcMf|A&mVagNhh;|I+;^*@J{0J5?TGb>SVO)43Z;oc z^Dk_|UC_w|D`_tASBLfsk+sO`E;>oKjm^4UW|rdkjC@r(nc1oj$QEbbi)_TyUC;f# zF)@(JAv{7pd+(Kr;k)a9X`B9_$rxa z!(43;S}2qaiZXoBUHAmigZ7$jz^os7xv(R!htXk({!V;@ocg?mdHE%*JP`Tguex9R zC$_a;1EgOv$rw9KX$_=Qh{4l&<=Hk?PJ)1P?iU5fdKHvn^%m& z$6M1zTGM0EnqJ>b(3;+K5}J8Ch&tfIkr)&{9Px6>$6<8dAp;|T(L8P+WcLG+|2j_y zBh#FK(*rp->Yv<=dqyJc0=dSp702M)(- z@5nH}OG5vka23?STFU?n*JdjnBw9{vP#yG~1l%EP4qe2Zme+|!#MquYUhk5W|DQp@^BP$F%EQbU z>us|L1z7(E*OC?Ipwftb_Ru9v^_HxwoM}3w-m#Aph<-JN5KN#G&sBy zrO<^e5pW&FS;cfWH;Ispd^CwbGk9>GEN1Zjpc%Yu1#)fr#ug0Xxy+vmEzU`$=A2X?p!}&vOBqCP+~3Q19o!y5 zo;_Nau&I8+pv)LhW-=Iy4wUJw6nTz7CgG$uQsNq0|C; zg@oT!2YwG$gW(Sl3lb0i{*J=K)d~+2TRQQu%`d(K^e>N|O~L>liey)6nW9>Aa9k|l z*&lD=%V?{&V4u1daVb_|DOMse40$kzK?hW)trB+;GL=ZC3aGRoQ0^`g4v&kB9hy-> z8(`HiiM9a8bm&Z5faKS$4jqLb)422Fh+#bm-vtTOunsQ&n*2(6mm9 z?|EP0*F%P;`BMBvRlFV0r0`X9d6gQ_fzgT%eDiYas2*Y2>DvW~M_BOw7HhnOOFJFJ zplJ!bX#v#|Id@o=xIic2d<;C5BlrpQ7{J>p+1S4GL#RzUOkCU|=`b67zVo*PaB4^> zzxfW34Ul*hvO%mYXj>94T%0|NJPunD4YVck=`E=LC)@)2_ZUO=(S$DSM~&&CP3XS& zna~c}kjn=AYBJ=~MQDd|^C^i1jFMuYGXrX6=o>MYxe{ET3}`^R$k9U8G?0rjKUQdhdUoM0Z7Wo7f^t< z89GiZwW4hJspo+JLB)Cf|D8oiflHkbh z%}9cFNPxvljWbarXn-bp9Z!Nb)#CM0UdJ0j0^qkTiU5GH3=d*lCP4&%&A+tm;Wv>0 zp$jHjs|mM?4gWLp!wor#*lZ46*5Mo*@iuc0Y$qXb=mLOi&m%z8zok)ddeDY$v;m@S zl?t9y6|`gehfDccs(jP*8`kvWjLPX3(c#}W2MGXTInO2!8>SC68#`$JZFvD0iR9tB zst14u{LfVDa9w7pcEC)){$!sRw1u{rc@8`T@XVYCqoV6^D-2Ws|IuPx8-LOn%EYBZ z4xR!$MR-c^l!0ih5|sfcnusWIz(_Z{(mk>d|7k$e6)_F=xI1(ZOgN1a;OYExtsonq z4VJP|HIKH4$;!u5fJctxIP@2@J^U^MP7(v@h%15r6Vwm>YoOnClYmcslcSRZgF8(I zo6k2DIB8-ONbPvjeL^ldb2{`2F*>vC$E#YFt9GEu(ZC`bnL~fnlHm|)gHa50Hz0LCrV^$2$sW`V z0WLey=ScJpLn4SBJ8`-rG3PTRu5~1ib0qHBg+yqy*(J|(Bu-;ujw3PBk+`D!>Sgsz9TWP%~MDWhq>YaP3aO zk~K`3jyB(2gEothSo^di$5=;>f5MI8+A>fhwZcEwy*kCwtNQaHb~g{Tr?4BxsFXN{ z-#-Uk@~x;r)wsVV$Rd|?@D-#$y;#@wNlnuz{Ie82GLf~epOw7ck^IhTB(rjy?pd!n z6FYkWP*k*8nXf`6<`lMzWuIYA(4iFb;Ug(?DQxzvE{&17XJGphxv6DD2O{zRG%Es6lydp`Z``S(Kk)yZjQv+( zyBZ|d;{o@z48+_$Doc&|6E4ND`$C2(kix2`enPne5S&1mUNj8xV9BV9ard?It2T_62h+jOalirz5qrM6YyrfH2pgZZGLub+|^qk7(=}G62s6JWQXf--USp8_!qzcPQ!> zetI)|m_^v?(*arkCH5V1=H0k{1K@!AP_T?p3PWW0L@^K-#EP`7O$mj#s~;r~+d&}~o=FOETZK@F zhh5tLT&X=%)!q(i|6hmz%s5rPMe>oShqg)kZ{6zfH{4w0|FtHm{{*1Xp_bJD*$u=3 zpxZ!io&5mhI7q|AX@U-P7NjeM6-ep_vi=g2#^`iB85H-L4t~o_Tx-MT8%0F3SMoT^ zA3%MXrsrdlK$OuBZ9xOT->ta@z)hzpjM$0>z(uf=L)-(h*8C%m_%#s5@Q(;5`}3$7 zppDruh*Z%P=(P#EM>@gLuOimJPH<>a9_aZ?U88^T!q~1h*##(7_db~q4)FkX}g=Dvi@BLlsuy-yV?Ft5>t zGR>3lA+>o{Wn=8h-Wq|*W?1nSEB<&pe$l&#zrc#`WXJ#V4&qO+ z;=if3K7Y{}h(F4Tf0yy{nQNa%8cYi55a_Q}q@LKr?C@6++{&1W>8Yw_Hne?NdX^F6J9Z^E19 zKhnSV>fc9pQSm3?&3Y2`?XX&>O@4w^Oqcw{;iJ_y55D?Rmx8zi%;#=nve#uY0SN{rh+U$;d9dQI7Dm zEwN4ecd)5Q*}P+pZRh5_^JH$1N052_Z z(SMC!whTWfZf^yCEc)*@4L^5}XfOPH(X*ZK^S4;S&s*#MGw^f1)IM9)-VXTr{Y3U| zs4Cwc_yN7A{3Pua4q>`51i>115PMTd?7b~oB27dcm1TIpD@5G{5_ROI<4-ys5Oou5 zqOQkH9?m)>e!!eMTZge3^te@r!ATVHMtnXlrFDg1puyLq5A0lAFH2l1f0p7Y^QBhi zr$Q43w4%3)q#{K1h%T$l@5#`5kH7qOdPFUbQ%p9^%qn)sTW$8PLcV9L=*t-GPpvjn zp2Bu4RN@kqR&SoKid31M@By{ASw&8;YI+7_f#!9gfp9DO{XvLMwsJSXk&Lt(z8%qL zThY6$==^Pn?r%lEVMTXfbQdf71uOctHxXU0=qA%#&S-YN=acBXP={|=X*pJrhqj`~ zIxG5mt4Q1v*7rVSrFpF)o3^0HT~_otR*^t4isX=by4FfN&MNZ58z?f-itcDd-@s@x ztz-_q*`~+h^Ua7p$%=l@ik^NVqK~nnUu87EZsp@>SBS!I6xC*$|FnwiuSAhgRW#)D zTtX8@n3u#zOZBEl1*%LJ0-C>r$-3IAd-G$cyNKUZVAVa!N?WngA_#Ah?w@Kky7y$z zgCr6SvyY04HERa3#n3)(u3w1g20~Y+T59i)eED8Ks;1x?TaOGLPW2ScsvY`!h0efzWL0=a~Ga} z=-;JyGv9Xo`zyRp!1KHQ-Ro%edx(CI#+&s_(Z6rg?|XIpGy1(r$FuJHbzQ8N56kb= z`569Dhr1r5(gx#w9-gWC_d@-C81HBC?9#t~!MmmXI|uxm9Dt0If5R~~{Og4E=$lsx zUOU;38XsrlIvls)HvSZOaAMUo-h5|>5DjrCX(+&aNqojP2D*q?jeI*gj!c7FCpxfb=&KuAswtXb_$B9kZ6Q3~L zx+84eo;Y|Wm|taE{H&*bruE@C>~DW=Pkd*CXyOK#(>$$;h5?i_xFb64X>f1xTI(PsMl%kS@db4 z01{+Re8Ta)+G9`rWc1j!Cw_-jM{|4PozNB76IUys#Japp_DwD;hYTGko+^ZE5N|uD zMjY7f!A`8p-4S51O@_h41@7o+74A67+?|Q%EDXa3SVAS{v2Xl>k8Qy~`I~E?*MKDi zZan^wgv!8ZhR_J}g))rsMs7uvk?`xBKIGB)hSXnS0SC!uoAKp3$m9hE%fHP42Ijz;N2v-Us8|1iZ_ zW>!MY1%}CU09yG=_!mDG$`AgfAJ$%e(*1TES4Yqi*boEkAhwZ0`+ESKYj;D ztly58K#92r0RRK-h8thiHRd*Sz2*Ew|I&qzT9b)!61(B&l7SHfNNutk{s7h@z`NGp z%yjr0(l;eJ(_}gv^IM9iY)ui8&5Eb7EUg=KhvD!FcQukR>xX7MJOkd8K)gDQhr462 zDwXl@Gg~koe!@>8tOJ*mFdjbqRkeb}c=+@;XhVfCcQp(%lE!UrJp9ASO~%9T?#t0u z#={pOj9#>2Jp9pTn@DIe9zL!_NQMACYnpRk=Nv2(KxE-?mQ%QB@6l4SxfSvm zs_ZIVHqIQS%T98XEp55%8LI4UcG+$yyES}3$lJYpg{;A|84ts)Jv;h>4nlgzs9qsq zfAaj&r&q`uc)rEMaBEL%{Hp(#>6Oh9LLVFgy|P3M3RM&FrGSb}dmr=G0=<%nifwx3 z{#Oq|uY7$yXP^F0PLuw$gI*cev7Piv=P1%E=i$f)LIif3VLL_%{c9J!^7r0s=Ut#5RL~B3Wr~!4K$Smi^hyEgmCPvMfthP8dgakLi(W}@?*C*L z)@TH=M#`r`uSmGlV?wWpd^(&uWAD@cPZ;Cz_liNG6c!p%udp5C&G{8VuSmirzp}Qo z`_|Mol4j|uXcpNbuKPh~7KTZfM0FOdXX2-stdbaJ(u`0dvUSV})h5QmY&CqL8a$h-v(hms1I6S$Z={jaRC!2_}( z$nnWGGwbu}4!Q-|NQn@HWyX#LIa@oCW_grb zkUL`1VJ7Ag47hz=joqEY0VI?;bSKY!**Fg6tcd{Nm|s5X*x`XmKqAsNNIr7l{2~N0 z&TB;o8mI!nVr+kL3=UZq%a`R=8uu~2GJb)$45242|1oMR->v~dQ}?Lh);+2QbaJK4 z3%>csRyrcu6P`2d6@L=XxJl24+rB=xjA(yJ1o#7XIa>@d*U;_IM2y67T$dr^*a?No+ni59!Rl?*BaGmNPnCVE2sDlImK7GnM z_JVtKr*+5#(^`o1FjB7KMihcnAVW+UDf{hl)o{SDeOp&!EX~+d#q?wNBTxkBc?QE( z2;;lB`Yom(f=FeI`6F2?>53eah!s+OAi()CH@zbD2=$WjG62~hAflpB%SlCwKq&=A z!=a6c&3S0UHx!t8Qk-8u2A!xKO=U@b+YB9_ZSENeuF>gMe5xJaHv;j!t@!ip`0?mO zZ6g7e^$fP-x2#3{ZY#cr9Y2!s+pYMYUbY7MW$-#{S6lHPGhW7e{DTt}@|9}8{Y`&#e>?H4dyzd2=IeJ&~NgOwsI-vvAl~F>hik3?i@tAw&VARLOg!q>AdN z%MNw4dygvJyxlNW`eM7?UC)6~o>q_@-7DluJhSjH+}d*i5Y9i5UX16NKY4Zx>=p6^ zo~?KoZteNUAn^b2c=0fN8J_F)o8kF*E{y3FaycIUz8P=kyG#H6C*CZ-R{wrm|NdIP zy9`$42H?$n!}NQcj-RgIi*-Ef9;54Gem-n>xz5M%i#ohjziaXCa6+$;A$XW>==W5- z=iynZe?NhD^ZV=|)$ZJHTwZAETK+fUo&Gl(g8Xmn*ZwyeaOjsX{BPJ{_}{R@@V{Y) z;eW#p!~cdIhW`x-D_0WR#k0w%D0p?O3`-8og!;n_Xxx096>9iDu1hpvwN1RkSl%~I zY4W~d_>L>T(00DTW|Z=}@oPN2Zg{(42PG3Wj!f8ilnzlx z`n}7E^c#e)>G5}pQC>GjM=>H=7)0O}d|_$h&X;{Ol3_PCln*@W}B*;O%^PL%2& z8|N9M=HpV#2V8r2{NQgTY@G9F{yc*G%V3Zu#Y7v*xy*Ptml+jd_+VaRBIN(iHGH>+ zp%GL)3Jp~l9m|saoi=zA+#y*##F!MJ3akC#;QmGy7jjnW)r18?Q(wo9{3rfK zrZ!T3JNGd78wrHg9?;)gcDG`$)n)rfdH129{?6F+=ly-@kHgpBTVFb0d_QTWzj3yG z*%;}s;PYs(m?Af_zg-OF?K8{>+yWFu9n6YRvI)RowZmV}`&3sQ6;DG9{z7OSKQZgP)t^WZ3Jg0BrsQAS{&o$e?lfaUI?;V^sLd=onkds&(6A=~? za=P}+#xQ9KRQv&u8y<4mzI`g8TE*hQrh!TfW+9n<4b8eh$UVYQz5voRx8t z!v%@D8F2AZh&a~cH=LGHw4yU72s$95l#yD{7y*BCLPJsfD&YfikT>K|{CjARFFbR&M+=WfD+E*gGZxK9<2-@8 zI0%H3$DWC^!g~`iu0Ys>&r;f(`9W8znQgdI{q+d4D9-?T1EjXcsM1=gpdRZN6&$+y z=@&|5dxHKs9gglpBod=6>D(eIt)1$Wr}(Fv7nWJcCa#eQ{u}j zLX8Y(BU~)uWhx5BRLrZA_i|b%P((vne4X|DZ`?1CX!vgmONyV?C+pl~Kd5t+iG@Cz zxfk2eCx-tV+_XfS^FU{;HCQv4;nN|=mop#cthY!V5^qjKBsc~=2K|JbvB;SexNwK+ z?l<>fDOncnpyZovnK9E=AY5VvLJ6GU8<4}6kO9)m1||x;#HL?u!g<7Z2K+4U+kJrj zsQs>-3fPYtPVB7hN3pav0+C`~av`AH6Ud9lkb43XvpvJt=dyU76%1OTleK$Hf2>f^&~Bezpv_>Cj<3AX6+k=;V- zgy@b2U!9^2E~Ktym^bvlQs@RseY8aAt`3i&DMGKA?7J?)GDTS4MR0IRGR-dX0;?Eu zWSGchIjkag9nZKCu;MMh!S5_!H1ow_vXse)Qf*|a5~oYl>x$yOQckw$XdJI)RGan> zjHhQ`O|$V#I(b84PFb8gzXN&H&Bqf;kR6q%IAxV^9jk#b2x)jr@deQU;QEVbQsPas zq>sWGkYQ*tDG}X7 z4NANW);d}L#pUioOlWGovp3aksP5}u`7zPDHxW`?_okr@#h;SmyRb{KH>c{}gq6D+ z&>M=2aBwVxNhxip@N%iJ02LCS76g^gZbSLwqvINnjloxIy26l3Su!GC~ zO?}Ku6DI~6;0o=~%dvaIM?<|Bp8X-&=Y<15FizF}2xiVa)8qHFK;>B^T{84)o80FB zl^N(1w0fy0{LNBgnfk+L-v+$u?DL!N-$wBM?cau#2n-TAZ8TTnHuHpI+qrw6x}WoO z4YoxBi`slG3;1o>e7|jA`9Ua8=$(aAF4huoJq9U5;5R)8{&3VfsBGZFQe{;@y42!+ zz5pPi%yUe+Q^5zVxLZUXbd%||UQ>Cl@d6x>@FWF@?Yr)14Hb)H!Vn{-E^YE3I@v~` z$w3}qVxTr;B&yKZbkO>!w!#`Z>O8T?|H^#Be%=eD{k%EmSx1ue zn_L7ml*7fHfA5uO<2Sso@_XV!nKN`n2NkI z7DO26aFP=pirLf@S#G3eFZ_%=wRVwQyMG`a?6*YFSgIn~v}2N#HtcxCQv4I_WoZA< zjjmoV#UIhd%bWygaT{7cS&FBlIJfYpaX2M8Tw3lf23RT+=!ar-dnY83p#Q0R6YcB` zmhC}z|K(ErZQuv?roZk@R5=WzqBn-58mSP?>T&LbA$4&lNDN#$Ep08>7%cwFfeC7N_^K1= zj}4sAe$}h%8WVGW>w3$%o@+Ki<~(~#t!Jy%vXXMO_?T{G$z-vkQV9q42A!{I9jDRKkXW;g72F~eOxOV+Gk=&N7 ziEjU{ru_*f)06$T;@Ehra!%IO>#y)8{N@cGy$J;V`F%nm!-!*4UfG;WvoG`bKk@p{ zk!t3=p5*7}K>RIRHJNieD!-8Xe6s(hpbE=9xqoy+jT=y79Yk5pU%<&hjo}M=*7ZVT zvmf{R=SI{$&TMmG`SRl=x?yuATt!7727nRIPM%U+!)~wi4^0H@LW^I zQGMDP!lrVP&hgEC*GlyG;n2(vQA(V_5a8p+_^wss3wDIxYj_iW2+z9+M6AqDU+*=W zMx%<~P=&YSmc+(gMnZKRZWs60bu3~zyg1~hEYm@z`q=*WTij= zB7*Xn=R?YqJ&qZx;Xp(`5p#dC72|=n1Z66HURT|*>W9H!1{$t#r?9u~#czi%UWov{ zATHS-N63K{(Zp8>4>CFDO)KE^fOKuGNLJ8SRUp%gx@VU{ydt8ml-W4FKf|Aq3uA-L5jwzBF*pI< zM6FevB2JQUBvxmyU<=y08 zQJ>VZf?lYAyI1Bzc`PO?&g}CAZW*oVA+EIzmwJ@t z$~5i(BX3bVKq){IJ3u;K&K&^b<$Hl-VpXKZFZ9oGhz^mUdV3WH#BvQ=b$V z$?JzBRK{xad1mzI6-h(T?vUlBOp=PD0olQfz_Kc7AP|jw=EpKD?%aFix>C%tB zX@vC-Tub;X0uxUFaF&=80P6C!c_Hi;aHeksNvFhhq?(d_&yavBm&6cH?t+MrtYhHB zG$SOdJ6;CF##tc_3jYszZvq}wk%bL+HqwC5jix22NDEP-2t;v72ue55Q>RXyI`vi=LbJ*95x)*@+KEM0o)~dku<}G1WH|29huAdQ z)i|sVnMU6_(^bFlIHq)2@fEqn*FXgzw>TdwVNO)#xa3I|v*cp#cfBT9dY52>;!S=(PK46i;DEknQGQHEi98I)s}0rQwFgGDdH_?R;M z`9H_s4l4z!VkpmSH0q^htVpFQM!_-4i^cAYAS}6X4he}pm>*d=V~+-XTRqJ(tHC_Y zZMpy5X^Q3k_dqOiVWck-Az2)gSOU9AENkY9nZOv64Wz%WETtQ2ORmZx)?hcRIL%l9 zvwtLA3u2`ee*wZ&V6<0)vxr^?Z{P;tbVy&ZTJTD-o!6`n2C2Atah9RDNq8FlEEG48 z{YRsPgyN=B+gvIXHyl4;W+u{E$$m@mU+}K4?h9dPiM>HA9maRS4=PWzQhtPu8I-$4;g;ZxcS_UUr4BTbYQ+W%ad z2o)%y2f4n&bun|@fw#$&sSTpKNYTD5A`=V=L|*7xsOl2BmPR-{K)GXBoamXf+fcQn z>#CN_c3XOZt%=Og8>88ZQ4n`ZKOCc9F>3>G&L*%mm1)bFp-d`SKJLag!fryXt6ZvB zTq|@9i+QM_Vd)8%u3>?2i+(3g07wa(QtDU?))|$}*s5G6K&}9BU>^$G6uWTz9FEQ# z87u@E;TG*ppAgJCKX!6N^m%%8N30N*-hrWK7SS)&qZf$iI-6HI5Pjn=7QVGeviWf@ zNH(8e<5EnH{k8E$d4WB@LSf)1iBMqGlg4m7CR4amB>kM8bn`!D(sOHE)0uQ!5jyEO zK#o#Hs+S{Gbe6>5)KwgnQ56S=?92-x|Hrwpi@x9|lhtIJc^YoQ9_Ur)x3~vkXT7Qg z+wJ{k<6u+GXJ`T<(H;c3{oCRV3Q^3&B?9{$d;Zpn7OWGRW4{q-6)XL))?e!zVo!-ygSS?ALjn zzybl!MsWQ)4E^FC2zEqUzZHDAUJNJf8ep~9#@MXQy+5T0u#|&T)YVlA-6u6J5DW9o zBKf0Pn}xh*MsM$HvtJw) zgLHa)RlmQY)Aab$PWETUUB^w2YeWM3?i2}ho*wTJ(JS=mou|j)B7UKae++v3ZCdB) zF~)v!{`Uqwg0;2$f5v{Yj>C9zu!w)7jDKWe5O<+`catOru5k{}oS*@r{^RKOleaeOL?Jfj zj>CS^iA%$%bIjHD?WL-tqxO?$3}|mZIkfbc_LEP!+SpHC@?ng!;@sN~V?Ws&o>Wxq z##w-N_LDDQG+~Z(==1&m%l4Be5{4{xgS(ymaA0iK{tC^^q4tv| ze2r{vuWhCls#Erp(|?9!hP9TTa?erhC!0So7F+)h*iWwSEt!Vs-HfRHBsZPFG$O{6 zubv@|CueEYm#BH2HlDoa-{ct;)8+J0A1h8l&wtD%L$-)MLyuk|qU$S;r5%X=%Xa2| zKB7}+b^kKC;y7;O$rnX(yKk12!LCMh{e$`9n3cIxM1Ky^S(@g*%F_G}?>X*}5n^VxCD-pyOt*=J3a#49B+ zV@JCqD}xFV|7%RELjU`epx)nSJUK}u`3RCkjSf4XM~x@Xm?Y^#;bK-lA=B1)67(U@ zPhIKEGYo8(V);8AF}&*M;)X~ZeE1GfI@Cl0rLB=aL0?4GCw3nqn!8d=)xy4qlXd~u zuG6`ig?BFI#Z;`L&Dc_{fE&6=7nV6xOt!h;KBAMHlq(gIrwJl&P(n#xEXJI37=`5U zqQin+yKAecXvF=Fqx>V1O}_mS%dbrP6SvpMzYE1YO;;{m&@!`#0uB>ql>qud(eY~c zs#~yUPaPLcal@6zspER)U!Pke5iNZ@mf;SO!)%$uap;9i zBK}1(zU&rxm+gBJ0V{IYa=`{tNOZdqIJ07NOwtqVv|mUoZ-;-q69y0tY{i@cl`kwx zuosq&K3xSfayGdg?oBxOC7K_$#hJLzj;CJmho+XeEAMQ*mkQ`7v@V5$w4fd##mxm> zm7?_|+%?`M+%;f*47h8eUwc7z-YUwLc5S_vqoW?m-Fhu~FRqan_&Q)8+-|Oq!MMI> zxxn#(%E_U__!QKlC((7rg(&SXuCsbdxElg-d`b78mN$y%b<2|KM9J#`Tl(v!*Tf zafbsaX2X04_kiK;qc?$+Z_foz$#jrl({=J&vv#$NQm@%jfu`|Blu<@X8$SXbN~YmG z$ngHY4&G-N-YJInpd#ek&G7!UNH5NFv*7&$ITc}!zc#%4()$y`d#mC7_)K`eYj{`E zn}r`b9);%sYLY-vNa-mf%BwRFA@)H8s7a3?}c~4+h%y14e!=F;r$y@5|#dLmfjYnKz?l6V|af=Z`Q8b zgM61V-)iIA+eQ={Q+iE$XKHi4BCML%s@=Jf#YQ(?aNc*dCNV^=~ z;pw6*Q;iRA;tCZ3j1wL&K6s2APlB#L?1Eptw)9LmC2;j%Bi@gfAwi7^_7?F{j1PnO zLF!jQg&Q$Pff;i^u5)8RMuDq=%lJM>z1wZL{{s)*=ioOR4}bam0neRyO7!=q@XK(o z>hGKI+YQg>`g@E1Zn<6h55h0g8Ku8Z)_;Av|3muk3f-S+&(YIjx_lV_9X%Y~AL{OJ z_1~_DW5?sh!|ylfzxU#I37$Xc@2}#QJha_>{6gAXOk$XlOF=yCrerF{F(r#FxS+2R zT6Z%7>5A#OVrGuAM4+RQPv&!Gj$xnI!AGoEWALljye%e39S;(dbVj>LxwQ2c6r-ZtzD z+RxuhwU1yS0Fn_rpW9S$p;mJK#*AUi-@`seO`~)7QqJ8&UzT&XTovh?vr9W5_J92@ z=kC+4m2>yu@gYS+k+U9rmj#U2KpMK_{0`)EzsTpcYeYWBaklGH5x+>rj~>5LvW*!$ zI5`tzjKp-<**oUERYWAjTpq!*z8ni5Wl$rwMv6Z(v^;X_m{ax z#j_Upkg)GIY2E+IqfQ}-XFb^$#j`&D@827E)_cYDA@QuoEhAAy@T`A%RZO_V5!5o| zC%UPuxB{PWgtrQ>5NPS^&Hk^Yq&FlI=yRS8wa2qoLVYiSeBue&EZ--ZV93)3*xEkl zxPYzCMbT+}mGPNVsLZ7tJImWx~rLz4)r&$u$73Umqhz@F7T)Tea}ywn&sQ z2-j9_->aEAD2E+5)TyO8U>2k8IDAX*bo@H-3s#Y%V85E`6Su<*?VN@o!cer?tq>!8xJGb~<)lBdyj@*McWVb;!&4oypi1LQzx>pRpK zXzN0wJ3+p6ATMpoc9tm?BVDIIVqex;J;ApKkxA^!8b#t@3W_Yj@FcYLy~LP{g}>Y^ z>LK;khrzb4!e=df1ppJ8|82opO)N3{!5dtk{NUz3U2*tyoA6cCwRGv4KKm1m%|O&nH)lwo$16^ z!82+nL}h2;F*8qy6%yR~$y+H`Ni6GMrwXV@1Izk1u?RRCmUZIiAQaRjL%U%$*m`>` z>rd-hM%!5xw4)?W<|-kzhiqH0lZ{LTA4-=o+hbWjE#rQ(QpU~D?$P6x#l+paO61x; z?o=7~rAXXM5tmrj|D2g(dKk|$c<4UTvwSvW6@32$&*w*ZJ}62tEyq)bhwdXi#`=%) zMVs>mfxQuYuO8Phj#b<}a+e)UYH65EDkl}r7k?1W^qQOu%mR18sOT;S9(fKiCl^krTXKZ9WlZT^ zxt3lzg`VI_Kk`s&7qP_T`}hL&%p!77d@RQgKCZxz{J2v8P$9nyrm5zE$F7URgfln! z2gP#Ex-i;sld`P|a0`LPIHh|XeXD=4cf zp_FDNJI^fe?3%*{o}D{;hp!6|?wWz)oaJdY`;u_~a1lTD^1GAJwf`GDtE)Sb|NG7s;i7zZtwuBbV1Bw)3G;X2W(o%sr7>cIa5Kke_g#`YJ> z3veYs6N-P#{c!#F=w)r%FK_PusQ-9NS<=Kk9NipcO7IF)IO#L64JGKbVgOlsIaA@A zuGBg+gz$C+Uo%UuaNtJ)W;XU?g}sPQZ%N;5*CliC6mZm?I2?smr`pUeSdb@(1396j z-Cv75;hJG&20U@?&5FIPxQZO|Tj>!P0q%lapclC%o*5VpVIUq zzUw_Be;gC^VWrKS#GM74joFaV?tHfxdLT6%`$z4!Vt&5tgG7^d#+3(f%qeLU+`^)j zce_yWaQ1bOa7DKDTHlvgQ{KNPkCvdub^(kLvsI>JP7M-78!zB!GJb~i%Xh_DkTV{i%5GiZH0Y*ynkHc&j zvdz@J`$xUw;k`LuhVCBqPK5Ubdgvehkwm~e*Rx3r&{U2{N9nC9=m!uA#MW2?J%gAP z)THJ0#@^6K&`^Vcpq96%#?_mb7lyq3v>9tLCW}9|6o)yJgj_oyZ|;Grpar|3BaVJP zNICF%6u)LnDADSQuX3JK=dT7JP*+Yc0I>N0de{-tB<+Ca!g&=)j(G==^A0WN8>(a* zP~92W?Sxlv?NK2hR#{e=EvpiorKZyEci!N98S=4_~ctXhd*~Bhj&(r9GG2i z?GHQgg3Np4t)KRs{Dd*?9myg76~!2nY6C@hgt%J#IlH~y&e~capC11`U zhX$9&e29e=H4<@!7~$Yhigw^*bQO!!T@(k$ZauW~cdJ!QkU@~DdFDAv2t~wDeEsK;mC9wzM;XS^wJ z$#ytfEhV>O&0gy&2W3i4tZN1Ehbr;lBv)5>f@iI{gZ&Cz25TL=6?&aW;CcjXBw$el zsq8)(xL(^`i@;-o^O}W%*M+m%^UQdxkz^l`AzQRH3|Z?+#dy%mU`N0VJeiSXT{5s; zTg<@VHRYt6LO3w#bNehEZ#aM^`~=!ak1sr^>tCKiaM0$3k4CMZK0#&5wUuZEw8*(- zm}x(DiRE{XcNpcHk@2RcJPCUL5=oIm%yuOa@@+NGi}QyLZ9cRX5&4VuWyX9YwA*Tu zZIdw{U98XR!Mv@*_6L27JUCzMEvd2;^JY=ZJm8nzZ@4Bo54`Ezk;DTy;uqHAgjW@NoJ^bj234P)S7wyL(U-4y#xmSVlG#QB?7a zJ;wT#80$hL3wf7ly&Gh9>q%;=cNs>~^AS9|xS3}FZv-2nu4U++C8TEzZP$`%wTb58 zXie9W@abYWlZ;ThSAdowPggVP5!kbn7<0Y#A&pf~VeI*(TGyglkP4da0ERSYgB{w} zu&hGLJJxPZhJFecoNzJI;7 z=nsM2`%o_l$fp}5t?a;fyzM29$EQb2BZ_Zvb2Sgqy;I{_Y1+TuTr?`M8?$%bK3!gG z#r-UtVvor;Qbe+sA=$G1>l2yG&q!uyY%;w&kj%ecWa$!QGV!b=j(VW;Vwld74kWWs zB=aWbTw02l^-35^5Hife!`jnete&+ z1Yhv{PD}5Qu$LRf0oLha{04D{#3}HO8HYIf9m8VA?@UAk-TKQtK4Jm!*8O;{l6wf>*NRoDMt+ zo?JZWBxeDh>7~v>jIP-9#QIa{Ux4>}r6FZ*jIL}puQz6rp`1yAc@`d5RGlFAwsS`@ z`T)ByoxwBE=Z`(wJOel`@;!d7174UV|Nrn ztJWK>>+@OD|~gkj!6zhPk#?@ss-=1bbQa^!}k%p|n~^M+vZoTO?wNnOfGswSzJ!Xn_2*Yb;zs5JJNg-FBShQg3A!CZtx~6*M|y70uf_a< z@H>ZXY_;t{D=Ar{^DWD&46Yto|3&tfZ%=E)=(Gz?ku+@kTd&@KhWw88>gK+V1^+E8N>e+T>4dq$<>qo(Lk-ZB$7#n%x?b>VmTBw}pY^nRR)L&-l z_zl2EKBO`KInrp%<#3@fV@ul;r3Lmrmn0dT&wM%dr?s0SnYVCj9PQ9TQ;d>PVoQ>)sy`m z-@*U0!{P({bQ~mFx)}xqkJK5l-J#3GC6pV(CwNP~wUpqDBWSxWhGtk#gQRP4@3Awm z#Vn}TpOs)KxgO!6x`Kh{ysZ^)U;P!|h_gin@7_t0!7PQ684Si7(;FCRk={^~)*~Pp%<81K;F=cX zp!keE6yJuwG#5zzlK5(z&Ryb*vO7Oa?gs^Fj*BE`nTHoB$(^F8ABcYL>N=n!H@aHZ z3Lz#7fHRg+leD&-t-M3lfqwvZ*kxJtH>3naD(kEvFkdl))U4#59(BE&*vbHKzZR>e znlXKegFVkGHuzLu3%6pi1R&@`EkPezVn81bVk;<4>$Zt1RqzBFs3BqKK=eex){>cK z;^|;_UMT5dr)C-b9tsif0|Bo`7xeKY;SNfyiAt(`db2SY&g3I$!cD{;bjL7;x(N^z zQFYU&qIbbRteESIKQ2mg`o|ZVL6!;`taf_5IB=$ONqv&;_5#Qg zA=~?2NhcY%P=}9k?lk8>HDlYL`=`Qxf5R!;{a?g8%@g@$?DaCnZ_~w>jsDLQo#ye7 zjlHQ9OnMKdobps!A-iP32F|syyVu&l9I*(q^{&Ev&7nQ}amue4`#NG2ZyNX>8e(LX zy+oQTIJC`B?38IgKP}^a{FWYfcqHzJBx-3DA>+0_DC5r6mWa3`X;C9=uq(6#5e*v6 zkga?llcF`ngU~l%_*A_yge8ZUL%VIaD8@}?Mlr@PDa5+QD8QP>jKUiQaA+6G0^F|` zz@ha-EZR#fd^p9l6wlLm=swc3GA10|M|xWEtqITfc<4UT^Y{}frh$*7mZeF1L$&?wyciX{vyz%0MLnV3sV17UlCrX>g#Qs*O=!qJ$?SojsD}J>{l0>% z!XqlmEhV=iZuShjW%2b)1Q%@==feSDA_z@qhBI+F2~jl3BR-o_QRqnfw@)_ zM&IhVaDwan*8S__i(JsXh);%)(uv{MI3eZGa{%O#7 zU~+Oe_m3@v%E|v$2H9XymSo@+;B8e@w&J&rJPv$&IW&df+ZB)zpMta0^-7KFRWR16 z6@kr(;Xf#9kAGgw2BU^$o7ht53kbb2CR3aCs*i3g+#@y?W{Qo4ZJ6KEF;3@dJs;sj z)fm`pX3h1c%GWLi8v=i<7v;r@@+1_&6S^b?SYjRvWDs?%1E|W6aZJVB)!|3cx!&#g z{Sr(;s!SWSXMs`_*qp&~ApK0>CsXyPgU6o)Xf;Dd zoez=OJ?LHTd{`d10eVXCfYTWuaLEw-koDVo@*PAC!xShPN|=-s_CjUM3eYugi%BW; zIzK6p%@!^}BXD{NyoV|1yVc7^f^aXu<%RX@NF(Am!_YuVU5@SMaj=le7zvA|%~t`~-lE z;BstHu3!m^3ll-AXuRsX6kz*OdsI2}X5THh-!yCJxM1Rt(KTa+m`#>9!d*pk!8Q(| zJt0wR^3Fodf=yC<@5b+#8~l(JN@JGrX}X@-&rPC2E>F;g+y}rSekht3&Tzk2Rr7l6 ziR!9mCSQ*YH>o$s)b$1m^>k5fv!gTv*>{)4^EP0Dfmj4dU=H>$@!8h zl@%@8Pfr@TKue(THWnx|qIqDGDzMohvQWMC$O4*co+Up?=Fvmeop*AJGgeqk4&tpb zaWl`9wI_ZSYML9VelDv&L{vYwZS}Xj7E}FPZ5!;1B}XXJR}|&4HOlmImbWV>s@#*s z@nSR2>JHqO23yudubP(TChx&T5f-DW0>n?I5~>iS(5Avj$RcZu84^8S&LFTP=m&%Q z1)Jkcad>-7sPL#Y$&@#J$Uu=*=aD3n@Z)5SXPnDP)+l^h1>eI5n1wYUW{Th@=SV=h!9eCK7ZYK~~Tz zqU#lG=|J?&kFkB?^zwLRd0hGtx_B=-uq0ZUUFQyGk~4#XcJ;?G2U z?j*boxsXd-KU$}dL_h{2($tB-FDT`hz4-N`tmJ93RFCDiOT^K!M4lFj>^NIitvRM@ zZPXt}BE%a+^rd?A!q|Sw??A&05YewjbT-WL0@*OrYh3waA1Pn#BRy6|?oR^JDPV2~ zQr`Fo8>cm0raVrjEHFK5Tyv3lV$n!+Wv6jyW{PB2AX!ktV{?r*zg&*qf{wNMV3Ej; zNF;0%ya^iCyP#;#kvB{wgC?Lo4OKBUEEN7@mkWh-h%;CyP-1MeQ21>)L~AXbf3d{P z9E$DT+xm0&`&>A&`~3q9|7uIh(TEg~3P4 zguf%v+LAiBQ5Zcg_fNn}u@NnxNFxzX!6rQ-^0T&S1tN|KzStaz)dCl?G9w-QSn(5y z_*I37$Pn5?j4099SsqzhJ3{L@W{8NG;E|QBLPq3gEuRsAn_13Jlndc@-~-)|RmBBv zJvI+Ut9A+aah#n)!LJj9sVJhU8I@g5&EnSVcv-5l!i6=PMR7n)Y!04?Nss*9_% z!`RQn=udY-f67LKaR2Q;4E=P1pFc#138Y|FnCtHyoW`+pKkL1`$}N<%5E z47r@}VwYJMN+rWq2@6nfvexoPw!fOUh$GeVz~d}1H-3e=%Q1P`DX>u3qUD~6Au)wB zeTL{lFvtvH*al6r_5`dOxTH)rN_SCA=@1ab!-)V{K7^MA#0fN_s%NmtGPNsNMl4~l zO1ZgxE>+AiQ>a0Bupn!=G#dLAFodYzKCKSZzF{=hvE056GBx;tyE-BL_Bx_zdw z*<-oh#EOAcyWkuSJ!E!mr!%`-W_G{btKJVa9o9=OEvk57AuCP zphjSs3vz@dQ$7N4(YAD72Ru+ECbW#n4Cwidv=wYRzoK zlI>WfLp3?M5Y`fw;-6VGNu93N`mld@+~F$wpGC5=iGWye=;cDjX!NDodZXX_L}!WV zNhAsqK^tO_$|A+)jiMNBeb*7Q?`35F3)DKDqvcbWy_A6WX)n?y5(9r9X!U^BO2|fB z_XDobkJHu2Q{;4&OL~{q46)M{H$y+6;zy{MTD9^3qC=a6=DFk}G1j(f=W?i1!*qcd zGu|h(ZrczeWJ|c83MRaN3DMWkuITtzV)GRH%Ms8F?k_j8$JCEJDvT2ZBXlhbU6r9- z`#P8C8k%w$NNwf03{~q|JruvV(vj{&pbF*;Vs!{DbB$!*D5=izaUS~v8& z;&x5TsuNQE2mLb#TUJ%4HIAsl&SLBOa6i5^k7&d>iop8#u+{&0i~nG=rDO*iA+SCH zVZgZE**j-0)zke5mWyC0t3-gG;d+7X#Kk+b|JbLrJiz6TcTk-td$Subz(xT^dP5gv zDsM~uGZoOESr*;EI#U5X0D9s@X!Ipwt*tgFW9f*FSh^`#4s zAfFIR2VVjI>IprS)+oHLbzoClF*da)VN+ZCCIce~+V5o;Ev?!M zq{oo$+xcSjv}%8YzzqzYkYUCT-M6D@;JM!#R{fN3BF4eGywlE}81hf7J@EpE~TPiyzyx83{c`nzFYVAzjVfNUWbf3VDui!a6;3lT(~ ziOJhlxDf!2DEG(Im+HqQ*3d zp~0RD2WKXlMfsi>DkaopqjYDXbjGais-?7!Riu#Cx9ZaRR!rK!O!98kE)yk`iSJOC zZ2>hzv#1Wo>+%Fb+7S|;5=$qc+0pc(2(}wsLXxp)FF)AvOh33^wC@tB@5nM0dG+dn z1?Saj`?G#R`5VBft~64gfYdwE;P*0R%c@1>LfD)u9)P)aM4az7BmHRI#3BjxM+A5# zVFKDZg47tYZ5^Xm=`--fj<#bwGj4hf*^Y=mN_HP($!TOKfoN<6Ms{~~BD+VpbZw$! zKO*5M+1(zKT``u?sNHv?_1c*_kzJa|jvIC(5`EK;*qFcG7pii!tvU_N8#~br? zq*E5YbwrYH+7a`5C?+p!Pf@j#jl9n6L|$&@r7j}jV_sSjS9GP3B`iIw;44V-#)}P- z{BD%qepOgrcZ4Lhdy#>WW|aOctCo><>twhdfdpLyCt+aQZZ|Ty7MXOE1m_`yG(70=)W)0742_ST-2pI}5QE#-H2mut&Lvg`#L zC`Zszp7I5BS>k**POkBznl$GLUAo}5nfjf+2FTz-z`;Mc{8R7)|7H-ENmzno#lEHt z@wKd;$SH{bMC{<|9p8DdUmU;5r6!>OoDQqTF=^AyaQwh^qnqM7(?j=#CRn+!P_$iV z6Btu{oa#;bWN5#>+ky^Q*h~*K75C^B_4kBu=8Y>48RAqgKf&-Gc3vW!?=vOzSE&S~ z3II_qW{K?3dSnC>c<>CWE2Qus6V*m^BcKKffVFn{i~2GC&Dy(=@G-7fs8a@hixmM? zGv$l1M zSoUE7F34U@`sOjizM&kkaQBwj0M@NY?KoYiwh9Ai=)j(&+OtkGr@|T(*p#q)nu_c7 z6p1{HD`K=e6Nr9N4+f2ZTQtjUf}GvzCM{8%?DY)-D?JZ!__Y_b6I=`ir;4MuR%akY zAtBzazT33g3MF)4Ip2Tviakl&8%voxY?9N&vE*09EBE~hv?uz(;tCc~g@C596b}-^ z`RDlAvjky9>=m1x1pUK~{wP>B2uv#ZD)AM1w8u%-C8zv0x40a#r{KK>c@f9&4d@R9Lg#8o1WLm(cMWBk+z zJ&s2uniDKj?RYX!4LeEbqFaouWD~qG*hqhywI$OT!Dol{BrYJW7BWfSZ$^bdcD_uh zPsQp+z*G%{Jt?o@{1?$8aq}sxNYg#pUNg-9d3$9x@G#&5Xp3wgEUobkzPd%})u1<8 zl=g;w>n}!pcgQUaO6w2>_dS(d3|$J$5Oj)!5nl5<)ULqMQsZg_t#5@jDNH$qHK{16 zv?gt&HR-8`Sd)TY!Tw2Xpf6aIZcW6_eIx4a(C+b&K~2gPH*EF-N)#vr^c~nCj3|>8 zwQp%pn9|USuZJYbyhiOz2oS@tg)y%gVs{HmhRqA)-S;|#EgAx-sxc7SQ_xzXQ@V|I zI7@{qd?Grlq#K%6gfSd)0R=L9gUb=^no(TH6!mb{lS8b9%w~(H_Jdb=z*S*zWQP>mzEa+|y{r5FMfx_#uuD#q%`JI?m7sm4J)?X5T2@Q^dSX8Jl<-Yi6bkS3V$ z;I{<9l)N90;T;M!kU(yE4%2qX)?aU@bFfN3JlFCgp+gF^S=)JIEY})|+j23^VIXG9 z_(v30Pv=)2V_Y4XU(IXJudult;a5dQe0S&y!LRDcuduuFUt|kqEsBQ|XT4m0JY{&w z@l@cc@&xnzI%H;WQW-S7OY!jQ3j9`riByq^l!{k2m0vp%XPPBcNHDJy;7w>$R~e{* zZRS=p6kPBI9|wT;6!kMmmF2?B?;Kn>NpIj6*=KbdgA0ZQia?KAmjW6<%Ro0}8k4E? zDcUI*UNXhAQziak>;KGvuklZ~_gkc9)44YwCHO(2!Po>zEVX*=~ z@NASFY}p`=`)Wu$C^T$Uf)h|{K(7nc^i#ubky3)~wh*FOzbJ55vv=?WBm?is-9}#80PZ`}T*l)`NECWcYE&GKw z3x0zAZUUca`Xi3!V?;cB0S6fcEt56`i~)icW>^~Yt!5)bD4KnR1B-FI!e@a1wA znSQGKE{88(-_~ERl4T&CGj4%IJ63UTK{MJ@c^fUwe|~I}@H|FJ8U+qs(~Y@xgVDM4 zI~zjCUcy;^HoS3Y{93n63 z_Ks0CDKCLA?T5Lq`&V4I{VpnWCMu-8a3cGxD0l7z9KVd**UeKMc9EpK_I(u0Z;{lY zS9kaHSaLu(ww-8gtw5%wU)}xdtQW=A-7li!d(P&mPTT^gp~>uelVLwe2-6v8sLV)1 z^+rR1lAAMe&%L_XpR$$5lIkGjg_1sjAKUF5d?*`Xe28hd^tKI`AsQ}|4F}q`3yLOQ zA*G;8q(1Kqol4FV5?TX@DqVKIc`=sYkXD!W7M=h3`Iu@TrFIqJ>a;7C@`za|AA#M2 zLS%0^XqKo%Zo5=0D>w1jS$}2CF!_(C&@7AY$C)wAN1$}Z(Qd^)I$AHFr~Xf@(>Ys# zhw5zvMkd-QmwYxjDIZ5BA%Ehc`rf#x9@EUmi$ya%aFb|_O>8FH>-1xo;kc~+fyKrb zsl*0}5pF>N24^@;QSZU~Nbr(ezNd;4U37K9AE(OOm-E4Va=FU13o7U0rx}Haml>cC z=!*wlGx89=Y0UN$!^@-21bto<#vzq^;Fu41LZ22+c^lOSFXzEAz<%`eMFs|sF|^)>FQ z6NFbCylw**WTt4AOhScS`D6=*jt2bAE-hr*Qi}^1Gmp+|YE$)?je27t&o9X4L$*Oi z%r_Ym9@`h`ByirLabA*f4&X{tG^1ZDMVu{Vxo@SIGVzSUL-&!MOShz$=HmPPcmhXx z{_%E-sSMAvc<4UTV_KI2lntEK!bA6wo&(4?9p8uG8FrNC>6s7{j_xBpJL-&!M1u@}N zxR3O#!?zFce1?baBRzX#!qI)C=gf_03p{o_bRX%t4a%#r_@0X=?{6sC`b7UWy(FTlR+D#MDwgiIAR$ui%tVi*~*VCaW)LcF*#V@#=UrPz;I zEq44?Yul!9e{5xfoY4n5A)adg`Y$bnMF-Wn=CCwPLh0K73P)fF1s4HZ}p zBUzUC4lu+rgjx-`^c_sP*yi7=Ri5%wE8dCpu~MWG5}WlyoiE2bD*#!UHxPq+pLWKa z|1el9??KKKC0is)wn)2}CBr^Ko1&c`DH?V_j!-n34BwC_#mw#CTrAomWfrphZOfgk-7;I08_QJJKD~PV@Y^=n zE^QQoVTu;^UtO>U#P&=EX#+b-yHNi<+7-y2#@|m~{-0K7=qffXtVq!?#n1!ugTKuO z?vUK7f0@?i3xKz-zy}^r*3lWqLLWt=EYbxwPwdz{$)HizWF2Kh?v)67<sJ+CaN<`$4UPz60v-t*cADcHnOUC--#M3&;^_zKDy zwh@BiYCN@gcHr5A=K!8$JiW0_11UgzAb=HDYg4Wf6Oz#2?$FLC;&u>p1wphkw5|9B zUJi5xusX#rBx;z5tE2Pr3zNJF1;FY7B-e!L_=RENgu>FifexVdh%3x*f>0Mj)MdPqf`gFPv{p?*pbt4(Pz z=st;?Qe%LXkUiF1)Wxk9rlOkae>pU(84UoKiAwj$kc4Z@$kq2}ULv3ne<_!U*bd;P z`I6khe!w)SO{U2tZ+M4#FoQB)m?;D{oO*@Ftw<=5~#BCgEjn(qAFJ9z&2&TPNjQ3U=NGZ>~4vYRsg2pY}Xig(f|s4j;zx(mOg(LMMDjgppgK%*E1t8xlUU0Bh42xaCjzwva>wR*Zk7YC$jB;Z@`KCs7hs?x$p-`4BtKh~2j3+`-du$P@J{=_&@v63qiv98UBGFTkNg+ErUf1ADL$0QtTO zttjOC>!wULu6T1y(5;>WdlirRy%#ecTi*){XLYCcHeen-I9F+R?q6pvI@w*@MUodV z6gDVwsc>jjWj-`Lv(g<~ zr=pG5qm4iH;S4m3bYO>P0J<4v@^lBEM**1z)JfFe#vz@%(a@&?8Bp)(eueqa?{dDkvH?=Dr+pQ0^c;$sG;mHV+mYyVDx{0Qv%x&Lw5GU; z1kUr~ZndYD885hxr5I;larnISe9-;0z~`1}frIfy-SD@ErR1Od1blIJ7IZc=9k6Sy zO}|J^f?aU15kMzj)u(v74?wszN>;vo7T8fcgj-D@+;&m2ueQ%hU@Wu;Ob_qQF!}C9 z%xo-w##&`2T&8O;Hgo&{?&u<3{i1z#9nL}dQ55p3e_;~y-w)W_&4QZ=eB?V~rSUd&bRtY=>DW9pf{N@v)fW~XE zFAjZ6V!bmoIdPPl7?+h)dEf*9Dx3)$4*)9s881>DB_W3ohYwH}#RmZJu%+ZFsJR86 z!Xt19JcU2fLFgx`HrD#CgUVQ7C!F98%rg^0VU>VT*gvca^G*gd7R^FiAPvzwbTD({ zHPjZgLg75D3U&aN;;zV4!YA0#B3hr1ktbC&PF3ujS2x-AR|5yj|5iOdn~E+H5~z!+ zrS>oilTVGnDCEHz1EUbmRn#7HICI8eDD;_D)*1YSeC@p}xHZ+d7ELZN2GCTQMpJ!X z#bN_QA-2@mPN_LXfGO0@Hoz2UI1EQTX`{b+y(k2PW3agXF>=!Dw=9ssbtgMbIH zLyZ6)j7EwQ@Ia3*0S{29psO6(?iD)D!G%A^;Vg_bY5i$96EoVDxTmNMqQHFaipc{dg?a}9m>Wffotcg);6D^oK)^d3 z9#eoQ4R7S@^%ZAUbx?s^knf=>Nu&l;ji3S!1_9gN1Ops^3V?kn>hT^0fBY)4j4ffT zgTQe*f6DzT5q~k_^Xy7Pe|dJrIOTpNriZB372ppYP06E|e+4@(#Jb1Igx! zWEbkmZnw)e(vS2X=c)T&Ca|XGBTY2xW84=LrMgC*y61e>fr70TiF~WYnZjp?@te$x zox@N~qa#0S`$Qn&ymBZSA`>*aWhoQMDQBq&otA%@Tvz~~I;;a9+o z!su};giD;juYxlYap??dc|-iHDU3KK_pzB?^92~Z< z<4g|9d3Bi1oiwJFWN_X#Dd$06NjektaH|TIX7ysl&^rrvVqiJp78ho0Q`D~X#)TOY z*XkbNS|O+>G&3Egw;H9tYqb!;>b$V7fsFMPx-Uk?lIx#N;4_zq1cZE5ul>M-@E-M& zpX<S1*BS51RQga!4@>_5EG> z{g~7FRbCFn#b9AbByVZ#IQDm79QPK{y@<~F_{lzU;wB)g4^UR`zy1>!gfdqXb!G9t_RFHHSTcUyvByfR9;8wjvt5QW3AvU8# z1uRizOp4y}4kWmH9IMzzmPluvdWGsc5dAq3{UeNe_E>ssk6AkqeX5B5XGCWM@98aj z%wFTNqB4)w8C0Z$162qrJ0=xbMWSPos16QEsS|9}iZ($_lX)rxO}PnDaVf! z*oUY_$hK#?5L_5STf(?X$dy6SAp>H>3Wk9j7AFG9r3dG2Z3V;!iV=>%Q52t#QOpeO z4b%^HT|ERs#Md}%$BOr4l>efwn$B&3oPc#>dpypz`lI1D8uCK{n&xQwqtwsZ3lVMg zM`d48k{D!09aP&ayu?Zp9nl{>1I3NdA3aI65#@<8I;8%HrPDrL*;1)0X^k9O8cxgx4RO6jQn==81;{gDmM_WGmoU;a-0(Ssuot3MJ=^~y^^c!}zd zSZe5x7Mg|rXwgmoclAdn;aq1_e`F)Bep@Mr$eGEO2bv+}U|4+lj*xPG#E;M)z0dc< z>yMI;Lw}UF0|Q0a*dD4sN+yTz5MbtID60XOnSd0f{z#911pU!}u?ka@{({~g4U9}c zvp!Cm7#$olBoT@vmHtp9b)h0D`S6OQoiK)Jr${4FQi*&C{{eP)Ny5NQw zxhq%8f{l@2qtqHnHQ?{pA{C7_1Rn?ZLg%$e#W+g$d$mZpW5_rb?v!(CY0Qi+#Mfib ze`;}r?p6DZIz!36 z>XQnE{I|Tl{P%nGNlPx}FnRaix;|+OruP_q(&ukWxsUp!w?6uv`Xo{Mek^^^^?ya5 z^y~ssiF(OD39sK)(xN`8o8^I_QlE4W0|YMlBYuQF=~g%n)hBi9q(14#f9V3&-;P6{ z1So}wKIxxK=xF++=b&)nhTL!yHspjx2}0F{c$r3>lKC(?rKLCk2#)_h(JAF#9V6Qm zXp@Z1EZoi1F`ZI(qcFL@U#GM=Kc+AatsWfgf1p$91Ff~tMG0+@E?PB;m1!G|RC}G$ zc{HCtew|W$HV0!S7#e5iPV1D`4`=j)n0PolyOQPX{5y0?Gev?c^aOwGA`<*PI;As2 zf)kM-DtJ6PrN%5)@npS3Hy9;4ex1@1k>I5*o@o_YrQk@K0pv_^(PUw^#5fSAsS~lY+UZQR*UPzEVF2N#Z{ zQf+3h!9D{wFrL2S%*Bf>3~kY%RE!LV7HPl+AM` zCr5(3DT90v3F2dr=s)Vutg%4Tv%3*Gq>8_xpnc-8N`1a*bs>vuSuS2Rc14C9R@-Xyf?h|_e{9MO zOCKtZ1K5)o7#o1XL~*P3Ia&%>jRZ`#OY&(Qf?l+&0{sCY z2^nTgK_gcQL6!E69u<2>&P>msjjmzab^A{chd1N^0F!Ba@XEMS{wZ@>tp2&!!-XfD zN~s_q#p(^_LWfY5i?i@$+>UaUmN67;j>g0-WyBTuW3E6H$5QFZ*el@l#H~Q&6^K|N zBjzr}=4a)&peL>pjw(8;+##ioMJ>4niApd|w2@;1?m9=O^8}(=ZCTZIc%7vr2-SMv zU{}i`kIy<$}lwtMC zfpyKSVo6uZgE$Xb3@O_*4f6~PTCx9xZv+MjQ@)qebo3*U+lqRq+xCYfmkaHM@E#t4k41NZWE zoZX|2&Y%}u**UmBuMvT@2_MAaV6~-0!jr(dIyBCqeFN)C7L8}bVg8S7)g&6FEOJrd2eBU1&sM%WN);f@H@Y%jUR4b6|Jg= zY1;BhGk_09nVp${ba=GNh{`paKzWFIeNVzOPqPdeWw!ir7&^dGG8liO9p+Z^QDB}{ z#x=o2C-3dSxM!aYTIb0|GyjJ2Yr8-PZ1e9#WpYw+KWnO`WH;VmuWrvAZMT&0JY+Ok z|G^|*pApHvo){+IyDjH9%uRDp;SpV$xLe{snCzPl7{ydsJm?p{S1jjT#&T9ST`9s@ zN=igtmw{7n#HRJ!6d9HQVdjBw=OUc+<5t)ZUKnaocLf+@|S~s}Q-WX%oJTNU{|F9lx+7)~UN!lFf8$g3Z(gPgSDL z^gfzX2zMu{%uP6}1Tm@-vjmGY9l9{_?5sH!H)Ml{K%TOQ>G} zul)|69dY#4-SIK*gcx^Xj5{gD-6h7Ith*J}o1qMNPf37@It~}B*KIOG*ueY)6ZB7f zAgxcl>Mvn8ZfV=(R(biZwFp)SJBtR>CZ4ap@7%%Doi$_4u+IR?cq&bwyE9_<@;vHp zkNPtcR@T(cIF0|~lq|2+*Ax1U8P_J_p3C*;g2!{O%uXpH9kn(|IJ;Zl;k?npPwB9f zM+@eF1B_2~hw{u?j~_V?3r*&_IP~D$%yqXCS_X_cK8F0==(bQR{wzRLw#|1 zmmnJvbYs{SOCtM~iLr~;VLZ3@7vdrjfoTu}Un>AwtVJiGtiZ)vS2T{ifnL7dheZBm+*>^!sYWFou5unvOLW= zn}gZD8Q3eAvYXek@i^Ku(XI`{8?I<}fP5VI#fcj}Z;DvBs|1wZ z)1ye^hh|1TJkaG?z;7H4#i$5HsXv?E`p2JG0r#LoOfk{TrY%y~>h9!xrA9aT}yXxQ3OW>f)n7-hw2FZBE=0RNRc2WqkA#Wfm(&QSR0iXBcg&R6-f^{-AVlpbA-_Ud@!BINP+JsA7 zOzu#woh@_*LIEDmflw>`%%gF z_~N?=HAnwM=1-5h)uZn4sJkFyD%rg;CV2L2KEl@v8M;m+v6Hn?EUts$(~KG0ccQTO zB4@#&6fv9s0JegXeyGg}N|>`ZML}|`mQ_k0&?pO8ys@YUtCt;|Wo~k}sYBCnyb41e z9E`m{Pog)2sP|ievoXI9E`uyOo3&w~EG0Wd@?e@Tu@2j#hQjhXxxje&bKlM zk3#Ju|3$G;?vadA^e;!Iua6HhbDqfIY7xf=f*FL~LkF|>;=&_%CyJfDZt0Z}9>T^# zo3YBcb$QsZ{b;c8sc1O8$HNxk%c%Gw7J=7sVR<`OnML|p9LWFe06Zzdkf|HZ-;2>!UF<;CYQ6tba6Sj_x%j67y`vG{wY(1&l3K52g)^OQZ0w7)f& z1MF;D<2N#?a^aH?pVRd)4+@{_;PZxRx`7;!-d zX;(iB4!O$!(iQa0^WW-T(6=99pdzZhR96wf(9*aGp`Ngv;^4fdJ#jW>Vs*-O&^+7# zA+Q2_Ciq+-uLYwIn^4=3w^8dRi!E>Rs^HxK6>Cb*6$o3Y4M7^nsNkp>b#0qbe9I%}(~(Fz!C7i5g`6`Ef&^FGz1+cEaH}}Ws*|)knJf?oa&Z;-ky}bZ zsF;@8rs*x!2&GgS-L9lE9pT~nt$f}~irsYlK5j>Bg7#2&qdznvRX!((LFpBX}05JdDk z%uA4aUL)Q#Em?lT%3YbhZdn8!*aYFQ0~WK8yJ6$T5gb?_%Jm)6WU zLyC|!c&B2wy;9WRACdJ&=!Mw(#4TsPmR1Fk0!(G*aGj}0JXCQL77o{^qB&pnp#3q^ zjoiH-%8oi`X^weBoTcPtMhw}`ep7zkb`A$!gIF_&1_f|$FRVaAc@X*PwEkAHyGDpL z@KJ&IrYLJsdH(Zbt$mUwbm6B>-w61-EFk1TW417505xXswSG=ayfpYcKEm*Et6Zgx zBpe>)nb~;eIl?^zz8jsuR8~Cd9WCDMu%%?m2~;mmwL*8eDo>z|o~7q-laU@w*Ksy` zD`3YUb9=ID_#W<#wUqb(KOK^74PZN2npBo%u@O54uhd)eC2pRBo|p#wG=|kIAhBWF zot3$wj{y*VSrumrIC=onvJ5ShDc;6orHHjssyjQ!UUV|N3)pbCB!1iKUXYW@*Z_PB zx!{WfBIB*vzTGX1E#R=VQDC!*hB6rl z=MOGZ)W-x#4Z@j@h{07KDwMHuY!P=WR|%!EWfA*IYk-18sV!lA{zE_GppQIT7z&Yi zwQpQlI);SRvGx+U9^52mMR$C*s zWXk*paW7yc3JM8vDSutj_Q6?U%eqTO;> zbZguXwBj5E`B~OP^P45}%VmByA7_3Rk)KQE_r@18zc;>SegZ-Rr7(#sH)~%)B;Z=_ zXJHU*Yl1m7M|9tTtSRPEZ>r|(ffh%UPqD8kJSr;DB*8`GH7NWh;SHS?TkG{Iw$>7M zI4khC6OXUKE?Dce-rqGGTjT+oXHH0#Pr5yWEB|n!6iz2dQ9~5JU4)sq?tL8;k0L#^(-j1Yjww zLxSLuYrgyj{*yrXQ_UDJT{u4aa(sLe86T?4u4K7P;clMnsp;WFC3}(q4*zo!%ZeU6 zsjJcRnOY7CfSym0c`D2Sy-r1O#g2Pi+ZjLXp1V&lW8$Y2jCcH_igsIgm%{;OEX> z!uUndB-U%=u%+o2C?vBk1!w%oWGOdJ_APK8L>~=rh43DRIfig7shuwxzu- zy`K6)j4iQy04y$Uvx3x4#%{L328M$$*aoS^+bxe)<4^JHXrs`mpGU;ap6dT8*;29` z?`VNkZQpN@2hy9}mbVwBk`n}45_~QuY7c|KGwf=sW@~Q&Oj3kF4FC%)YkCSIQONl-?w(zUs~5qmu-R4$2YUR(SED^X zdu_DGZw1>uo-&*$%AlYO=-#(JksbM#m~0H@KVO&3_Mm&o{C{I70k2i}wx4k%jx@WA z!I3h-krWO>a-^+EEb2UPq^UsC`NdK)T~zJDfsNmQwcP;%o@B*H01i!ZgejdH88ZTP z2TZ9el#)s~!JYl7E>YbqiUpoDKT%({S^YmH6?OIh)WuRlcngSImPNA>iXzvQMuPb4 z>*fZ+8KeYL_+m)@!ZF1EO_KkoxY=C|kG_#GCxLu@UHBTtX@e?I-?^qzDAC;N6OG8m zo&AJ{pQ7%i@$S||^r5)L@1Z3Pc+;jNaI;U;P4I*JjG_pBaNb#L9oYhGC1T9hK#KRp z@&hy)_x_r8LLvcC{K{*|bvAJQnkZ4^fg>LeQT&=h!W{MwK@=-Kl0>oMvxr0>kitTk z#l(rQcb-8wti$XH;J@kmO5o6I<7rKB<^N&tO~9invasO}5Q(^SqqamvZ8d6KMx(d{ zgJTD1?3RwkQ4mLgxFO>jB@tAXge1^C&6S`cFrvg29JiFBmzQQ2BMA{b!I3G zO57kaO8)mfRkxQc5E$qGzUTRW9y<5lx^>T~I(6#QsZ*y;WwJm}6tE9c^*Ru|PC1M7 zRvrZojwes`)@e)6kk&-h233T}9LRF-e%gH`S6%(OxWl;bJeMC4(z_gaNaG9>XO`dj zX%xXZ3Ek}Pjx*n#AN_7-d*8YAcUMQh<7s=;Xj;xTg&d(j^EKOHP($hytWzLMntYTK zQm>nD*4p2k+WMO+HD7> zx8oB0uE3A?9sRD0%g6hUewBFl7yO>WkM|w@?mph_sK@)y@cU{vzmchKhY!DD`0>7@ zU*S=1$4&U%i68Gf`fcv*c2wi{DSo`~=-0#JcI-UX?dXOp?>qV}JkITC{ksAA2je#p zKl|Md+;7D18~k|R(a*Lm^UC?N9UpWjJP}?^Qg1*Mz?}hl>0tO=4Db{jCr%l)s%kq} zsd#`))XZc&L)NQT1-VF4r!LyaF->Oa=7qpd4Pi}Cyhw`fO-XVtBA&wTucoNW1k*ze zyjT&6Ab-|FBBD~gp$iD9r9@t0+V3@((3djRqFvi;L?+#?ld-R0=}FckhD7ZGurHQu zh40L2ZO6!Ivik3$SwHeoU>TF}Z<5a%pVn)^ug=m^^l=QV&a$D996{?Y7%bPTyQa{$ zy!pnlJ@xMDI(25s)|M?>F-CCnb)Wb9AeP>`oXCd~sdA|#k4Q!ABp5((K=n%O|G5z^ zK=LF9RAYf#pAU_|ia4M;v-JVhHI0ZP89ku7Chmah;Q$Vo7#vVtBL`GBM-QmpnUl57 zS$ZMfa{wzn2RB;Vt;<2|`pI`d#m+fxB`^oGP^kXR(E{XH{gMJ%zdEP-sMh1OqA{nj zRl^e+0$Bd6!QlwfN;!3E0On)W123#|WUpW(fGvng1Af`T08P*b?@10se!^kWCA$vS zfdZWUo8*M*?;&9YqOXn+0hnfX947$VrrL%nQgydu4M>bKO|^k&K=j}r)!XqpPFSn`M1H5y?yduYV|{G ze2~8yS%m!Q9gv@4&Ev@5cxNYQf6w{5q5T*F#Npt&IZ6A*qfltHc>{_MYaNa2b(qK4 zJb>^W=nfBdg*33eg3t0ta_S@oO`MU11{NAx;N??d8(A9Aq0|_R%Q)gHr61-CKazW_ z*UEv3(I5^iu{)VIwbrRMP@1-kA~VEwGH%s8U($w3Ge_5Nqup(_?rvZ*@cG3nrRCAx zupkDD;$C*QcUibL?ag!Me-4!VVorfaqv7sJQcU7Dpu??pPW}}gFy}NZ>c={qDFRM} z?0rU|?b5*>APh8er<#`y@mkWpG;b2>q8_fGi2|OPklsqki>B;@Nj)e^|+WH3YRfow)#wXr4m7B8onD!*M7raYMtYehW|tmK+<;9@E>9F(}{+kjaAGJ8-6BXK(cna z;g`1Xygu#i@0@%N^!PS?+c`N^lH2z0DJ?Mgwz!AxPc=RNmByBJY7ORp_UH_M(jiwc zRIiN2!{AF0`ItIEF!D1Lf-dU!@E*q`hh9o=iNiNT>E>G5yErJPg15vt_AN-uS$)IA zn5>|sp;kTa0Iy&r5-b4SrRHsp>cPnSaPUBoPl^27S6*HNp`raHF;=rrIel;A7{?nq z0}y%fHc!oFqK zdP9Y^Ha0OUTSIEqq+f+~8f2$4hlJYB3<+#kl{c5$<sU5 z5Mcj9eh__OPyCR=0`7qyjud_n^_hB`ktS{UA+n&;{4fY>-6fE}n=$*z_IZ!~m< z$Y-L@|6X2>)cX7?(dUbI5{hURND!5t(!=!G?vNR&tyTI}2`c@nIF(-Ol&hf9W7hL_ zAglgvjy6O9&>sg%eul7E%Bny?a+X%&PQ(VRH=@|n)f$>*FbgH=UvHP;qL|zWSf}@; zpZ(NdH4xXB6R`(`)1?f5B+{(h1V!l~IwevwB(^hsN<2}l0qX%VS#oQI`qRHDpAd3G#K^ha%;QOvBXGKF zGxXfky~X``7xIdGHmyFowT%yPk<@v0t^{LN^?xNZo!y-Beie!=<^S{FsW~mgcb;6>JJu*jEt`Oy;08@Y{n! ztv^|%j3b9Keo-8UuKIbOIFwNSryNQIo#N1wI?bWmJHesLpXxM+-Ye_&VD%0-bPPf5 znL{tlmz_WAFWV{9_JuvY4zlMxGmUo4>3`&!j6md8XvjPpW5ghXGsd53MiWP2KAa zz09?C`T}E2iI?W<)`e#*k?OBB9=G8c+DY4fmiik1L~atqb_F=Gmt5c|2*S&)2@A+v z&u)_a0k7JAdiP_ol5^;JFj8Tu(dArpKqw`2D1G#BG6XimBn888)eHBekKP){6ZjaW zz{hZ;4YJzTq#fs)#c{3~`xP4DIM+mHMlAHXzkf_4_MXL&G3ahg^AI1L@X^fpiN5=^Zib_|yoF}?3C28)2ycOj zTUv#ca5A^X6@H4XmI4Ahqfi5?c^rBe2$}-q^=A)=5#UIeVzy zGk_Gs2e;2ajEn}^WR1)w;Vf|oSg(%iG>&ZIC|bdl{-naYf_>+6?o}{4MoPami(2Zy zP&`FR&0bGwYW{#=&7|gh2;seI#@qvgaJ0|m(^Pr#74H+-^ko55XJNW6u2`b$<6p%A<46#1G(ADO2~ zdj}V_f%>GqL_LV8+u=(LE>wgJdwP%y)NLcqJWDm!N+=$kW1fxQ5?{#*YB3IMS}j>Y zW46OtDw;Cg1w?j(k1_-~&)$2oS<2`>SdKniulh%^!O=iOHnbCt{+yb~@PMx!6O*j!YfV%*T5wJ2d@)ey z$l5VKQ}qT3mAI zxG)c{?E!1WY&^$g0!}+f^K`@BWp8xgeVeqA@Su!F3`oIqN8rYE9~UOys3<>1}C_Xc=(E##1>I#*vE?sS~6jrqW~ND zd_@#n7=eql3KPOC5UL{1jP5Z~Zcuyx8HLdvMh8^e1KIu8v~HCRQ2f z^6i0coJI~v9O&{j%zKI7U$U%%1#p($&S{z5EBu<1%Np=1`;{c&<+$BWS z;Qo}eTGRFO1b3c|d$f&vG;!w<_h|L2W;oMt{CWVF$yX)@BC?w9Hvf7=w_vu7r~rsi zX&)9&Ij-Imhqp7`s7&xikf=^AN^%q}TY}P{p}C;T zhW6Op<}utB4dgTusL&*yZrJSzX5+?DnH9U2PBHEM4Xt#R``~H10-tf3yBCsw*FRYo z%e~0W@7Jrx2`*9(|6S~f?g6jqvhUz5-jSxN?A|Bnm1qmWd`<<2i(`;KL^=l>eBmS(*mz0qc))xrA4uafmm zy7~q3Hc(tsL0ajHh}#VM@K^4H6m|b)OIJs^@$s%l-w_{gM2Z&LX4tfaUTU+oRtz#! z&xbWn?_Z`X{{#i5Azo*Ac;#0@y!IL}P7jA2Ld`->X-60qyoPwXA!oj%ai186yEFC- zpWwEYgn==60W^80su1tdS#h2^;UQhyTMfq7Ft6sKIfq6yWhalXoyDPqqw=}&J<;wy zXK%7c=2QbB-++jGpnMvDJ*>A2;Jb}BfR-0^tisXI5i?-Z#HLP+xONxmjbfsUbdPqC1<>G3DYqQV@KVlGAj_urWSGRbpI354$v-en3x|2S0o|)FXJP z9yD6JNDRv7P&GxDV@k9fgHR4RpFA{WHj79fG43vh6OuQ!N+kCFg!OwY-peY`8Z6+C z7}jR3^(dg;QiulZaIN)1c{vg;Xaj+k{>lG0t+)QR%k;g#Vx4p(c^_L!cDLTTuB3D8 zttooF^@oidH1=hgehz$;*QpI?LvdnlZ<+p)5Z79ppmVkEKOuwyis$Iv^UpCu+wjjP zoBn_Pp`4%^;!&H5JIy~2!Vz$H{4c(Yj7O^})WC$xp7M5<~SX4Z$!@B7GSb1OsFJhlbdvpCd>V=)_T$IhIZW0iM zJ2JLW`-rSj#g`l5)KmM@Vt*If=)du&{XgnoT_^t4Cu4HaIe*$6)aBy*X&bbEb!;D0 z)&$BX?1S2~fAw}OLbvhI_nW;>Ka8hfiuuzvaK{b&tLyAdAlRO(Ek{G@RPQ>nvG&ft z`z%;WI<@O24Ruk!!V{WGDq+#fx&;1^42U;EHe;O1%^3Hj`HNQyE;w6%kRWM}q>}X# zl$*vksm|Vb8JHuwQ-j|3b;|P|*h9w`@4)+BZ`rvf6$?Ogm!#KyaWi*RpbyY>)^?)Z zSI7HJ1f@6X7{~jW1_40t#`j+H#sO5!I^}D<$DJF;-rs57_!z6(9rDJe`^=zaeD8P5 z8;r9C`@ zQ?JDF#Ox=v=2XcmM59J*vRIIMtdE`674hDa1J0MLu!-r2v1j_T2D=K5QX}8M1f_UD zN`-tE?@k-U(YkcUUaOwR+J4l#tJUBJWlY9T*=vgN49uK|{;sC}`b|sGo5OJHD9FH0 z(@Z9QPX*D6aKnZAx4v&?H~CoK)AXg*8vSb58 z@;nS_c>}}QqetP-ZPnR#u%h|FHgjHNXDTU+3zYy|D)eQ6zOV(5xI|y7^rco`>hz@^ zmw}<;23!zEROv)EEoRpakVF^EenICY0CedKxdBfeeM#3B*+3UACfDGdS6}E0fTvu2 z8Ky6J`Z8Ky^7VzyfSg7864IA)eVMH<75cJ3Un=!w2`;EWm42$j1r?}gBI<$)nimcF zz0#K^eQDMgwmnd@C*k7K7w#j%lSg0JSF1Q+fiABASHD4cc= z3l)FB!iB=`$))&xz9?Qp}9u< zQU;R6A|tsajP@C*&t>m(yN}*Q5!;iaw+Q|p+U|2E3YpV(yN_)0Sq|ei|4owZK8Ozm zmFPd%?nBmq1U4IeI8}~d?=7Z!>MqQk+Og7Llc3%#7`IdKbgb_)#x)ksJQ^V8s+k5D z)~Ze-D0`MIJAF8rjiII07Yq9jP<-i$_9cHK#F(Lm>whQ|J7w`shs)u(yCXN6ruEcS zPP#G4;R`Qk7c#qjLQ>_JcB?ku14E(8#_R>>nUG(#Zjb^Z`XePSUb0G3aVfygqFTfN zq#7dWxst^&rYIqG>gtDdlnY_jczER+-fRtzvQNWXuuR}FeVp{aM0jt!&SIFfQQ;Yf zNgktMg=es0AV%B%ZOw78Pw}*m1N5R{ZQ+Hoa)^zQwdz6A6|07x#EnT(35?!#>btLh z0^#GeEZM2QvcX@{(BSWi@aJu<4KIp{X+pq*0Ii~FC+J_+oYdWw@B7tzDBtD#P`-oq zqI^7dWhX?EE@g>_h0Q8S$ECm>;C!T3T`FaiSDr>OgS@qcL@P;QW-B5MkX7R1H+Gbi zBlS1T0n($BMR!6_%Lm=>6%g?+Y~{)5uP}Yz7TYftZ*TrKyB(4C+$xB)d%;{CTAZ`x zB`wbJ_U8YawlAK761F4H+S$IyQ+%{M6JwvSV(aaTPhbmpJMyf(ozK@|g?@Kd!=VIa z%QF#W?QdU<$+P>a66IOvw=a6uP@WA%tb+~>&qv?QiP>0ix#1aTrx@&P=@7R+f%Y94 zFELnh!=XJ`{^v(MSZ1|!RR>mB94Lbien(dSYo{m z%c0XbYO2>?Vi-$37$q#h5&!P@+x(@W2ZFt=_J_+H!jNBbgBCPHs3&w#ycIiZ5veTs zsym<@Mm~h0szPnL1?Evo`1NYtTkQY7C5X@9y8A#FjbL1>P*dJPs+IgG{B-Sap5iyw zr4Z?LYF4`+U9LZR@T=HIcj%A2{OEdoB-rn*7T|ApjTLB+&X>o07ufkOM?TC@PrZTp z)~N?))22J6h>c~rhedR1zx#0NfGlbvG0P-wf;E}OX$mEoj{D%gdFMg74|YRGos@%c zK2@0N_!{`o#JKu+kTt?8^~+*AcX^t|h?ZI$iezrBVtD4jz$aXm_=yL>H4X>*7t2((@w1|Wx4X+yXt0w)5c9D>z;l!B2gR`re->~mxn^-Dv1_pjjgo)h^AwF@8?x_a+g29;|96QAseG5hnQ$n5p-;3^{ItW^c) z!GnwUs`72HovW+!6kTxFV3+e0alrHSX$gk!cbUo!P8}G^VnEJz1kKUlTp)a(4wMld zEl{B@h$5^q2+y)z#x9B?3hha4v)<*jl13gjNbf*To@v?_-GK3vU^4}SR>j>k4jUc(NRPd0AVBIy}CV$h>r$QC2seO=u4=*K^}z0 zR_*+(HUofyo3r*lVG*!hlo#Et`!I93&}@r&s7};m|H9LAFcG%g)8JI8R$b4t5z*JoCq*cu zDYxqLv6?R-`cwp+z|k-3PURJ$f~OAo);}{2E3-y1Gj2GZ}8az>qPj-Qfm|cr6xH z?eWBaLu@?h_c~j(HTP}@o8Y7AR5K)+Y=t^B`cZ@G-tI>$@exN5&=sDvRcgjldIV`u zJE%f&^!iqA+yg*dR&Cx|T{SpmvudZCNT6gwiwD*`;l;OWPb@+J-pb9h7z= zpz6{#n9?@=m!)lbOYA?ov{#6mrY`M{Je#2$s_|7e-rkeqAp!o*H8hZXiMZS6jrzq#+ zun>{}%E%JB#!xM=eBg%Kf{OtbMxzPM0v4fi z^)gSW%@Bv$-#nolLp7C6td<<-#WfIVcNJk68IKtt188!bb%rDs zT}+)@F6!Lbda84E0-RMiP1wLWg>cRhI0X}(4-^9u$e4$-z@4Q(LDfV1kLFR}JxQDp zlv7b&aRT@@^u>J1dK&x-zHFeqK%04;lV9V9ax%*`IGF_oQ4=(D%3tuJ#hvs9HYT7d z&JuCoh90`*5}3Jp#PQTga~zd&*TvW9Xo*JY@S>{qqOp0 z5kh=HjUER7U#JXOll2KbgY@}1lMkEBGZEJ46MD`IqYagbJPGK*X?98u zj?m7DoY&YZ2MBU-7-cY0xS-L!96cNSP`Cg`z*O4y7aQzRruYkOAi=%}N{AVY7)C~117|2i=fv@5fvnX9r^)v?H@aJz^AsP#+q;5k z(4lkc0$8PR5l#R^OQrG-jxsX*thU2h`{(%#1$|UXPz3nZU`o3XAN>)d10@zj*9lIS z1E?_~`H8p*2T}=Mqq_T3tI5lIi}@>*Ts;8$7&!4*xPk>D@2alw_6o88-iU~8h)%}k z>71+=(zrfda5fK}&7?44)_MfHD-TdkSr8^`@Wf++vO_*^prlkj^f$V(69}3A9)TF>DP=_|;IF8X|^I@dZQs z*TC!pM()mlbYS6N7TC9N(w0ZXO{DO3j5jUrJ8*&7X03YS5^+q&;*LM&74IFu8ED5| z@s@iKctaTDnHNxHRH?!aTwkS**XEB~pAm2MD)kFSGKg6BAsfv%cSXPXkQ^uaoLB_h z=iA@Z@*B#5!g^Lvn=ksxcabW+$Tf9tHqD^9sOv+W<1!qU^=&@ zeSt_iwQSEwa@D#X+Op^CJ}`ty63&sP-7%aqA2t^26|y}{E%O4AK`DXL_Jc=JSN|J* zANVSh|8W>JqE0s-;VkJ1WnPP|#WaEq#>haOyapb2i=m)z;=^V9eiT6_d}hKn?ybrf zV)%sVkm<8%TM*R^HVP8qA{dvd2lh+n_%pBZmQI8q|KVfyzBGhoZQC%F z;W7)s_1WHdgk4n6^z9R$vk)T_+?4ZD3;>!{Og1VBRj(qRB@ zmOA8kAi{8k0J$SH z0ORAJ6u<0}MZOOhSo6SndRW|~y1Yz*p0il}{1Qv+o9~b0bmwWEbNXSJDqc;Y6Wg?f zpu?(iDA1@LuSFNz%=)Ze4>3-L4DaQ)=5Wr1qM2z|L8|&;4i-Gx?kN(V3AO#1Xa#VT zyfRN-L?rO4kIhpap5TASCwsck797@RW)zVP>?Oc<9bvn$Eg&Lr{AZ=<19$TsSuCzDIOQ&VLl#e_^=5NHF(&}haGs>Ou>2O3DSwcR#8#u zQBD+o%Os=)YO0`@Bcd+WTo6$g;&L#=CAO(wjF$=Vm!tBsiu>chLs6mj--YDX;dNv3 z@@EOJYs*WR+|Y}3cwP3VN)XJ5AcWVgbxsb7#6*bh#IW25<=!>6MlE5Od)u-T{x;*| z9A9G6)1#6ulfLDV@VXMvU&8CQw|@ARcw36t^k{(E-v*KkgsfGIE@kI}^EkuncC>y7 zp*b&JXin{f(0u553e9)CT4;J8G^bKM&w$jN1^sfuIxn{SVNLrd+ zEt{{(pkpByW}Y<#M^bX)AVbbaA%jH3=G3U`ktJX~)}FCqsu(LUX_|%E`c%x;=gDjx z#fHIR_r{7Ba!8LjW5oe<$I!-#`C?cA*u?-lA7EDqSO@|b0d{X#7$RVQ@1PUNCbbx| zO29;a_0`xgHvuM^a>C~Vv!)X;lkB1j%o{XJ^m^ZBz|_VH=;S*9cQfF&2;9vY?rx10 z&tb|VEFs2<0{~YWD^T1aAmLgy?un@M88TnpVxIWAMqO*3P>vy+)unv0r4P!XmOaOs zqxBZ*oB8T_eKS=(iJL$Kk=V6V9ROc{NL7lSM5+46%K=j@#H@z;Uu=EZ$kXp>g|X(8 zi^y7AbblT^uhn+!4Qyw1SPRqVDx%dH>QRrHCsb#sS6O_j9*~D<4``CM+dGZ^In)m$ z_dC!$D+F!wpto&Fc`~+L!FxhWNXWlC59(2v7hXm35X%d~RVZ80^5TZ5V5heP975 zV+nnr`^sn^Aa50146yC;)ozVzmkU_C54s9g;%?Gf>(bH zu&B@tvS?Tv37A*{2@hXPUL>o&`*^f%!Hz4;6Ir#pdWBEYw!o@Rm@k~USskfwYE)0$ zh(}<~$sFci#ja{FBwLu9UNFFu|MYk{M7BeL2e4(p=7IiIHV?q=!ih)RP>D&yod+e2 z(TpII2ekbTwtaUDh&wnS4(J^n5McykThCW5k6}D4knu1f!hCG{0CC&Fc&PnPf3xv0 zZl?_FDS@o!R^uVV&9`?-#eA7SoKI^|`xA&(!(n&oMY4+uisoWWC1erW9t=T~pP&L@ z7uEb$yQtb53oFIB4`U&8Hv$V6u87SbUL+iH5_ig=HISt+im%!?9}3WrZSjNPrcMlk z4?N95a5bW1J6*o{7z3%GF2)eJ8NGT(hlAS=RR+xmgB#bLithKKS3gI=V)-`NBim+l zl}+d>+oY?YEPL$L??b1r?uPDXo8iw|7VXtL*aL4v59|)GI{+3#HO%H8`9WCw` zu%O%T*aJU>9i$O+g5fY04?(Hcs=<%Odf*OqA)l%Tcxk%cp`9~;egj>wiqwiEuXxMug6BtN zuuS5o+-WB9)xO0PyLu8|?c2l$-4CmMJNVFxo$};rUoTRBu|MnWf?nJ^D_h$rhYvwT z7ORaczx6m*ep@e`;2SN6Ye3q?AngVr?cz?fmpJeBhntjPX-Bkfdpp? z33_#cyN(vPP)~#8u1SE~*dN?AAKV2Bu2tX6j&au}^|^UMWrplf@0lkQV@NNxicc|B zq?bDT31Pk+>J)vmNqO|mV$};bTJoPyc3g4>ZNPKW$W=Px{umQ+AE7yR$A1?s?STLG zyZyK2zo9I!^*CJsenbAN=--O}T9*74{1*_gwjS`jhWTIe-%oH+maZcFca?_u8}Q#_ z0@vohmc_04@AgOH`ER6o()@S1dD8qhfKT!K_bSv6k%G_Zn@y@h-z-+Ma1+OWnWyg~ z|E*Zu0sl?8<+tU(jV!SBcoDRZ-;n=2&}I_l-=g1w|K7p*j&br&!~8G#uTWq{ zAg6x={ySRW+Wa>Oa9hd0hvNC~bMvJ6?>+OR`EM1U;`#6FxrYBv(KnEP`Udh3H*x&8 z1m5*~kbk$ezu#bD&!`d`J58i7O0sYJ4IHA~)?&>!YXAOi_fHW4K=1ifkrRDplI$)pd3&}o@&WUHAxc!{cS2!t@-3@8bFJqgfV)6|0&#SOqDi4#+ zOI|Wc*T6LR?O>aW-c3T6bp*eoZJ`Zt_z8Hb;1+-h%?s24VVD2$IPA;V4=;|ohOUEa z)kEgR0TbZ|GN>Eg_%igHd*uy$6R?|E%`Fv$z@7OD-3*x0BLnU#;Xx^Ir8!v=uS~-x zfgqOXT$#qr@lu!S_GjHPUNLc;Cq6RB(+L~LUms%2G^E2*f}t`6cCI=HoerKI*rO8! z88C?&bDVCvJd6__oamd5Gt031Q|RpvCy_R734^2zkj;yR@au-a>3@j%fUpTj8m*IZ zk(BQb7Z-7)Z7)zDcjfb4xOjoiQi+RvE9oJLn!uWdXH?-$!Ul4VSKtLLZ>|(GACG~j zK~LJ%%XXF0x7)J+Z&pB;9*oiNWjZU>D%Tloc`{L#bI2+i)TPw$@aB|Fh=84%^2E8^<2Xk$hODr)iY+0F={aMf%V>ciTo{#;~q8Z zT$}MSRAiswpC#~b27J_GA@*{!hPPq#kfDn8I5S$0Ty?@e<9Vl?^=N?z2A(U2YI=2x z$5S)UrdPgtbIQKb>pHXHj-l)W z8x}QU6@%0@1(0Cd!{U5VQ?O~mcu-r`&K_Xv#iowi$e%wgLi^_gndr; zAK2(BVWZ>L_+SLfH6QuILn{4|;wr+WU+Mj{`9>-w)O8;>3-JlJA|aH?Mo$0dh-OZvQ@y@YAx&6^Q|0rs(4q*nnV(k{zH z_?Ur0mFnn_+Y}w@rf__{l`twSQEV1Kw@zlFAZFB;F+)e-}5&(-d z0PLglNA5}yZ{eJn|1nSEWB>JXi1Mm;J>P<)yLd96b(vR9r21)H=23;XS(?YjLtSqK zM8YYM$PZpgSC`W6t=9y|36IL;be0T=!N`ljD2{(&(nI|9E71E;fN^Sk zCNa8`CvruO39tVyA?U5lXIh=-R>3_m#ar{R9T57!1i_LF!bQ7@3lzyt0rUuHCPhidI@)7nJ#YLb3%i3!f*jDz#gWH>t)i5_xvJM;QJU@ zgCr5`FoGR!!1i1$U~AbS@2wFkkV+_R1Cs{ji!(Dp`2@S40XyPEAucnj z;{ldbP~=L>aJRrpOyHu_Gg57Gg{zGj5&N1`L(?e_(7Z*h2lC8e%6Z$E7PR!Ftfyj|4# zt+dZv^LBRYx55<@&D;B0zYUQxdFJi4t=}%;+x~c4`bh!SbIPFPqVg1ek)cpnpiQdG zvqiV8Lml{5r7q*}iybxY{?FDY zX}Mp;_6QC{CAK zMtF5j6xm|Y#U3HCIzTq06|!@q$i~DWo1~GYnwsUukojWBE+MjbKC&M16R~OSqmH1) z#MV9{4)Tc_^6!}hnjId4+&G)kWA{xvb%EWq{|d%P^PU*ngdv~p1d!uTwdq?C2V@$7 zAO<^=P_PLxn12AwqUDU1<#3jDl^Q-EL9-(774=2Zl}IXDUZ>w*EDwyZg*O-A;*U&e z;N`R_^}Licr#MTF*XhkVy(yaBgLjr5f?6?n^dtz)<`yNMYMv!6@Ae!QBgX3KnlZE_ zQ!|kz7+KCSF&KH)g^L_3(ts^W)nyKJayehl!nrUG^%1%-xE6=fNcVzUuU|HVLpORA zqLFjndlv3w7Wa`d;k5`r{XsC+ITxkSIn*EO0+(>VKhi&iQ&ebGmq1Yjh`2dy{v?A) zG_4FE8mEuBD^f#r8QeJ@sgfZ04pUxeUk1TAK>)pq2y%)vd|wg4kAt>Yqz)nUKxC3D zCo(oQkhRNMIsytqb=d-tOmA?n#GTBUET*ZIVF{Mu{^-~k&Iy839}wd#{VVFpLt>tB z<207n@c(nMy3SjId_Pc&o*Oa9GiD=_rLgtIPPxp*901 zWJaS?CnTwjIsp~@(I2Bi!!#lHafS--@lngdXCJ0$Z`0!@U*CywqX)>O1y(2ySAoVg zCtcIxrWmdZfGZeT#BPlq#!fDWt?WQWP~L%YFfufZAqK{A0;4$)Ib07BD^F$l>sxau z&*ZSks>(YarzQyhc74M`I$d-K9A9V`!SpN-`-<~Yxofp2oM8~^pr;=xH@N&Y15!DY z;*Mh+o(4E^N4cDKXse@KJ}qMzWIlwWT&$Vw7(CHMT{#a;=v<@|OnEBrmuBVg<}1dE zR!Mcr76*wfgt9*(gZhRCWjetzBB^f#+sq4eWK3ya6?QubZRK9jIl$f>}D98 zqTYS1Z8MyLf*37hIbnjUUSh67V>FJTT} zeVfCzST0I^3ZC?Ya_Lkl*Cf9#mn2zw^g4>=!UroQ$N4ibSBu_#wRaGJ9IvAw~@;)?>?%IKamV;P}JGree7(fe$X7 zO!7!~9Drdi?(nhrc1yXVgLWHvaocwL&sg1VwJ7P9Z1z^u)VtF()XeFcFwYH)weEGI zW$N)*s*Dj?D51w>ky(0JHex41c#L5=&~3{}$Z#P#zXYu1 zqbY;ntMBExlGSBRc+}cTGkNSZNFLZ)Rwx7+brjqP88e%MN@lfhwv6(=3LNxRkC#vi zW~+lv*2gGWSY8E}5|)}HMm${)-)vMOXSUHQDvVZ9fn(fe>iD6fndu6wgm>; z0*$Rw8><$mr%uwCCY>M@6HI5uV_HB=3k;@8gQ*gj764PFy24;e!G2C%uO$Z45{;<} z^=j7jTB6Q1*bc%TY`b17MV6a-Eg`lg23wWERt0QJfUQdXtB~~)bD7YtR^zCP%<@Ql z+MHVT1iGynG(Lqo zrE7!@>bes(!sIxF-%yZYk13NN89o!aW~$gg{0#=bGWZqnHvqpfgueJz3*^bCJe9CLXtoxLpQ!s==KK+%AAi zRkOyh-jkZp&SOPD`a%YINFxWU*+;^L)V&7z@HnC;YvdcTD#?m(7ddDu9wPFPL0)c< zmjihS$jjA{L=K@QgMyITOmM*UWhop|%l$U?P80WiakvE% z(96fV1TyOALI`x|NP^i6N7L?>(im%Urk>-VB)%dPqmqi>I5o}`;@Y@Ebkl`6`a;ch zKS9dv#oXs`!5V?%|HX(Vc1U+tS`X-&ARNfG45dP-Hfu%B{R6QXsaO(+aqp%3%)40a z$XN7=!f}2Sgm`I%&1!O%-iukMKk^vGcX_qXt69QNJr`Tuufdl{>?(S#jNDq+y`nqK z{OGMRN3e~E;brxJB6+*R@D7dl=G5#ZXk^sGJsT^hv|lSI+QINM%n84AKUM>Bt9`>X z+C14%nKMlN;Aujpn?|FTdI8;|`8FT7>9~#B1$DaRMVcxKLGuqkLrtSvP9qkOWmPt9 zd7~ovR1>+T)22#A``J~(#2rO5dP=)h!qk;jI%}b>k~_Xi%ZLaC;gDWkR)@d3AoaMB zux~JN<5sz(iqAAivJ?q8Go+$rVpR>7WyaT4zp{q0t`AR@x{j8*h5$jMDCZ3)D7;bg zpr}>L+0AY0`f##cSI-{n3ie=K%d*J(8`LRqYKS)9G9tp$Y+S0#D)3hqWC3oRiza%d zFnmylNMR~)+szwV)`Y7+QYM#h88ZM#B@-=u*mSter76Lt0$oz$DWP9k`J}|3VWG#j zTJtL-BcL~X2u9zg+q^OaiI&X7ucA>OCgKevzG+#S3iyZu*oc?HMT@#=`|+!BFTci1 z5?ReLFK4!T$wI2}=HEDMiKSih^mE!Xd^g;*PbIoJt- z$atQPwX6Rj<{7Pmq9Lx$ zMZ{n5fRQ}@NZ~kL#q6R92#}bIozfnELN6f<*89dJ zTiHMBQf#nGQJ4ZLx8-%<^e^e7|8@2E9gyNIy+y>&V;Nw7i9z{#ChoGWOLNt@F48xG z;rtBzGR+*)>%k@wnM5MBAZ`*lFa%l-4CQ+fuM$#IokC497(N-YFNHD?=N*hq<$7-T z8KQ8yM6MtTB3p&qzRl_eCU(14)B8vT(QH^z1=s+#0^NO9z`81l{;Am8>q2~Y3Ez?v zxu-dBT6Hw&&(w!F-^QxwAV@JT47Zx)Vj<4wwI{d;*y(6ICL3~H4vm#_In`ZI$j~Jn zXdncA#1i2IKaP0E!Lb*+3OK#d2C`ap%5}(BaQqesHmITt+M1er-^zifq}ne7 zPZna|JIiKs7Kkc(5xt<^ACU#uoD$>akb07%nwi?yU#LhFljW^07g_GZxe{PzLBax~wZXO}5+1^{Qi>vMj$rt(Bz;fYV=2ivc`E z0Al4SwGFiGuL`tnBMr2=g9X}JH6an&?_{$<^Om@CV!djChW3OFZL$sR zOdA@_SKr?lt?G1vr3-w28*o=^aDTAD^|8S<$l`~g+*2`d-Z*flw*l8fgX?O8`{zNZ zE21TNRk;mM^Xug?h~F-iwoqVB^)V+dvHDu&;1c!vD?-4RMv#CyX&T|Of%`_m%J(~O zh}L_S1}iYxVs&rr!yx72)&#D}C?hea&G~)(qZ9XwS2z zQx>T^X;8MND+~o{jD}y%`&p9zvV1i{65;d{zSH9mkIm4BM?@GKEP5>QmcGao_0bAK zJxYxap@hwo`%{1=PcAWjE2U|bNI|#{`mK=d@h*5itzwbyF z&P+pqUX^(;$Wc~R(8C`oA|13(<9Pj0#WHULx*vgK6Pu+Y!{IDm>LiX^q0w zOX1EP|7SM#!n8VhOm?%IgiF&J@F=5WX_}Hk%uQ?NwWc)90Rc|icxZ0)RSHErV7hR{ zB^8%Zxc0`ix-{(=T%gH5Y;eF^>3lc3d>qz!QV5OJj{s~$sh%876MyoKGdMizk4dt% z+o%Gei$9!JgltS2eUH%<`{K1b2MRO%r5Dd)&*gUEyRh* z{RhU@5up81WnB@!w<}c#*bfc>b+G`>NXC{wSN$1UH%a1=S#Yh|`6{0A9%W!W9KcYU z<&zKi_4rXc@HMulqnf#gNewPPGqDEyx2?gmL!&i#^krQGQAsWLVfdIec=|3~1FTJ! zqKSa1Kg%1Qnu|^cGF>aF8%aGjr5bnu*+{x7N~+Esj?e9P{+s#WK1in9>(!i7;Kev~ z7~mkW6r^Ci{s}b$+Thtpy2~UThawbZItq?K+HjM0kQA#H<{^p;wd-Rk%w?_Gtk<_~ z+HB#FXpNtHN!NHYSsAuM(`K*c^CKMqxil>gm2&nhP0PoXZO>;?;TOO$j7oN3mU5Ft zv&UK$AS%Nyqyaxw=NP1S18LAYapsv{w>b6rR0}n(Mf)+f--(FrSDN+%WBaXZ`63uu zm^K<;W97`-*qcu*PU9i|lDE>v;SRH<=Z^-w$adn%0K=$$C&OrBV$0;Gv&_?*SkJ8K z&A1e}**NJV!Ewb?B^`-8%c07TK&g;ycvSD~6i>HlX~QtvQxT{fgr3QViSm%V7!pQ$ zEm_n`&V?l4W0O2iOKWC9t}x$K@?ns9DCa|8^N`Pn)6GLJACAR?QxoE35+Z05f(0NU z)a`}Xfp@4MVH8OT7q&aMlnN=@5Pa1OY~{iOxBLZ0Oi=uUGrnf`zVh_M&at(z4XcE& zh_cE=0pcv%2xMTDUig@uV=5L@_RK2p0nQ#+~U~!VGl+zwMB69&+NKrt~#ky@`LPJ|4R|fN#GE~tMErk^(X*j3m~JxIU-x|SfL-g zo1%#74zkElfTric4r=lr*({}LTKEGLzriyH0VzMOc;sLJhzb|y;!+tCM&WrYpBL%D zAyk_7EgpgY+mZxQOf{5g5XzWw;m_AgGxBhXQt4y7dcm%|l5Kg-GgtC7pNq`399I^u z!aNJj(G-FKgBxoogPU%SQO-%|M#PRh9Qb&RAMNl9BDGPV$h1I!7%GC~ETCGvbeFKD<`5%Ux?Igc6j`KvXcg(QZ`}=* z2yk>EOVdWP!g#h@g#_WVE;Rb8dDew56+-bnD?vhq%zM^_&q6@F&os}o@t*C-N}{f$ zD}@8gq+A>p@gQ~hAWwI#3VvuOzI33eLx%Z|#ZdJpZsk;PRwkrh&@vq(YnGP+^AL5( z6#!5?l`m@{avKkVoD|LQl}p8Gb()k#J;V@4z#|Zc3i6|;7n8l_N`Zpbx#^R6R_Q|B z_{hq}SEnH>$ZE)$W1z5n$|bMxJ?p>^D@|RNu+-mU%5B8L?_^if12kp_GbX*-JLqwCoU$PQ| zryo!G_&#Cq9M_95*4q+TO}hQNmh6%Z-3Er=5@ou@?Hj?vIGX%$S1)2IF!0XC)#Y~% z&?z-w2^bib$VLW~br^F+*0#7K!}(>iKWna}6@qOJ>i%O5v*MoTB(6m%|WtxvQW@Fnoc(Bs(Rg@nEtp z0jOcCwzZTu9*05ijFZ1cyXhf>7A{N~#;19Lkr!m%V7TW(a?jQ%*=+9VfEy zXoGY!THdB^`~ZE}kDb@w5Kb5^9@F1Wulx_a5+ycZMiq9`My8Ku-Lj_V+c$oc<;=*?R{XxgscHN9nV5Lzi1=gW(A_+ZQ7HX zp~Q37a{mb*lc8q97RBC-B1#Xp+-qU7dUyy2LN{h(tptLwd;=S$WzqtFYpx<;g~`>TxYHg z=GufSYvBS-`JQ7CpJfa}X*dR%R^}^dtSXa-u$Whws|~B!&gjssO4z#cMx6t7h@Z_R z_#m`NZgtYDyD(B+oGvfosyuNUJp!=>U=`FHQ$~b)IyDLa@|p#uyw)HoU8M>z3|2s+ z(czpxG~`mBkJideJu&6^s>aXSbcfKOXm^+Zw@%7e985y_x(4pU z><&||>x_J@1Drj`*Q1H5wR}x6NMY(|SH9jD6=9KwMbiPvWQc#b?GXQri!j7aA=2Tt z>2$PHlK0&A+7B5u0;{mNQ*poTG|5SY&?}+jVf0#OJlNgG$N$k!n7rPV}E0Eno}(}un|Wp6qASlVI#<~?!~zV z2<6BVEwD($nC3aynh1(Z%U*vrT9(0SA(Wr(!y#+BOE+?Aw2_zhl}2WIE`D(%X9^zG zMMpFnU7W^_8CQbv&gB@;@Pu{Eqyj8-s-yy#ADWY>yiH3>XTCo%A0ATp@B-K9@X&;= zuO{73doj8?ANreY6?{0?JQVRE-8>BA!%^nJ%ZFV60E&xg=zOYa-F`Bv1;GlVT_fX< zZXLVr8V`>S<%l-eQccq*TQAn8@56O+O9lpZ@Zb^Ol8tb{hnYFuy8}a*wsO;2bc+m* zW-`umk}_ovy3X8*U8g;+;I>sSjOGv^M`In3EL(P>7!y69I#M^lCzz>s>eO_d`ctY- z4fm$KP;Z)aZ#_aM7D!?$hxqUd+C(Df!(axAit00Bw8kHZo)g0<6v+UJ4iN_P874m6 zrYgBEgIsr|oq{uaQj9K2z>UY~1ixsfGNCw-V>7{`)Hs=LeA;G~jI6!rLD) zVm$sxs{?-!_-KCv=_x|$uOT@n9ol#pkc@d*PJ?`z+3x9z(vd=}W<1TzT)|Lx0p8lw zrTE|%OK@#N)A2S1qcnZmPKl!_!6nj^K+(ggVc?E5wIvi8l#)rQ*;)*~r}^ZaUYaGo zgW|VmF_`7uqZkZb)Sei;^#Bybh`}J{MQr?0QF(Z}VWo9;B`N(#N=iSe<&nXxw?yK? zXc?7%hF$e(KHL%#m3u$hfC5%7=A`12sMR!x&m*$YgX^re*-OR0tkn;;|u@Fue&-It*QE=%RsAJ zPhXcR->J3PMJqFWp&r4=8t8C^A5w7_2obo5nATf2gX4uPS(4A|NcrXgBx|fPdn<8g z=TPFV{}Q#d+@G6T4CqBEdN^0(EcbGgcn6QN4^M3%tt@x_k6Jh{(Cb^&;Mw1x!u{Zc zU6R~vcYQK{fX8ml711{kClqCK{o=B~4OQfofi|y5YTp4!y3J0~ezB0MhzFseHXaYh zDkNOwx7p>0xZ}4p3cu-c_M)d0DTHF+W}2+Q;K*B)qenJQ-5mS-zzr)|j)!felA4Zk zOnb{t3P$dhW4VqE0=YhxYoQn%8jmzbbLmHR_Hx#p>ovg8Me1~{sp&tX;QDIW+2)Y0 z{-CaW;vpFh++p{kc;)qA>@#fKUry?}Dg})ZL1YQP6&lBeff-~N&<7)6<~lNts5@W5 z$4$DunUO{?BxU(s1vtg5PHpecse}H`U!0vn#)kOdVR*HwZ>H(ywNx>l7YhewAbfb- zJcwE{!#w2iO{sYhwPY+GP<-KzMP1nNA|cL+)(xd3yQpQ?FlVb4G+#DCo#G)?F$sa_ zVkT=AW@{vQ*-9YaGL?$T9)@}U3e=JRiU@HWK5jE4U27LFIwY0aDRDy*%bhqRk=gZ- zM6hTQdzfE@TYedgAPCFIlt5%h_Ht}s(!+Z|ukSHjaHP$7e!DO#SEI|F=)$P{!d4mI zFB|uVxMP{CV-?Z^e7h(5VdU;eZD&W5oQ&u3>bN+?zRRGXng1C=2l2)vE^P^s^w&tv^AG z3+~&nZtAy~@C!6xO#I!4#D9HzyI+r1|AHw1dCxFkk52jK<%$E&sH%dcw%lFrG6oB<(x{BNz{3e!DO@%Tm2HjGGJ$N&9}Y zrbJ3Sj2qg8;U|oGjz^aJI0Hk{UNSIN-xNoWW7~yML>Lci7@wY}=^<&i7#KzIFh04k zJ$g{5Qn?z&90NnrPBJk1#lx7@E{rC^I8ehFVqi$xm;cuEXudJ7E?2Y*BOPq4YU#aU zxqBKIlJ>ZPu`r&d&IB0xls&L5VU%hZ@1CpaA!&a!F!JNev9@1(^bnUUuZ9seFeL48 z1LO2~7*pGYK~FF7r$AkN28N`)|1V7s6;IOv2{7!szzFM5OT^*Aon&B0+5-m0(>KJ? zv?Z&(x}*?Bfrhc{98C{NyTriAi-+-MyD+?jk)dJSYhXy)eg;PG__~ZufMM6g0}-jV z%JkoTu7M$GZ~s%%qyGB1y7Wna0a+#eyprWupkaL1N7qHtCK?zI$HUlmL3{L2gmI&W z@uGntX%_&-I_I&DM!w<8I^qwwQ>N52;VFXv;o;~M;K+Rd-W zCvL~rc>fE2yzl6DZj;;b;^%J1oA~{0H@}e$ZpTIVU5+2`JNn)9h1<~=zrpzNzN25# zcW%dD@V)}SXLj>@|4X-H0e&_3@xG(quCH*$!tZwcc;C_QUwF3zzm%qW&TF>1Z$yeP8K^soO#Md9jI=hv8#@$Rn+*m95&5^vlJQa~eJ-B8d4r->X zgI(@Hk{3ycY?wVvCwY;ShopQYjnheah=y83X&s(X&P$ENK$UkhO!@+(kE$uIz$GcE zy7)<6{o!K0=#%`V6kx^@q$073m&i&0t(Als)Y1U70T&I_q(g5b&L&*KGn(;tRCvZO zxKtPK!r!FO3{GqSCIuJdOXa1e*uzA;56xgYUZ?BVnfkRi`kLwVFPC_H^aA(#BRE>| zBkaS$@P6tau{4_W5luGk>$^b(4>MfB2K8+{OeORA-%VPQW)9{b&%9)Fy&&JP5pGXl}hA3*z+E)_Y zE-0R=102hpAtc(MhHa9D8qSGIxP;uuw)*l{Nqw_RH%F+X!X&<{6OY;16^T!n#QJXZ z1$GxpPI50le@f?k7&t;Di=LxZ==NzjJ;2bKj+_veJVyPTX z#UKaHdJ6kC2O}3ZUw~e~dn1+M~$aVC#CS61GtBz9HT?2sb_ zkMY4UC?I-jq-P+Ui{*wS=b}T^@N)<#G6bizp);H#{U8T>7vuUuTf-*%LTO*}($e(_ zHA75l*39dO`CIK<{q{?!UrMxo_c*|`tltorG-0jUWBn%d*~j`loyq!r{4Tj=`fN5J zk0(XfiM1r^I;vdP&u`mn*?zFsx?r!(KD8F++U(H&IQ@+c`1kk*JQ1OlVhwomZFU3x zI>a^zDVc+GX zJPB5&`&I&uT)|-(9ADTtdhZ1eug0;W2(8``ntVZXl0mZuj z4~J{}AW2Tvjc}%O(Y$it6|r)rT8K<|myE-*&P0RslxY_b1>+H&%mz8xG{~8zK>%pT z$tcvBD!)TSGh&DaCnD-?*XS$AwP=m@fT+7cM2UBDtW{8>2W>>3t1r)FjW%@)4d3jK z;EYq@J9pZThJs__@$G@rW&sq~RJb4!AJr3~;OFXYjc-3t5Df0_^NT^$V=oY$A&4YA zbT73MrYMF1K~OKq{X_LDETiUJM04L2Z&OWxuPsW@`jD}>5r^YV!dADdQ~PZ9hwq}6 zSTPz!#Ev)a(Ylt=qLVNE6H~HXZ{%~p3-|Gd$E2v|Rzs7bYKfG@=-4>V4kk#Pa_Z~} zU#IZcOn=SAUaDW-&{#hE@k6xzi-+Ng?bH`b%rLy;^SIa!v-lxW#>ZCik*ny?SG-jW zrIF+#bIc$q!5!qBOxa_W38LSfi}J%=k>#N?utwkGY%=iz*UL5INNy)R<-WI!|Mdzc<2iJ1zLFu zMqVeHU_^+VleN}a_9o0evYy?OFzMd|JnL+*!N_BrK?D(PAyUSMYCJ6%naTR(WNkD_ zCQoCk{hU=}f2Ok<|DH5pB92}t_m4J$fOU;5bAQ};U=D)Nm%W5c0n8s5vgc;(2gjf( z8{QuMf$Lr>$GRDAZSME5)JX*VTm2k=l!t6`VK~Z&dfcc z@C=je?>o#h=0N?*AMr{!2-1l}qNiuXf!qb}XJ=k@MB#pctdX8E2P(}%S&miJ{>Evo{mHs|F%!Bv~>FW9K=!%5pyg;}+yAXb^QQ0*Yr=l$o z_RkM=48cIW&Qp*r2O_}2IS_%!IyI?;e1r&)K7N*gYbvf@MxsF1@yl^4iKk(zbr9uv zk35%+ZtwjI`h8x&njQk?_OgT}%giFYMlMnRv(^+~lUV$*o9YJS0&kX8AX|25YAr8# zd_q6IV;-sfL>wfZWoJMJSk`Rbzasa^UsGa)eO`#`sT5IR9|RZz{yZqJ zb6hH{Z<I4N~}TIQAlL~aXkG_YiWWwRkn9cWhls zqUJAw;{s5ThU%~rG1wtWBOjJ(3v&>g(Jhn!-Dcy_Gz~Lh6lMe%irwRb@@)f)S^xhq z_a@*`71`f#wkBbT-5?DCM4|?XGGY{$U_iPdEw`atf-J@bi8I20%NQXM6p>&PNPBGs zXB0=BG2`fn+lVs?0sl$@n1nsJ3~?F3W%NR;z$hf(((mtg>fY{7AQJfg-}}5g-1M!w zRj2k-=bSp{RF=xifO(>&fR0tUACufF>TKpWdc40^=*~;xpgi0bl#U9@RdG;ugKpol zWJOAkgc>}X@bJB@=cBlEd~fUV*m@*n;2DUA?`=H?(|RP_h41t6Ec}J11nDN?xfu`N z+j`>21(Anjw%UIy)&9%#5>2-~?y>gYLX4HizH+yZk`wH~axuX-Zv9|B?Cast>nNe6+UskSh=I!CgTfka? zPhkvZPmyu@6pInkG?_oFp)vhpPV?h4drLS+DcUJ8MLU%0ps052`LCbLJwJ>yf3z`| z8^*#v7HliS0LC?W*kr58*NLWbNCtQ@xb*fk z`IWOyy2sdTx%;BEUMnFESS1g72q zkzO+{3euZvrA7)lvvlLNbJ6I)wj|Y%e05n6v#-!}cm%~oLs0nw!7w3fj@&ea=&>2F z_JDh_!;YCYEx9Mu!IF1M2y7uV;ONz=jd&@~l}3ioo?b`S?$)Mt4| zm^KWj7dM&Vq963EX_I&k=s;GdA_?xh)Ub?5GkeGvd|6^(vginR0fEAV#+@^PYrp)7 zoz-gGZtW*a3XVf5@Vr0?Je%Wo2ys59@c&**&M5e8WLdP#Rcrq05ha0*6C1NeAi?Wb#~ zBkIin;z+O=ubqxKMZj@er-b3atE|qGSyhUFk26tNGpNRcw)TK&J^nJhBIH)IAlo|nP#=+1qs zIwwrk^pyUENVeJ`X;T{XE{Q|ZUs~Ha!T!)LGDf=XAp|JH#$|ZY^ZhWRmi-0Ea|<$O zbr7x#e^GLR^zI(%`gHqBccwdcG1JY0&KeYNXJq@~_zlA9Qtui|P;dGN6#T!gefzto zRLSFA#w1whpieKp;Yl=jHTr@7=3`cg2fOA@_WQcB1)=`uF+pJ1F#I@t_L2Sj;zc-m z;0&b;>o4<%?(Osjr8HWIZu0VexbtqWzDo;iwrhDG+?m5eF!CP!R|Z{U$ot?gjZR%i zwb%s<%^9EtzS<3EJJ%8GIH9?96p>z;uHi(3i>oRxw2|n3&IiKj(ZMrPbT--f4mM^hy8Zj&tE4~e;E5K_SzhD zBwMSF85J#B&<>F22*@cW$QLb;MF3dC60zbLC#pP#HTIc% zS^KSv1t+_&pS<3eWQBf=0UV8N#ofC}Be}^z<*lT!=*vr$vwbptnd2(*=>RFEM zt_n}Jy9%ob6Tn$JOc2;|qZBLxeEZfXsgwQVP7BSe)ZTdT^IZNbwVfyRKQ34tt?z9}(pjG`A z?n?MiYl3^e54D;fK+~+(YK-ApGOn7uG0i`4x3}g;n^t9!Eg3J)-fJK6J=>TK%VuNE zXS`ns_zAn1FZ8P?yfy!^`H~H9=uedxIQ9ovyz8mnj@^?=^{am%GP#v8SEp&ZT~Ju9 zFYiccs?qm?ZzJJM(6+{@c%xt8OnfGSL0Wnw_%R3UhNky}sY*$SPoJOW&D&LSMofP| z(~}{gf&&z&EG$^h8X!UG9ux!Ly$+HQHO)3HO2wg->$Fh!GOgw_o8?Y8gQ`3}-3@ob z^&mHzu~7TXhAKt9@dJ0N;H6_iU7pcuKDBw1w`sw#XHT-qc@W6 z#;;)r!Bz)0QcORb|} zJ}^00N-JJq(=PSS*dkffO7hOw77HDFAq{nMAx+D$#{8J$O*F^_r10a5FUY@hG1$0o z8jA-^U2O5p0Dd&QH9w_jRc68$uy_pZt%>TN&6oGB8ftF@Zk{dtm=eEuTH(ioSUd-# z_;J%m#E;E_AIFBW?)27tk>X3(hd8e!|2}~n_pmk4q{5bZGkLPv^7@0n8?xvWSR1d$Z{k{c-wN~gyEw@U2X$H zfJ4cxK$0om+2gW?L^_cI$m;+&+bNxf>4rX8fkQ(#9kNWiP?tdSJJrQF*l#|~Y z^Np<$<}Z%$Ox}+ zxhp)bmRl@X7pys7-iIYUy+E^(%>j&WYMk8H%fRuMJr?CdRV%U7|qGW%wvHlWDbJvq1 zL|p0DntqD5#v(^G{R#(dTr~?Fk?fw)Ac-w%ffP3>?|7;^j}0t;8X&B6wCgLjJ#qK}**D<1>| zV&zXZFWSi=UwxL$_?-q^qG7=6WGldI$j0EyJ7)I3X(#}aeafT6W7w#0jzCG@?SE9Y zE2OSq5r*n0b^0w{95mp7XyKpG5Fcgl?p)u%jh?~pnDTa1%pY=TxWaU7a6;k|{&~y| zfmaz~@T)D6nrjY!uwV(KEt91i7SwE z1#(rHxhjDVwCa%+zQk&8NULY%%4b7~%!i5Ae7${duRBo|S)D zy*)q{-52bJ^mQXB=}M>_;Yf&Pk|fY#LBW8%PHIzflb;l%zDYu*J}zsQ9~=pWANcPG zcdP=hzTXRVHlT6Pig{_Jz;4xkoSC5WxdXz3yqt|-p&%2NnTr?k6fn|f_tb>@;DAL= zxJtWHlb;7gW<<$%ZfWjv)QXAFkG)WPR(s*blCFa{`hrRE?MCCwmPK1-UxX`-kQrk6 zm3Q@WEsT_$gMb{7*~_Wpg{Fd`(DK}l(u;&~)2n%iQ?fVQALPGkcOTZvI#2Vmd+Je3 zY1IKHwwKQbr2NagnKSR=h;dj_vM}A#auhJ|G*+`rnrOxc_3-(qcg|iZlRAQ`6j+88nIKJAuCPiaqF!gn8qV!C+_@2>% zom%${dr#6xhsK~&J;$~RXC5u=$9^8p2-uI&Qp*keJ}w&;VL6=Q72_Dp#e*GkTp^yK z;5b*sxcrK7zW7?^@_T-J10QP8}8YwEZd5M1CI3dq~UnXhHv4G&vUv!-sJk zDyqExWyXJApdPOu)oCz3_>oR+C&Fu0%mijxJB~#bbl|4D>Ip34knNc`;1vK48bprF zSwPiv-d=waCG?XLCaMx{-WIF=*{b@}3BC78R)3w1)o*^B1LXYROak9*y!;m`X2V4p z?seL%qV}#n7;%d}qjP}V&AHhaP>-kzPd-wqc5gOHR7MR^JGQEfXFyjQ%FK^cyVIxw z>AYrxitmW{Lyf&RmVKJ!PV@82S~JJKZSv)vvd>c7X%qS79O>50h7)31Dn`4p{1DyE zjK0!NGOPh-4XMV=gE&RK-z;GG$| zm6s{kI}5%a+yiXw#>l4P8A>0TYS5FP3ZLQ@&pv#|{cg{d z%}a%|w#_p4J&=Q9r=42o2b~0@{c%+{#JhPXTKSR^Kl6eZYya;k-ZGP)g+ z`Q=$=s=xZT8xMh@LUE1%?Z714jTs=_w@h2|`UO1_>hbKr!}qqHU2*C7-qy44!X62U zn46vO@V%`k1K+K5d~fR+i*Fu0qw(;)t%r0b@ofh1trog9Yc;hy*ipLe;yxCh9gevG zVgf`aR6AN&LMDb&PAyaZ35U$HsDZNTmz0X9=+QxuR5F* zEAqe1$0~9|tyyH?1d4nPpfE|73E2j3&exc$E6(;!=GjBb)jUh>V-|Ay2^2Cy3JJ`g z9-GT8;9p%RWehaS*lbO)HKg>~X(IYblQabGlwrzv2URMg_H^sjCkVU!Vo#T>6Y=2g z3nG&R8;FOd+%S2)Ydm}dfPVZ?3qe~D6wJUET9Aw`NrWhfx^iCNK1%Pe0%p z9LWc}>(bL_EREAbTjO9kdY5`VrPC1G<$t6W+H4RXUVWud!R3cY?QS#v2h^8I?QSz( zgdOGTOk^~iA?DssCcHSGV%xyn4AEZbqbN|9@tv|T0^i{x^QY;~jgLXWLUzkdWM)c* z&lxf&b6$rwG}~->cV*5?=8;sOCL7w44o&W<71c8w@CKS~_WRxh@EC2OM0;R*z%D=# zU_-$mgtRJ74_}sMTuz;GR;ja8X+l;ZMWRJy;sKCJ05xqU{Gme?7;VG-t&JVgR zjc|e~U2F5ZrU4*~k;1*DoHSLAu?nhNd^aZbgw__7v^-@>N6QcOnK@7?imGR^68)GB zlJk(Kj9r~b6=QEu^}jyxF~QImD>Wu0IIgPJjw4CH(5cw*v398L8n2jz`X3j-5&=;A z5Nd@PQ^=+jk%!`~tQa{{vC1@}ceMlHZ~<5ffRwspa#LjrlUpVzgkGHB#$`_nf=plY zDD-At4pKYn?|6lFR58>>>pYd@NJUCQ1*v&ec%UGK!&MA{^QYHkyFX9D9bXSBwW24OWe_mpo@<~q78Q{}`LjUXJgK4>j$UqwD2Ah#VIq9U zt#t&28D&5b?$j#WrByhiRXDp%cEk;Vs7xf+e|BK%V5^6w$MF;4=Fsci$^YfpkOb@<8UKU z=h+7pMrhr7nuyDxG~EBKWMF;Vq-Gn4w`p#u!P!^Z&cM67VpKPG#cW(|vf1c)3-)m6 z+}ZEzi<&dWrebcgFIvE=BIdiBB@JS3M~t_w2HRf5ukXcUdHCehugi$n zC#r)p4lg8~A`q>^CUBG2J_=ID1_+c^?$QoWe@qHH%06u_JG|dsF7}Xtx@4rmcI3@#p2^LLaF2Kcha>id|70%&aL2>K z=h+XU&AQ4D-Rt|VMGgG}YkYZiP%>z?%I||y?q1qkY!d#>*YbY0FUEDggyEQVrWTx6 zhd$lTy$8q2;=J3x%6Q{ZZbidZC4_IKkUmfkeev4a(39G~TB(57Kn47O7Mhf3+$kE6 zjT!_Y0xVbxoh$)_^O;$MlhQ9C+~2Gyt~QUBSL*?Mc>aY&Jc_(LyjO|QLK9aROZSKz zZF}6l>R;84U2w>E+?Q{!03H`gifUmuA_O))&Vhmpf)@z6KUeJe6l{!VJRuw7#9gRL z#Q5Bg`2b(vdxaN|82|n~cyVJgs7SSt&A-8M+?b>2eG8RvWoOS$kIkFudeh}rUbmL z#)y@|jIe&IoI?SfHeYy zgiVX%@pvb5Jj5K@tsnN-SM3*CAHraqY$ zzwbOW&lftc6B7i6^~MiPXwEw_-87-`RGJds6>#RzWi7Fz7Amdu<$ZN0&Vhc^0^5NQ z57U6=@X-b|H*wa{faVzS8`c9R`SJ?{T5`W z8PO^*(mcX|MN1hf$BvHYRbA}>_(hoY>1_g>rT}6S05Trl!p zj+A`QB^{B2R=k0o+o*jH$siiIVM|Oj@DY}Oj?swrA(iJnhz3&b<=BSO7c$GKb7*nY z948tOih}e64$P^sOI-ld$m1~1wqKy&If#?^8izDFQT%d2*XE84XcmFgd>99)#*aTs zg~#ToH24~qqL?W@R4Jwuuqd3%i_@;ql|{w@)F?{txnP9l%1DGQWHR;`^e#FXfp}cD@s{&P#~_@1=m}5P14Y0)PEW0uRr{h@cT)r5%ZQX<5gAWm@Rs zOIGZWZ+(m9(m z0YtE0w%Y2r6+sIeW_k{upbisfS&MEeq`#kS$|=`5`U8(XU_~fLo?sIo$>otWI0oL= zf?y8J{J|hl?H=o30;VH$x%uB1;(J1c<8HU9P`$F#J-9r&^dxl??h-xT1SH=`^U=iyI- z2KMRmGI4)XreFV6mRFyQs)CG1J+s-vUi~LIzP=3pM&tvJv1v0j7N>e}7;uV}P%a;l zkTg&K!F0Y*vQduJGiVM*?y;xjD^0@`-2-YXL90?G11}_*j8Vki^1k5w0@&;ovcK{x=DU2s^L@eFAsxNlF)cqhKZBCt zBD;e_d=CDAtCmrqUUyV7Vu;{!n?JI zCnx-2#OZ^~b_wpm#?Kb4<5Fx97LpjZSdc^!*Rkh=lS2~Ue8zQrmQ;MZ5wRVSW&2m5 z>7AJsYOQ8`V=hE=m(mq+nG~n&edZz@r554GR#Uk!2V)VYTw|_EYZ1bo1Jq-}{jG4& zui;9{I!^&7DU{2C^9thRPa)?Y7prP4{rUv)!LO{6Sry`g306e3=yu_QT;tF=E$~6E zad3MSA7Bd4%eL@APOT?{_#i2U56Xni7JQI#YVsOxBafNhHSAlt+TEyuM5K8W9f+rS4~O4JZ4d~oLTF??{3H4%XiTt)`> z!e77#n!*PK#0Nun2|l7CJp3GW-H57Ls=7!q<3WK=I{v(Oq*MJh6 zjXSa9LU>S(-S*TRtgev1(MbAA#jP1c7+|HR8@u2?3P~CpI+zhvr2dWNiy$OK{POc9 zYlbmEz=b>+YqoRNO5VTjL!&~@ueVuw?@^pXy>U*oB8|p3bX=z@a=(JsY}|#-k#S~4 zU>1M1sz-s;1K|s#8fTc*I74O3H7W%dwq3ItNZD7_Vw%(f;Uof2@l`f zdS=C?<9l0A+IZ+9T?Jht{PMl6XA{1CgeQ!L?`=KJap{sK^hjvynTT)G@RZ=;ds|N+ zE*;<7dNQttuGFL+30?8a_qLvR0WtB7;sLfG1}PM7h_XE{9@(J`5|aYO-U2wlZOlg(+gkd%lRQpDUV{D`Wajh-!XPk8c zz(=(S9GJ?#*tpaL{#qZqG0esmW?mhF;~$Caxtyvr(iHx8tM zu*-52O1so1BpOA~{DDzOTG?<=x&IK-dVD4n+|rCkOJLd8&i?q2q&Q9cM1vh zA@bBVd`lr&BLwau%Wa_#Pwwm}|580EAU|qKVy+ZPL#HoP4K)s#!`bwC`-ig+tM3i0 zC4-L5Big29@#rGpbA1yX6;4~L50~Be~5NH4$;W%&Vb6J+DM->&LbVD_OElBWHv;M)w@*OnhT^$ z{B_1MalPSOvXOfs!gqk)Mw7Q2r$<3WjL)`3LG4l#>pA0hM}hJwP#z1^*#OlVA48%N z6V1Sbvuz3t!IWqw4RZ{F5=yOcCuZ<2Q#8|rBSqszkoiE7W58o8VM=_8_nBfiQn)JK zXhi1-?Ll!$OYw-(e--)A)z|}+Fc{uc4}f>M;3>{uUsk5E>~3-{^jOzm=nzR!WD7`9 z0V~qPaa+RIwc@sTrN#ySBJc9sTR392Fa8YRl%5d&r3!vF;SW4%_&eSw{8YdvRF{FH zH`KHdJJ7y`EDZb-hKDl&;_xrzBhEbDS|r^=4><5Jhzeb)8CSm$j)Vt`^BcLmz68$i zuF$xn zEQ)NLEQ?gk-2Y+JJCQ2S&&M|Y5#L%H|0vTdP;la^TF<3w;~#Ex1Ir2%wYjG5?{nDy z@%cHm|Gxq(gckdsGk&;NVWIDyWd6;Kh=n(TO`F4v1%wTIlmSqt?M=UQV@z_nFQ9JtTENG}7!}x}oNct!%Q6 zt8TcSOacAQb}XmQ-r;o5n9gcpBBG}qR4GMYUW(9gTA)hIin*K> zP&83K_f1lU32ymsk&npbX0;K`akmEA(fb(+a;MWEFER8~=ig7uJ zf-o3*26b*RJyn)j#jwLFV<*-v;9jcIGIBX1TNr1Vmw6?bmw6@Q9<3EBQ8j<+@wSLh07WzT!kJ1lX5B;F^ zq94>4)erhGUO(uEW9SEIsHUI#LF=I()M%AI9Qr{+;`M_*u`fQt?nM2lA2d0tuLI*= zOF!s|nbZ&JtMr4=uwT#*nncQ$a!~3A0hs6q2_P`u;|V7v@0az1xZ+kBr^CM=ZVmv~ z0R5ml;OPwud3)T(*e?B`Ufa2l$KC`QLmZ$gY6en)O0<~gU7{v?>TKePkf{yy{yCT? zA!m{m_S>lqG!~>;JaK{d7W|&+$uxe}9;M%w2etS({Wd3iJ*MCG&10h9rrW;9 zi>cklIB2(ZhjtrO#y1;7@~tV{U#2kZ=@>K2fKbf7XfXzysZNcHn}xU*(>SK#HXNU* z;TAn_fWSF!{?|E8AP`xwb~YPl^r#0l4^W-(OeT4=e2 z2&a8oZiO2}%dJ3W@r&zDZWfQiSeMi{Z z4}J$nE&3RsYTUYZF+Qm|?m{MWepi!AK_DJK|8MDU9**K?%kGy9)}!oP_dNhkRNQ~bT~7<#3JjRX7I}j8qhDQWM|?$;mmPa`eXvuF)Wx3mU|W47&@ zz7MwTQz1J@uXu=t?LT&$o#*|{1{h;6_;F^`upP1eVc7nctXWaRcAUn;u)UX8FU1QD z+po`>9=6kP3^N_?R2wOFm(7EXM)?jz^7<&B4z&R=$$omB(|3t;6?fUaP#!JJ*LTO! z)85dPnMYZq`}2N;eLK7yJNu)N#*e=h`}T=*3cdO#P~{UqC2y{^P9WxVOv^Ue08+aNp(AU&|^(OVC%>Ke&gd`>nba z()x*Vr5LYAV-NbQ?&8sFe;T-#STXDlcnx6(`td>o_k4DsY2l7{QQnjRfoc1DG;Mzp znOmE-YkB)%k%Hq*_(XT6qZyoIlmCu+qt|0XDg5l*@*vu`^H!Nn4R~jwW^Dh+HwO9M zG^6@Uz6Q!h*id8QYe25v(4!3qL?a!!z}5DZe~=`Mtzgp8Zy_lPBu@v3zc(SynhW!K zTB#{%3pwWEahxGfX6+}?7&&eo(k*$gxJSZY@VtPB?`=J+B@)tq<>biE`PjH&LpJ2PO z(njUh5O^t@%Qvaz*TsjJY0 zwZ_A5uxf$%1xhw19oM1^mo$E^S;i0lHk;n*1j-m>mQmbR8AVb?PqU1#)cIJG@wZLw zZ^x!JY==4Wu?ECn2fNmI7K!kUM~LV?=jr#0RISMvb^-<6*k(c0nUZ@J>NwVv$|qIo!6W39$L zSl|9${702E&J{bXL;B5BB?( zu$H{}!rvYok@F^T#I&oRHFYg;U{{BO7K&WQB7xqr;rXSJ`#cypD$4cT6M+V{=tC)vL4(!S9Jm{0n$GLBsNJNAW& z%2tyE(__0aZz5c8sZ)nlM#HyOJufde>)E%R_4J%V%18dc;-l}&NoW_9d;ArBi#b1Yro{_4H{Pnm!` zQCmeU3c1f(5?l!-Q!N@|StVx$>6^!XqsWMQt0M-mq>yt7!w_I+oIt@tS#Y?}#Q1~W zlxjGCXF=XdX<*2Ci3#~F5e~MGUis`F(&MyRYBEZpWXz+fCWInJo%#e~8@IWG&`!OA zyb848(86P#;>QuFtf=jkZ-91!<9ImEWAc#gau^Dl{sIv%XHz(Y%Eo&x4xwCjz^xdU zJq<@xiBZpg3TRZ`kVz9ta^bL^3pt;MeFf!rp{ozVN!TbT4{k>6aGWq3cdIC*XH*yP z&&F?6RJMxx2JEiUy+~M?sS7wHn~nGH5;)$9Q5xa!kPxv`7IKxq`>Dvo#BM?4mq+`f zdbYu$x`#(8?yqV+Jrx<#&nOkb&GbPPa|i^=6EXyNWSV-Tnlj^1H$?O_zORm(oX7D1 zl<}&}3b}qBh3-^j?Jj71<;uL-WgJ?;WxbQ++Ag&3cBN6&(|GU%O8Ez1kS^Sb>Hig- z_k$}K8Z*C)=MPTYf7T<11-R)yYuO$Par!@%4Xmf}1*C%QLGWFqmM7sqYw+vDBQt>U zcs~S(;KmQsn&^p8KjWXTu!dwn{o)VkyAe!zls_QdozXvnE4}S&jE+Hg#*7p7$%K~m zF$$U%EzWO0k%;5?({#b5=Ct5AU#mX|f5n{?aut=6o@Eza<;265QLo`a#XGH-xPtn-aO3B47HsWn_+p+O57piH^9gOSKprT^Zi}TG69H!z7q7h4@Lu!zxls1hTfnS$~||; zLK$Fe21<->GGCEJ!{iheZJ)`a?E_x>3YqsA`(9SSQ_b2!GKbm@>CKL5L}95?m|fat zH)@c&){~kH4~fRxBdwiKj6j2PTJ3~doF#;-A`kHGSZ4!oH!FE|d?iy^Nyvz$l6JF_ zc2tu4l-(FDmDDHVm^r3!fHobM#k~V6fLn~`M#)YnO+@V#F0k8I-7wT_*4~$-S#-_D zI_mSxI^GA?I@*!PspH=OgSddBgtO=ya%(+bsgm|t4#)Nx3#6d0QYt3*gyMZqB*ic~ z2h(zjs$$*Z%RA1%T@qiO9$(y!aI8SbF$?_i9<#u|00&1Kc$@;?elf0rEefoO`Bd9y z{29s6^j1yGuu44t1WFwL3neDU+W4zumbj?EY~!0?m)qOMPhW^{-Fl z21T#o(-}^YFpke)NK&)MS@vn-p%1h^9|b;7j*Ym?t9{190EbBKF&yW!=9*PH_XMhR zrBq3`9rDoaf!v~5`s;lCiroBiS7u3a=Q*dr&dedM0?wqxndqP5{!_SXh6-2>rJwQ< zsv0%C{}eG@#ic;p{iomt;d*(8q&pxwuTNVu`KUI%^}MvH1J3!>?CrYM#Ag%0d$+fv z=Ku;+2e_+1Kl@z-u-FG6biOfJed4ZiDJiW#4ONsD5ilsN9H@rnLJ0^u2BrrJcDC)Q z24Z}nuRunToNDQQnIzX3NrNpVWLu(M3)mmZHFNw{0tkhOo(@8+SP^1{h?)a^8;WD0 zj>EdB4~!I+C%Ci{kxDhFV(CkGw>Bj4hnLCyrrWjXp^)u6Xio?o2)k0-N(AIWx{&P$ z^;!TY`CZ}9BRCQj7^x~S5)~MUvXp=OI&o|-6_7|(fq+y%JlR(SSOK-QWyZN~mi^YO zPsnx)%cJQiJ78o;9h8z6&h3J#rEfItS@Q~$I&5MuBtL*{~I!| z+cN@5)OmJme;`Z5ll|AlST=4r__MDvl&e3QuNIj8{&Mv6yWDX;K-^UhX+-yWcW8c+ zTTgKevEAgQCy@72**NEQ2&g?ndFSh^{9OzwZqq-Xz5H5a&AS8sK*kXU-Qa6{2~FIO zW073Lb?Oo9$?&#dnd6({FXt7@DUH$Y>A zr~Hi^btqvizEza4psZ)R7q1nbb+w-L;7I0Ghp*K1beG1iA#1Qh92fR%(J2ikA}O() zi_8?Kg*#w#i2dKc-#Gj6Y^oT4!c2VDMtg*+4RT%T&`&*Jxc>jZS zNpxAi+e;rcA%C&4e>`SS(6d{Ee_CFGfR^TZqb?C)G^q`&#|79O?e~2TS0ccXkt}f~ zVn^LA$)3T7eBx*XSAhpht3c#&Cj8x}lP z(ni*%3`z)WPh+3M%g1iza>Va29>aN3V7r6yrbdQ0Qa!S4Xi7rqA*FWiFtV@@D)$_? zO@p`W`ip2EUmW$}=&HyGY|k`d8-QKFWAP#*Pk_5*pi!@4cEg-w`4K5ThEo%DBXBFH zCI{b6irolYWE_FiLycdVIetg`5s6i^7888UzEoBRcS6IT$b98bWVo3B!kpB67^b58p0tI1p!{|P$3+~6~w>|Z^{?0u1)66hHvt-OiMiK|Zge0Mx50JmUsB)|*>FwS?!^f-wAf_Bu_xsC6W5eB%T4 zXY}M>I0gxT0x+(72bToH|y0;1Ae0ZPG(LefgNHB z;}B?UxIAgZJNHtRcelLp9%^ye63v*t9z;zj#Lou#1$b3?li5@*>RO}34E4i9_-Mw) zb&`=OjD@PiY`k-`R(W#}0?uQJF3HF(75m&@RYra`#xSE6DrXyo7Qnj<3U!SKT&#9hEFz{}2L=2<`$}<@QbEM)@>`O|O@WZJR!=*_#wfd3a#GI0#EMt{Ou! z!SLzB3j1Q4KH5c?-G1L6kRO!6044|wyA(fk5!SyaUZjUSJIyWOD}QLV-EtAO6SoS` zMcB{3>>|uP7*%F1UqL^fsEaWA=CNFaHKU8*mC>)nwCU(YmN_2=L)%YKEeqfMwou2ImDO9 z5F>3n#(2e_IYqw2GUpV5E=iPVLjmo`Uo83mMl?Y=b*PfHhEPHK6=Ptwz=6djBlr=M zg`z7^)wr`8z8>Yz{)b^L#KyWCcNh1Fd9+4&hY<^Ik?%>d2ni>*3a7LR+ggR4t->8z zg;QIF(^`c)whDJ@74FR$+TA4FBDuW1%go{as@*(*9Fhg}b*3cZ-EB z`3a;{Fr()9i!o*Mli`}p= zl*_BYB7(o8^OYRkS)UUpun?!EK0T$u9l9Z9gr1T(#I_=r@{0axtd8>y1Wr_5@uVfM z_`M~sxL?UD8sP!-G0bKol!V#X!hflo{!2X<9vWPYWtoF@vp;U#`5W7@Y=%6+Wp{fH zbdIV;^{pccbiVb)twa z8e+8uz8r#z_(H=jTP324X48@CL^L!0B+mtU-1HxILjF_*j*v@@#`=GQiQinrTKV+z z`gcEyWWufX%@Bp`RicpZPZg3W1?fZ-@&&^Xh0sG1L?Q4Mwh`N}ztS7>L`5M>;9uIl z=mBCmh$J8i!4*w+4&gCX72^1>3^u|8xQ1-!A`xk)S6hif2#?r0H$3wAl8}5#LRL@` za;ovqb3m8iuES`4QxLKQgiR#`A<+4Kn}U#M!8?(b8ax@a6mEn}8HD*T2!W9m`GX(> z$sg1a5`b{3bQJu?fO-Ng3!gF%X=jM+q~+ome41ButQo+>-@yNQz(2g4Z@I zNSacg`$x0A<>WCG7!fZX4XLwgG>pyRXqBmHop~8fA{T5<6r}n{AtSlZn%-7bqT^Cy z9hMPg48^|6ow}mMPF>s%lvDdC^Zz(d(U#h86m3}sSEOXtISTQ6e?dDSmI%ZbOo)em zEf6ts09gQ#6LaDq`ZL-A@GJp%4FIx<4#{q^_Ra0c{>39~VQ;fO(^P#tX|)cs)VnV@8;r-O3~qC^selLmE>uLwpfx`} zgC(>r0Qou(G^f#nf5EZe3yQ+H<}3<8X5tkBkabOP30qzU&|p|iu|fsje8JaA0N|$* zKT(myZMZiZ`!rJ+2Y8lNCmvf-88hz+c@vRDHD03`({NaB$r7rVF+ccvLo`<--cXdG ze)h*_eD_t!$P~tWRbn&VV?vMw6mAMZ9C(ERG}-2d@z?W<}rO)Dt`J5~@v&nS-NGedKHbo{}2_-f*!1$I@vqHY`3l;I|6!rvV(j-gLb(Pj+ost7;crU~9@;%u6DYi9@3rfCU*?u5_? zK*gpB<;{9VZtZ-A$>i2f7@J5x>DO2WO|cG*nloAVb>>(dMRO*(ud~pKvCNrpU#A~( z8@aDD61%SxJ?BqtaZP6#a<;Z*vaad0FNC0;b9n2x*fg6l7&^LDJofTNZ#cm{rarepWJDK!C5#JUKde9BV4p3 z8rMUiN}2b=`wF1K`+*4&RO~eX=&nt*u7>EF{Gwxal&C z*8rp~uP*J%`yK4801MC8Z+i}RJ-83Oort?N=uF}QmP)q<=6P=~x?;u9HhTv`$F;f{ zM0!8_;?GbT9ovou(vhnkenN!VL(*mU-3rX6g+~31J2%i4T(LP1{aI>f|DeNu^zsIo z5lll1i3$|DY7im8NdzkZH}lBg)i+p;?5i4iQx;me!D=O4APouuHPKh@ zjc1~L4$muKJ(@7&YjM7qikbJ-0pA)~g^Nk0H z4G#cm1Ekyu`^VmVZ(El4{6*LmjAVFK$6c?#dA3Kwop|Qs;d@(8C@vk}+j^e*TaScS z@vOna_qLw;xO9AP>p6sPU*kD|hwp7YmKf@&{Yw8D()u!Xvu+#ythHM;i#{T>Is6TE zo=SWry8i=CEsa|S@EYDL=mEUY%d=>^g#MXd4x zRwCS$0jqR?E-2&#C}cU$=z&$Li7NDo^<<8d01;^Aq6BoMiB~|N3trhGcm+ES@k*CV zfLFGI=>c9zCtm5yDzJFqltZ4%#FAXWDHkf75?yY+kG0(Fi$6!7aIGCY-9##fW1Xas z3iNGSB9*D=(o&3@AeH}k^CI@eIH*%dC5zXb#QF=EU_utL%5vjOR2f)hc|ur=VwE~# z6=Jt2R%r$nN;E!(>bt@!=qYuXpF~5w-W;xr9@5Whq(#$V6nt4`_J{ZwAufeoW7@BC$-(-FsVSavGJ}dpDp-FCg ze!ZFC3^T!9NC280Pf<_N9DG z?gc8nq5PWDN>X)qrn}=67(=)6RS6Y9cbaJYKm||}6+p~qmqe971+YGxi9ed|5Ea1g zB46Wer87(~21 zMsINjLwx5jZ++-R+Xme8E>zh-rQgM?>j7dd^J;Dn>hkxQiV?-BYGq zx89?7^ynYBb=PUWyi-fh%FnB}2a1rz7wm?_bt8D*oKQQ$fn{#ykR;^R{5smSPTE#7 z&99GuFMv%FD!oz*-kRm|W3(Z=*1QmB^FjgGUqWQ38-5TJ`gVU_S}DlPYI^gN+xVI> zT@*0%6Yr|f0mFy40`?wsy=uZRX?Dr%EA1xp3F=O~9am=4cOGf(GpHC-*;i^9(RHl( z!i^QtYl$?Wr=(O6)-xj#IDX>NqUN0hX zjM~c--W%@k(-T$GTli!3vWMzX%h-G`ou8lQJ#FS)94!t>N*3K)=4!o4&zT14Wl9!D zZ5DK7T@HQ-!|h@tPGV&kpi75@B_HID=~a5BKJqm8kkpyIwP0^GP(Z~TDBM|M4wT)I zl7-R6S9{l_XsnE-zK+e4Ug;L!D_XEq>t12cNgC}FBiWW)MX2}GgpkuMN}c8PC|oreVjdiyi1Z50PN!t%%^OhCMtG!uwLnAy};~m zs!GDHou8GF=*QH~=tE(erWO4}fBA}Gryn3pZjQ*u0B+8JDKkuO5KH{LT4o%RhlT9AA6v#vl zxx6a_vR4=P`F&t?xX+{K)%_Vf<2BBQk2g6i5X#Xy+LhUH9Cg|E%eY%~Mh$_1wi{QZ z6C*ZSJ;ma20SoFNeHLgw!+u|9AOa8(yR^LZWDaABfm$A%?fsWyV08zHu33G#li;Xj zJ;<0dRM+IN5&5TOCWJjQ>6ODh5N*Ou!C%xt5-`Rd$fLyBp7aI}15|G)Na&2u&SYoc zZWQV8n;$*|0vq_?H++FD&CF1<5iYz^pEVH zG5@^0DI9VvczTqT3?|^OuO}tQA~*eE${OaGQhSy$mBQs7q;ZgVx<%qy(NzmB6Sgn7 zOsxcG=F3DDJ$;aoYI*e~J$%5NIHXh;u49}Vj1Fb!;@}i?8K#)EM~lil>u=rqv|7Ql zH9)tT$SY*~@->BqcoQgZfAdfR%L#$}7zo=evmE9r`@svG} zARm4oYi6>KegaA^j+EFg1_ z+CJCw%Eb+?xXZLK$TGg-FBLwV=m%fja z&7sO6Oq1~}&K@DLHtjv1d&RQ%-0>LND)z7Ck zg;{PkYO&MU)?Zm0UT#%uGOC54RnC%+W0t!BQhT)V7-qTZB8FYY6r@0@G{xJ6f&L#T z+e+h`fa}^@N*`6q*bFT&B%#D_m509FX$;S?>@aN>=qCZXJ^i|&L@GZPi0mk^#`zZ5 zZ8!&&8hhFa_BH_N*VgHC7i(J@046)^+|j| z7~BJAsY1#x27ch2D?5Qgp26D2;67BrLXPgDw+C5W^c^WtLO&DG+tc%-1+r;_{O>1G z46Ma^0z^OKeDx`6gM2$=_;EfBkG2*w@j<-5yU|!Evr~nf#Pzm=N2BbhP88%~l`_M4iz(|oID@sycOhW`p28^D(JHaaSjxn}rPZ=(@lwQ>IreO< zVW|A$FIgr0N#E%}JD;9{N;npy^LC%RcnOo|k?A zb_zM?4wq&Z8NGXoOV7B>AgrskEanWXi0Zf0+JZ#QEnF+8v!qk%e9pYV9@d4x@xrK_1Nmm?&*@5P-@+W zv%ch1NOmGxq+a47XdJj6(snbS{(veM^1vM&7RUo#tjB^4tl*UOk^T?gmXr|b{|EW| zsQi6Q{yr{$pOn9UmcNzq_i6e24E}17{+?U0JmP-)n_>P&`cL^CzM49`nP|1>Xc`@f zq%l&tP=G6eFvn>m0AmInTCflZ$@U>b;1jMx-6q{G0Ak&1zQy^c&r4secT9lAXHAV` zT2oCVQkuA4tJ&z-GYRu`%a%O@pgf6OF}`L^B^DY+_+gZT`_@oV1Z*MH*BQA50mvkA zp5R1eu0-yQMwZOSJQ#^cNF^iAGbN{Uyb5Czh&b(x621s6Lwklzl9t)7#!vWk&)|)? z4Px*{cW7K<#Q6ll25l)!fz(-pH_AMO-^yMnx-Z7cn1Jn6*e2Neka1eS8g0S+z^;XJ zkgq`!rf-dOLcMR7DyCNcCVl3po^uf?apS#0zY36D@oVL@CE z=$1Y&(-+J4bMalb<=>Ba97>;zDBU^MhOVm)+RjI0FnOw`r}QsGUUyUnSGRS?r;))F zH1xBZr7D0wy%l_iz~6-LfxLv$u7S>x@I|X{ViWJfpYYy5UZiAS6uO??n9>;vGuYhG zE8XjL+lpXE_>@m^pk8nPOm$668qCEz08sUhZu>Xm(Y@V}W~oY(jU?aRfja5wixCrX zp2G_2>37FI+X*2yZ*33Z6FJ`MlD_$nyoH>Tm^PF?TxF3`pCHIk`cOngoZrq6kOL6F zkn8V8oUbtk;~JM^2cndIdnVQf55+edUbGIyzjEij zKV*ZHaeTy7xD@x3l3w0{;0^CVDFQg+ya#Y`-9z}_VNem*XBEJiKsKBSfJFRUt}LMN zfpglp9kUxXJ441jN5)!93)?8j=svi5zh-|mJ>#cN38mj&$VHL8enn!q$;vxeg&( z+7(BcK>zwyh+-m6;ycnQg%B+iD2WL~{t!NtfV3nE*mDtun(U`h0t8qFwn#t9x7 zF+LidoO>gHZZif;(pWpYqLOU)o;19ubq>|vcYo-VP`*)IY}oVHSJ>7gY>WvSOW-{x)zparVu|vls+)dv^IprCF%uOafjk zBLr+6O23=o*=ocFp_d0!m+?FtP2whw2=t$9ZX^JP9E~3a`HSFq{M6d|;%}n#I9A4L z62V3f?A$VkGH@bM<-ZnMj6-api}yrI=V-r4uf_`&?mYe^Z(1;|`4d;{0nSB>iq;Z25?yaN_^9kfuFGGC|*PHehodGmIZWay*2`0{FIcEY(%GHxKL zo{2M~b=l!v7(d7pI8(X@?#@b>$G1+HmmTn%B-1p*#KZT0U_69A8vG9WrSrm%N>jDP z&e2C?^rE&DWy6LeCgJ`MN>UcSQ`*J2cFp0){hN*P_^}!s?Q4I6}?FizEyiHxvqP2vU`Sf8fl?JC_9lNh4T=FVA=wC8@5k2dHV6up4k z9fHL`N^>#=`DF%e)F9c zsKv?rMbHrHU{++SY>MBeA;n#&2qdNDACW2CZhVfh@di&Dr0G9|-&8N6uO3~d(3b;; zg#)J>1g9xnP(oY)<#AO<-I>mPKtB+zo%=0TPt%7sc=gjRM`5L%-Vo%Myem8~kav3N zd8>ssJfE{?BWM)kI=nHR4XY*G$E&AYP9Z5acGT%|XmA5puXjXfCafIBL716P1oQD-ehA zOT}4GLc-Q_F#9GoWA;5SEh3#4v<*9q_JW(tg;bP8-c}?4b$m9XgSKT&4Dq}rXnO)* z>TGu)hQ-#|ZowN6G~!Clw<;|31nrh;?x(jgXI%;pW)foYdit{qK&}LRDVbIzuJ}%` zup*K1`v8dj2pywfkHbK@uzR9OE=+gW`+*bC^nW%3=->!u9{GqO7}G_ZTlocT9ijzp z%F0CzaE-1omOQUTx8T47nkjVSKn|U!nJ{;XI3Gl|NF8+f?s*mExy-X`;&I4>h6MH| zmSpo!kH8Tuvnny~ymk#UKu7@m;M3DD12A`FN5r-fs7?9^ z2E)}YXScQR6rr4g{In;GqNg0!{fBj15c$ii=clX8To5_ngX)8}V&cr%Q23Uf$qWqp z+xMt+>7@o}`-rg#yNq!GsvGG4AmS6yi~*?Y;CEd2Z#Qsl3pHHeh$_(tA+^3f{IseB zZ+2O-#Kc!ZtASL5HE^0qt+_}RK-zTxILki7`88I=eE5Ca^DWvQ8WF+OUb8)v%dkh$ z&7C0hA?F6O+lX_(Z$X+jf|bglDbYU=i(b=rQm#_@6Dkq?v@HJ9RY`HKRt>@vcAp1jbn&*KL$Hi5b1*1#mOY;({LT-zIoY~(V4_Jf1pl&NwM>Nzo_1FKx}dPckLFM zp(FC+%H7*(Rr=2@Tj^(93@8ayf-c|MTuW0lEFtESMVV#Drs0$}!TGC!C9Ov9B<&Wb-NEWsWm@_={3w>5WHY=Rhe0GjA zs?YWuFB($LRY;z1oxn0naJ{?eD_AtGI``N4f&X5)Y4-B!B_CM1=?|A(e#sm113wy= z<$CzF$E-SOV$oMtZhG|fmt4Lc*YH=J^i$M{_`nlLPCGU{PhS7d!sd?OU3CIB6=wfo zeo(@9;KF5GeqIx}XYu;{D% zu1Mww+OB*2#MsKs2ad^K+qMl~A9@;o+k`LdsABnA;V-Y8{rL0gHXO+huyV#dHx}*r z%?VeWxay>RkUbwF``dDGgWB`gcC5hHMSFgiT(tQ!>W5DJ@O^X`v1^w;SJ9qx#Ye$$ z`W06|{V@}TefOsdCrxliH^t#Eb=K{#xPATG2HO7ku@hpO547)ZyB}XzC9iFp#Gd6(J9dJayLRdI_{T=l z$vzL)_R&ld@4j6+Q8cu3$6nr62M3lwx4Xxo)6{(?UipdBu5y&6twasqf5}(wUH&f zRN-8FKX+B4aPB_uu6JmE9>BTQ6sE5@j?wnhkE$RFg+C!@ZF>mO-0{+0jHB!nus^@z zg}71~TaT&a?QcI;jS}GLM7^zbd>OqqW-wm?0b>I81AyHhBZ-uEzS@S3{>|-a=L;u4 z&M!P3Byw%HT!lA_jZt7s^=Fc$aP^$(|{eHD_^KXu<9=L1ex$B+oX%C|}kDTwnVc_j>=nry&&gJFYfxEHRUR`@_-1z|d@qtzG z^reqaNmXCnq(J0KHZ~qaU+-fWk zSEHL~?>_g}t1(qvvigM+INS5HOI8n@z6_fHIMgzt;>XMWoEv-#?yFZ+X( zrAI0ZY~wn^Egh%MWOz8cQ-)CFUFf(x)#Hx51x=*3ZG`;8_)Z6{p=T7otcy19E4ZluUh5`&c+aaTa$U`EmZ^1`B`5(pCEk z$@hnF+RBSRS&PNqFrIg)?PbKDcNi@ElLdo?Uey)Vt4|e+bCe(dmf;uw@|LdRvv@7} z(-w=pr1eMmCqJh2nerc4mDxOf3?}Fun=i>ci8Jy=XSy5p$t!pUgFpD!BmUr?9F2R4 zvoU3uPMoiD+{$eq$`!_f4$(!*e<<7o|lHPchbEgBi>`wUb zrhU8V)?WPNrAGckp7Fr{gq!-c=+n5%o&JH1XKqIOUsLrZ{a_$I$fw-0vX`QvVaQ6n zy8Vw^dC6baldo-?VE;R}*YL9wb7#I>9&5hyD`RN>gy7B@Tjd{lj}`+r{K6d?qSuw+|g4W^2(p>3;F7DXVE8HeH+|j zJ68?WCEd(eyFWk6s)pKPB|Dlv|#9-+aU&{crrhHWW(2QRBYyS?e3d`&A z-n38juZyPlF`wPh^mcaJ%cJRoq}QV9Q=}ixH~N=i;7KircshyWt91Wh#w(0}s0x!>vh>G3T23*Ej{e%z9kXM2Er%I#D3G|sub3hVY)bjtzU z>lS@@)4o2aaaZ7{aCz(cKSFx#^O5T_-XG>3eQl$B4uaAii`}+;r@i=m<6{QOk&m+C z?{#ON4t|X{?UVMkqltdu-?UHcuX$%({;i5GgO~*B#MxS*EVIFx(z$+t$Wl zxcY!{9QF7A8y*mO>HkJnO8cQc;C45G&Iq{vv&jPRH3$4w6XSt^#sSX-=RdDZTH zvZ20FUd8)riC^QC8w=nrH}N5%=M;aBJ0Wj)+9r6@z61E#-TT(Czk2-8?P+gAd(r)O z(#E6vkFs0LN_*7(!8G-EyNqWc9Mt`Kf%6jcHGM?thSkaDo@vuG= zm3`9TPtMH|>-Il>pRRAFeP!J88~G?;wVv1I(V^A)^CkB6{POTC8}lLcH~l@656wTs z{Oyh4M}N7K^c_)jt|w*(C0?zsk74gRu`xe7Uhp5Z^=tFKUN>>K#d^PbDSk4s>Hb6H zH|?9H{$_NRx0LVTYAH{Rm$qw?;QA)fF8-?V z5a0d&vH$3Oh1k>nZl%9#@KZ!QJ4s&=O`j%x$I~M7kz#+oF`6#(r!`IJ%!ixT1jL^r z&U#q)kJZlw`$vplGJd|iF&@gJz9cw*U)Mm_{b~GO)1ONI#_tZ!uj6L~^6AFs3?89= znU6p@+JnY9cLEzJ9#)Tra=YV=?N|6W?VDnlO9vYBsp$^s9ntcgjDG=o7wPM|8uO#| z%Y1cjt+7A!{G!Rsp95;8nqv;c*FOR14t;=plG<}5h!}HPY zKLPr|X!;=OyQ1ka+}-ZhqUpV)uZyNnlinRoFXHZecX>2@jP#CZdIpbHa1TEj8UGOJ z2czi;9L08bMbrC8uSL^mNnaODFXQN$+Z|1xAboi>J%@*pxE;~-5z-GIjf_8q<9zPH zX!;=OyQ1l_C7{=$>Aj?{i>6PL-W^RZo(B5zX!;oG9ntg*9>eG!{%d6XL!=*!rYG?D zEO%Ely^r)-G<}xzbcQn120)2TjeT?*uXnN+kpdbEoWc)*I^Fv%;>vV2D=)Znu_LFgb16LI>A4Qy;uP$-N?)PI{k9k7Y51oph za3_d){r3W1fX2n<2XXXPW`hH7>g0`%ZO$6_Qy6$tMxi$Y$(734Dep?9w?5?ci$3bp z^ZA*tszd@G;KXurxtf>)%f{rm#l4(Zj%sYHd@?csm(YK49xzFz^i&frMn6=F8_Nzj8!`WuyY#m(O8v3| zu1s*BKE_A+@7=GD2dw1qo&qw$&{hzgPpy%AsO9+a9?VCX02YYzbM#w-9@p-df(w9> z&VMQZkG`yb7MJV#=bW=mzU_t<`NNgh91k|=KVAO%-V9cNDX{U5A>60()JbfTzjw%~ zgYFz2b=t${9w5kpRYg1m;Z)xAyZDtK#ytxkL;b;7=r-IO@z8O&WkC{u-+2%6riE&X zX-D>*X`~$zU;aCufL1?UiMyk4O%r!u)wYsld4fym#lPqj7Wt_J7JEtp^(BXZ+?hpc zVh5Zeu1uTyNV=@=%IC^@Tx0An-%I=Iyh`$gir>^voOhZ&^I@EKLLtQD&MgGdiit%`OWowzx}ZWewuP_h~gg;?Ic#rZk%9|eDm zxnGw;mlW`CU>k=x>`#UK5qohh{};&j(cYSc?X_$EKY@RU{L91q%m*BClORa>4Q$&0 zMzj>Aiod?{h!+UtfuC-_TvPRJ?hKP(p_hJTa7y??xN@&V?+iC5~^jKzxHZ|H(Yz4Of8dB*`mAEG{U-dXPlk3LV&PY2ZaK00go%jEC>^zXg; zE#*7;6BEx8wuia94W1_djK;q9jPsyuk2nvT!o!g;L7O-$)c95ZI3)I_%zRn&RbQ#~ zd+jA9?WG&DbWU#7WOc2x^g&Kh7XRW*&VSJTz71;wJNcph(EJ{^1K}Q$T8&1WGaX1{ z+KY!_RN;THf_JXrz3jet8qW6?Pmhi#J7)5ef+@HD9dkWbaQ}CMIBhZOmpgfLklt^x z&__pu^hyX%hU}FrR`TBt%9lcT?xrBU{}ZNuNPW-V9*nPI`TL~5oHBIbPd~@Vvlnrb z_qbmD;y~h-Jbu+4-O_IjzsOf!ZuCk1N**5A)=PbJhc&-BPlNNtlPq5Ed`-$7%t?DM zgCFfT=k^6~uR8)A9=|@HyYAUaExUU81AQ&+^=o^+`jIo^T@L4;WhLeuIx|#7(7#Mk zejEfU^vQ?nSC=ys76w1;7b%~8z{Hy)PJ39-*Rx$ZUjypAV%(z-Z0jTc_`^nC)d!22 zPvocIrf!vdZ6$x*qwD@<@};JKkn)*(rNN>vTpyFRehPmnBwx4kLLWcR=u`Y5dL=|p zhUoDSeexASef6xt;&0Zrj}+tewFjY(+xji^Y6z!8xISXqkI46bOJjX~FMEZ$5QX|6 z@r|Bq{1KeIF({w5SnQ9!%JBa!Sk`+vj49rDSD)7ULj7&VIs0dLq=`Ncf6@0IRvRFX z;L+CVJiHz+^Y=%|KltBP{zgy!TVeV7%cJDK;gi4HlmB2?e)zs9`S<(efA7h^*e5UL zlm4Y{FQNET&e=x3)49Il#g7SZApT@z{vQ0PjorL z%yGT`EFI#Xd09~3xQF$5Bc3lvU5-_xwl^2D@53s;SoLuH^!l&K{-FLyds=`0e$B7W zS4w}F__2(4T_`_b?0@}O<^vkHyAznRWBfI^OsxCA>i-7qSMD@8CG{ahuip`*&;8o? z)1&O;{O3BGkMVKCFZHElvFNXQ@;biJ+YP_6AEIY1UG$CrAjm)SD}z=24AJ9u{A51d z`aZ+2#yd~moNq<`o+;yv=!;u^!Raw0FaG93<6-}8L3-TNU)z?W{mEMmUB&Z1L0qzQ z(cd4UPwox!S1cC(Y>0pEzYM?7=cWu6`&CO<{(L`3FIg<|^^pAJo*;kHV&TufBuKB{ zVzAI>&e1qHo?WQ!zk22h-~Cr_$JT~i)p+(;Xz`@xo2I@e7E60zJgU85jqJ5oGk)m$ zH~vd)-`_uAjqLH)XBz1lAAPuq{E)AI8GppYEBUQA;g9+F^K*^%dR6-s`OzameU&Eq z5{h5yd-AB^7hGz>U%tb}TRHX-ufGy|`6m1^AOGa>n%|ed-f^pM_@tn|xV=BimXG2W z|I!J=FL>q`CLd+5JTuP-mTwtrJg>a^la2mN{J_#H&ocTYzG181_>=MRk3XkT-}FAK zFPjSLt9tsp`h_Q^>;7Nt8M-fDvsilQBQO4Ct-S0f=5cLB`#%DGZnjJF4{Ve9PTHdnY)f!{lJqdlNCsYr1c}s@J>N-@$sf z)?ILNkO^$os_~hd^ltiFW<9!-{^UJ-YJKizEgmF2ZL!P`lOD$YAotHFPc;6Hk-wTS zSmtjPi>FC1c^K>yB$0k3f`St$c%w48_O|w2u?$>x=+bs1}tiC~s{{-WIj`XC( zL&RCj-$VZ4Qw;yK@LPI<^!{NJ?-c2CIE$*=layb@%I_w9($dAhyeE(OIQ3;M?i7DL z`I>5vNsA|_uRd+^LoDOrY=_KmilpZsHS`1zUYYuj`3es@4j(Z2lY?9JI}IMAd<9Rt z)A0zdT7EgmSF!xkKUHB{^Uw02SjEHUJVd)Y@?X*)O8bvn{cyZUQ0Y~`G;74MlJsY{Tn~oly3_BlE30@;vcb_w)%RAt5zQ$ z80JV7PD z^h#4+!f)uFey=^5`?s(^$^KHy_s^PqbRu4y=iZ8c?nYfKEL!=~~M~a+nzz z^zq~R1g|&p`UKvvfP+PuCj7{^v}e;_D~$Sz`_ss8aL%1YpC;EEe9yDUiRQ=a5A%5z zC=*;u`yWiBWxoB5(Wdn=hZ1x9^+84BFV0)^;>X#yTl&LE97dr=mKW>Cb{zh2Q(v_E;K=^sW|pGUuD^3zLt()uU-)i>#U z7<)J`1{u~L%4dIW@*N}Yzr^s%c$l>Gve2Jq_{WH=7K^>%Ul{rj{mK5osrFZL~ejClB{lK0m?K2Ji|*Bo@B4U^Tm;mf`%i+nqj z&;HKXSNguB?PLDS{with34j0bntwpa&;88E_i=oR-)Ha`>rd9!2RR6xzRl!A%ByPg z+eLqT{o#m=f43U`9?@^@rx=^ue}*$dD9>KXSFAr%#OavvX9E0gX@_Ya8PZ2>f4qTs z*uw+c28okaUxGOMSEbLN?-YIu=9{d}c|*Z`AEEsC1I8cmFYDQ>Z4-Lh!vhM}|6B9x z{;=Q5Gk$mcF4GMzhLU0^cSN~Gx?VrMJjs@ zji=c@FVo*)ufO!|H;#SV&X1C(n*7ioH~t)x?=o@z zh|=e;9~t}>96!p=lIwky0|n&gj|o3&i#L8?ym58}`PpBJy`yHoeww)cVpG3*iAVor z;u|6!*4S@v5WfZdtC7`N?>Fh^FNgWNd!2%xS&d)PzJ~v5{7bR^&%Ma_C*_^B{fpGM z$!{BfrGE8)#gwnqmr+Y6mijPzjEo-|ce>NWzWI0YJGT5vv#PxO@r;09$1iihT5U|? z|B^4|$afAux-(}zs@fCILrFY$oBElP^|3x*2L5UCXCH5@4=MZ>%r{w`wvfGP(f?SZ z{4{MZu_^Yh1qAGghU^}ohcI1hXw7~clwJO5`>zxo*8%yqVX5>L(>`d0FfTU;cr z{Jp79QYGU1#P~Ia&W%Jj)wnvb#-v7XI`egEQ>!l9oO}d*1z@ z{(Q{-F z(T~-kDKEO>oEOqROZoZ{T^E$ee<CbYUANk5(#?QFrpJIJVdi}evKkFN@{aG?;#vl6Q&b;5$ zM?T`*9sQoMU*wI9!#5k;L;lH|Oul9PFmAEvn;S9oF7gjsdXBhqt;v^+*LfRX7sunQ zwJ+mq+S)HuzVx5kA76YE-<0?=q|bz|4-DJuQ5#6l-uMS^elsZgb}4M?10E+BUT-Gg zqiHy7Eciox7k&ND{bNAi=$Q&Hq%ZS6yoA$hh)SJpe@*P?z8GzPa&gdpJo(i2M?R1B zOvt_$&v+uJZ|;<*)|WUN&tC}XTPXgKFEqxp5dXwIIKLUv@A+H0HCUe2y-!`9sW;)x zeU19ovOXlAF#7tWe*DQ`Deuug8Z7l^=Fz9N*LzyD|H+4g`tlF9pzi?YD~O6XwZl2 z723ZX{VO;lpZmYnm%jfae{6fBey@Iw|H{NKTa?fdu}{OxPPkM&0n+s8Qevh?^O?WJG$XI^_5{eD9} z8rnP~i%SZk@!F*J2YS7n^kK#Z2CPFQYSH0IYZBNoar5Bm;Mas9-(J;O=XfY3EbtXX5I{{CNJ9{zK1Ky#0QCJ|6$< z`S@Pv=pHn&+T!odw()#?uk$i2_ZK`Lza@s*s2q{UhWI=l@~h9sPY(Z~>G}BZ`TBtT zZB{=2tUorF*U$H#d4?%JRh~~bSn`+jFyr;zuN$!UW@|4C{--$4kNOzAKVjr8jqMHj z?q&PQTmMx1IaT|&kUzKKq3Ak)$&;G<1N{f6f9|WM{Vd^nAgQrw?|TwbFzUvIZ}Z7d zGEzf+n({MWX;zz7zd zFId04`!8tJ`Sn|75e~s18{zr|pwk5!F*_R#;)9@>&+EiY*-o+5o5MCuzvCPx4q8ntGr&CnNfe?`W|S{FSh>8VLcMzpY%6Ly?+9KrN7DQ^@`Wuq?@i^ zg7c5w-T%k&?9<;g`Ab57Q~wsq|C_CR9`omB^1ggFjK35A99=(3$G6blwnWS4+f4nE z{wj&}6iW>Gl>Q{I=kLHmpZj8vp7z?qg7N>S$zLA)|JV4-pN#fDY5nh%_V9V*pWw>B z1@Y)nv%jAr|7bjvKRw^TvkD&A?5oCzU-V_a9MtD)AEK{*oXMx~59|50Dc?Q3jD%@P z#@W(Le_qdLJ$v=92ki~p{$BK#?of2Af5g+jETmujtA_j=x8t|yi~p~&C;a*Q3>NyF zo-bH?2XL8C;<@<~!F-8)GGuSk&X+}Bzuj*Zoc*h@C-S4m2J@MJnpzK8`#ZgO&ueBs z9f>@piYU_{)la ziCg|RG&jxP?;8CXMelNpFO&EL>-g4vsWHA0+MD}|ktc>f2{)naX^is(;DNsyuXU$! z4?S>7@#B2&uf_iy$H%HR1ph{OeL2}}&ZiEMo?mL(=OFFREHT%=dWpxMqp&G|^ZXd~ zelwo0jNRARzX$p4^#JluOgHj-`HO#7$B%r{-(m3T{&9%@q;Zpy#_goXe`WX+JfApo zz+gH5(BEtBw_Z#6`gTS4`PZrL*I%;vl1@IKhGuZ=ma~uf#mgT!24$dLfoAHW&mWWz z--mVz*aBqM*D@8&FZ;p_X+e8BADwu<4e~K|Z(RrYQFBmUueUpSzLv%4Yz(V_ z{b`o(WY*kYK1f_T&y;sB@%WU<*M#JIzrit)f4<>Y^+)@I@)G^&51RX3g?}bv_=%K`M$`f+o9w2OH3KGR+^#KRuOc|1O7c>Fr!pU~?u-QVf{sCt~~|8kH=eLV4g)<={_ z5B0@AYuZz%qCfpNnlAcAk1_fv?^d5Q_KG4uXt2;r9zW+NzVpx6FFdwzaUotf?uRQ! zj@iS*H1msp30H!X6M5I5ZeL?kkVLwPSj&R!=u^S5xBU)%Vu+e+pE?5uCb0SO%O-hdiTQU zg9jCzkJH4R#t-i4p{{|A`2J}=2G4ooN=}JBJ%#V;k*cd9jlql!(J7)#aWUb`Q@og< ze)?zXG|9jhy}o^`XQ42#cemJhT4A6UKFReF?;6FFdIoCIdzKphuLW~#Zj zpLg1aUz$GebXBi(fQ5md%>ROqY@@h+*xJeJVQan4))};*20M5>dF;+ry)kq$Ya4`$ z&IJ@2_=)qy%o9xL7`UA?zmEdDWxnIjKgZk0uPF>{;je{P?pySwef@V;pINvi_J_8! zQB7in;|>(Am5e`hYGF5CYtFxG3fJm~%Bixr36Dnz_S#+VzDORD$;$e&B{8(LM)1TvhnDURp=MkkEt@==KeKbpd zvf$PB$B5G!`}HLn^pVwhtkS;YZaEo=?0kiodUcpP@LH z`1z4f$=CQ#Og@=}!2Q4MII_^i`2GH;8uW|*Z6Wze>i@H{YC zotr=C%OB?-lpnVGRQYP`*VosekF3rmetmxaqVOYHlV7^-oag6f{bWAUP3$Ea?2S?W zF+P^WTMPK@P2---V7w_Qe?LF$6=`qO-oLq)*mwVDA8}pN{rdYF^bgXXOZ@u%{6*o% zX-5-(3aXv+qWDt{`V-XO=I4k1(mpE(P5qMkHac&xwC7Yl;IF13!Xl@eQ6;J-w@PN@+L7s)h$;cMsgXy0$6@A*R~7jOt*5z&DL<6a>muVoWd6x##lfGF26v`_3#*tS3&>V6rFKX=l&G_tlp0;Fy&(q$(;hBqf zH9Y^V&nN%$tP~#evH19RNG`?MPhfY+K9Kx$Qc!Xa!*Q`B=|cS&L;U>1*8}>iDp{se zmn?ajlmkX==BQA+j=WM?cVT8=i}tH;S4OWiMkV3cASv*L3-s0WFS&OHM(-ya*@Z6-u8REFb zJ;ZZ+O#CctcgEtK#FG|J5RY4Ygm~2A6wm(;TU;QnTii?BZ}E2Gs>O2uKtu&$)w-Me)WpJaW_}i9`B(JwM*a4B zaSvx;yv5YK$8SvPuX@F!pn_mwcL;pJs@M*D7r6?OD=>U4a4h80pvi zlNXX%fB45Ywur*O>+w`tbaBV8Rtpg}i&lEN#y2o5d6K;1o?O@;^z7FA^tc=uJ3|(|Plv(M7lBQ)R18F2|)dow} zYp$}B6wO#(;SbBi4QjPj#%gQJG=8!YS|PLJ+=~=&9ajvP)DBBw>;(tBEHFU);VXHS z!(^cTOfzXI;cJw1r#QsM8j0Yv@j)F#$z&nYD zEiQ0;s$0CBxZh$fQt*5fBkvGbES8O_lEt$A$y;3J_>{F+HlorNkC2|Uc#1e~ag5{5 z+?~dLC-IEMMdC?|IYW2HEgm8swV2Z~ci7@t;=094WW2ICC*zgHYl$ls4-%Iw=H%YZ zTRcsiwYZ(*RoY^?A1-Ne59x7><@q^tcbNEhl0IYcgp7X{A0ZyMIK>wij#^wG9=5ob zxNh-w;(m+Ah^rPm#1)GZ?Z73AyNL4^mx;3$ZzWD!EH6e(T0BL1+~OFoN6d|z_&bSb zEG`mHTD*aH+~OhPQHu`{4_iD-T(@`$?;q^9I7eKycr9^7W7B@IUsS|zD|f#Z-GQF3 zV2!lo-QLKq8hoMFao5F||K?9u_Y)fVfmL1R`azd>{a`C}%`cAKWjibMKN@G7ODpP;j`covX{?7QrpyAK`2edzfr1yJt&!3#~2mc!V`6Wby z{+L%XA%7F1?`E@~O^ks-y1_Me?|z#KqY0gR&TjV)R5fivZ)dkw zyDgI5N&51$9+PgmiM%Wm_Wo6+sR>=Sf!5s?>0gfBTt}^O|6j+ymGr~6M*24vKL+nl z+ZRcnCcV1}J;Qv*EBbn%slP?Hc!S>W=YEcPL)u2narIVC_u9}-dl#lo1*qc`s>uJU zxnbHkDtj!rT<}U98t``77o8bXvtPT}-sQXkD+RS;9~4DfhVYMnn855*-!R+6e!FZ= z>v`vp&>MD6Fu$Y{-!2JeOjKg0J$lAOHfIqwxnN}o-}$Evsu>d*IAh|Qy!5t}o;-Fr zzl6)&dq49u?!9;SIA8l}aN~VdkJ)v9MrhZ)yYrz_{9Ep;I-#M{$>03&{GF>(#{}kK zosBy#XusQ8F{`@b0!u}$SS;iJ@GYuhfG+FPyrr+Dd{$%A-=V*ZjfU1+HL^MnyxrGj zLf;4**5r2@_m{`;TVTCbBdc>mNM8J@H<9makSD8iiC^CDZ&CQcV)j2d*>=wJ^TXc) zS}oWV|!k$ z@6gp?adSHlfY)l0`8VTH?pU+6T{X|8F@GLIGMp~?d0-0-%g-2B>*}{L-SqC3eJlL_ zSInERA*BQ#(Lj{nuK-q-Q}WGQw_q$CFPMst^2x!bJNzMYexXQQeTmsW7$WYsbiwft zd;A?=eh3`P#3~ZC~NO~CY(BFKIJ})$&`t!L@ z8vlDqPh0wS>YMcFc%B&XxWyUP&ruKK`MM_o&%Di?M;c+i=02p`mpKoRb2GPd*z@MQ z8F%naIPYaJ-lyZkoA!;+t-bh(-LCob_&4pFjiPsfAmxLyf9Tp zK624x#831H#`|A!&;{k+N5#p@O@1=OmG`KL9Oz?=Ke@~FA5+9}i>3X}ebdm}r9E1l zlJ;nEm$XNV%aUJAbt?h(@-2Z_fmeJ61eSHpCEq`pr+pt06B?qU7BrqbV=`kkVDeMYapFy1nMH7S%&5x?O4r-?7Yc;o+J^h-YHb{ag${gwD=s5~)Wo&Zm9zDrT( z=JP#cs=kW7VXJQg{jF0us+;lxz?{t>03+xOHJf+Vfoq=Tz8iFRru{Cgdd}W z=}+jY^H{gfe?R~9*TeBLb@>g*ywQdgyV&C)B-T+{dA*l^^moMEU;LoBS?eeV@_x8syhHtNikoo>TgJon?MH^ozb>>wi(~SuFi= z@;^;HBcx{w#-FnIbB)PIFX{2)P5VxfKG$Zj(C2JCL!=K|dEu{H+$Z|C8U16_Uk%b_ zzLDU3L+#J=dV|}GJrdwC%8%-eDBv>X^WQe}r3~?~JwHDr_+=)(oY=>$%DO(v{Hx;W z3(X&KauR3CU;0{kesm|!@8+DleyiU?|NeJ0nLlDYr2e$0Pvf}7y+VJZ@h3(9Cf{b- zSDExlZ$Aj}Vgtm@o?!U<$RBSrIL7uniL?DW9>FtqJtpy`&koYF%MBKKe22-0$fsW% zq}Lx*bW{IA^OIVQZaM32v_m)D;rw8h{??BV>YEGsQ$N?z$v=6q@rR04eV}rjKSq88 z#}uZ&f@jgEX?udFiT&k?%_oP-YKw2UKvvl)=Uv!$;gY(-AGoAOgLTGat*s0pEG_e~>D(LC&Lp?Kis0yvztnc90*xe}4JT zsw$`CU+Pu4KfTQ}?8)o=&aE=}OCdyD?>G6IChmW)!9&EQyUl*GtUu#+y_X_A`8uPo zm+O_hl^-L0IH%~r`oQ~ZI3MHtqfVKo@FGT%F9}Kjr#w+|v7q<6i$AtUvmGhD%@S z>#trutt;OiEX)IkxmEidq5l=z|L2(h;cuAnp-i0j?9<)_7jipVt*}?&ipTD0u%M$X zn~f~Bft=#c`?qjX&p&+S+KhiIcb|q&G^x2F8)A)|&d?9h?)16AMQ8R4V`zU`F@El5 z?=VFUa(W9IieRDH7Brc>EokSYs~(aw13mcBZYAqe1>|(D#ZrT(3g~MChdBB^as+mU zQ{GuF^gmMm+1Hx#P9YGt^6DU-d!E4~q|bfC)Gxu64H|pvkK@ht7}h6TZ<%GW9o5@5 zx;HTE70_kbbSRq6QgQc2)0t0qM>Kr{=|{IJH~sdDj3;aTCHDO7ZlX`q#oy)8bn&+% znlAnx*48_PuKDoqf}w$AY!byPD|R55W3m`fJ>u!)~6pKZo0- zcCPeIMwLGa+DjfV&xaR0{-nX|$lY|ish>Ieo7C9!|FBp5BG)7S^~*F^o%8%A5&r?o z*N0TRM&8`tit!`E{f;ThE=365R)CZ#c_CgCSK%g5Wnes zbs`3IgA{eza=s$Me%dW>g#M(b-`sDUax>qT`EiEvCx05~FEIZ}xd}z@l=|k?C%qpv zZt<+pCrtTDLn?jI=o^&$YJTItoZr#oeGkWbnsL^FEm&Uu@@P_N*?WP1UkTZ`sFMl4tzCN%knmz$D?qOYxJaO)iioH$yxUzB&M$==gcHPnXQ>5?eQ{9eVe-Vl$ zzJ!WLuT6Uzr?q$K|ii%Gcl8Pf1^O0 zteEG0DEt~VzcB4f_Op0?5#wQw<017shpdGCvtT!}OPeD}Ocj!xMY+xsBS4&4-%bfS#b4HPQ48=_{h?Mbei> z(sPE297NH-gQd=@oOJT>(g)MuTwY$Gesdhr*pMzI~1Jq&|#Ken0H0;+vtnATXjEZ(?Af65>fLZ3h>2F2nUo?Z{;~EVl zWgiB>EwM3}-k(b%Yr#2fPOYfWzjTqr{l6SK2aC&Y;(^;Ax7_JXm9_Q1b#yvcv zs1vY zelouBi)Sw#H|?#L6?tZbX|FkA@4OG&KQf5xTc*7-yKY@40`x)Bz5Q4l?^f7Hw<1%9 z`(N&b41STXSotwJnvWTODCnlYXZGi%z2vQbMbfkOJWnTa(&|eQ&&?ZuGsH6<4vxpT zc7Jw}^<)Bb`IK|f(Lbq6_mAZDIE?&?{Aio;PwD%)$rmx|Pr{w}JT$5G9B{@R3*a8N zh<6Zq^iBKv=vK$KRJUl#$kK;MUx6bDhNjC;>}}d7-TtAw!sC&)?_F>IXk&d%QE~ON zW_<4y{pTt0?AOZlaG8^-8Byg3ql`}sxU^iNEE8)JL(y?>5a>R<75 zQvWp0xVZrCaVM~bgMOjw_-YOQ8~PB`mgA0G1=J_=#mEf2LXb%0oXt2kjTn&*77fVzd{1zYO^G z^R5bPe<^38{#5+By%*TtQ_j%B{3u_2e+}lRl;3Qt9Af^IxE5=HeR`f zTbX#q<{SD@TD(gMCq`n<)2tNoKMh6h=u1>VHptVYmZw#b-;d5wC$52?DbW0U%GVg} zeQp7MRmH_W)N*9u{gxTEu0cOvsjKz#t-9jR%dAKPf6DUT>-qDv1^D?2-h|56ZQ{?b zu*+m?Nl5>)J|qtk&)g&tT!Y7scusvKAm=rpuzU=?f|Z|t(#pTLHF-={eDX)F{8>%q zQQmT%vGgx`e8hZ(4Y~3=b3I4uL$+=(i_lG5exXnPtLd)=&&-}s?A5S+Zx%%=qRmo&fb&p7{;_m}wl zmx8>~xRBtZd``rgMDF99Psq!S557`nNZ$NtrXHLhCGC1}H;T|59n|^M?>`&$_|5Yf z%kCg}pila1Jw6>CZXAD7G3d+VEDP%l_+|c=wU~7D&wXUu)kL0)5x2U{ly8o>;$gi1 zmVzY@V?T%Vyv3rp^r(^FN&fg(wLii9>HV5#p5?nxkO6&bl*L3I*0bTx5 zABPU({bcI-WrD{(CFR*eagMhm0bF*6d|0oqYWPVxqCY)-oAybX*G1E(Va7f9P8GJ% zVdYaS#$C~LDdt) z{m>D`b`{x#uJ6ae*$}X7ESvjrYFkCWdO?SN_|;n8&5WOU^|O!v@waj}Ug^jEfLpPa zLnpn~xdBHNyi1>qKb!Z=o@?RpXH|R#98p^C9Co1l0DcmMd0eOSN@xh zPnO%Wu}N9yTF9qcW+ba}yu-Npze~5T^k;Y#A!(K4! z6Rt*uV*CrO-v&@E%J8Y7f53Rfe2wb!8HjgU z{AoO|q33UEf3a3$+MHeJMguB+_Q9{`Z?Yapz>Kpo%ny5gv^S~GcLn9`erB!4G&(E7 z@;k>0WR&hFCf!K;rcsgD<;^J=_5^m}k1*tGr62Niws%S?UW%KBEqyCPU& zO@48GE{ES%@@?GaJgaOrEqk8VxWJEm_E5h66Uu)h-*7!x)}I~WDi8St_q&Eib^K<2 z;!y3Oe^x)!HTeU7hWSZvG5IPGCp9+q;eQ|A|DYZlwPy);`O`=_6eK7NhKZ;tVlG~MSf+PluLoR7;f zzbjDf0xrYfP7rV&*636D(AcMMtc=zhSYSf1ikF#x~5q z_4}CP&o}EQcA9SGJElBRz%sv0;0OouN$k#j+4E=H7@z+z{3^X3!1YwVUwQ6%MxUI2 z@3-f*hA7|vRlVLb=P%mbzVk$XhUHb-VDuG;^BSA{p+Cvsx8V60iaLwW2=*sirTjOV z_A*55+s_v~YVS93=-=d(js5Q!ehZ#wAggl&ioz7T-@m~I{xbbr@8?JTpQb;PA6NeQ z<%=Q@s_E}jls_*ZkN%qSbuEwbk^VUUPo{i&8BctL$>(ev@Z2j5PVjx)b*$J}KRx;M z&&>JJ1C$^4%GXz3sdIhxp&A~)x6m)M-$cOuCRQ%z%8!_aV&Wap{Oq!qZN7p0e?b|q z25T_qqT!s=eL1J!-d}@0?hl=%^gRN7e_bCMgK$21<~debgFJ@>>@U$DjtWKmcV2Ln z=@lCI*@bF;^rGq%_dmm^t|1}*WijZ3MCT^4!2KRL`8IJ9{f{a5KBnzeK0hPkT^7S; z3G^+~`u-yNp4Jd_*?HvIHfT>7{x|s7?(HWr1GuP!9-uZ$Z_fIdNrF!v^@ogZ<(rN5 zc?g}UdK6{g`D&N=Ju&u?hF;<4QY*lJo}b_Ak0u{C{d)=mZvO`iE)vIWeV=9jGTdghwc3Zg6FO= z?NxC7BL?@8KfN@xAB+4HuMVGgV{LL4pXMuB z=0B7lKi$~xqy4nC-$#1V+8d%jGtV*p^wOWX^Nc@B$RD@HRtM^~Hj5IpmG zgGX53lUJJj_7M-y7(78d_Ys3teZ0qD(KmUu@lW-~HolzLxAZag-zBfV*Utyz^`71r zN&dJQ;*Mraenel~#@kDMrMH{?RIC>Aqjeq*i0s;+*%)V11N>E5lzh=S`-W@9e3M zc=a9UJWxNNOX@$aHxbthCcbIu4{W|=J~L_am6Q5?pW&DKoqVIgBh2TpcfXCVKS=zY zsn2e;!_+t7um48N`}ju&vz)gN0-;k>pg!v z9zB!iU!S4okN$iY-xogrS!BNNNc!?^_(SKZaMl)Sbvmk{K>_up!2I-IuHrZH?BDTQ zU~I>pM33JX`zyR3gz_`5^Zb|nayNaE!6}yaBpwN``?o3Lq`hBcg!gmB?fqLt;^aqz z?XPa-Cuncd=1=;&{%4!^B;{Ap_iw>JmWS%EULfVI+Amf>+MizP8@BbuVSTG_F!j;M z557?3iQUl)g5^K=2IKD#>u=Wjm%6f2HpB9i;vzeRyDp0->U;6W={q-{cqaC{a4Q!M7ce;uGLD7$B%y`4pIv0lYrx@?} zcB5bNU())Gzj%_7xqe#Y_0wJ_1N~-V&ceW7kYBGKd7eUDk3WiTIv~RGrTt3Y);E?< z{8)27UFydiR$SDNe29ND$7s5*e)M9E<@KNOtGx2C;a~X!amyG z73N3$eavSa1f8#)#Qhde5LYceBKfyC#q-J~i+hRl7LO5UH8%bsKPmjCZj|z#msfNg z>5H$#6n z(AM5CKkN1D`Dc(AH+{ZoU&LxYSd;NkW6b|vAoIUI@+Vgse!+8> zh5E07RX87^{p+NE(-3o(Hu~3b&S}VJ{AAPqWd4>f8~=8)Kg(Jy^SQLfCV!}33H%mp ze^ljcK~b41X82`)(w{%spWOK2P`**#yYPTWw{nu_U&rT(OBSyu&U-jCAH%k^>b1{3 znOj2gs9~IC^i`bH6hDLiat7 zf#vOHJ$^G@CEVE$O8#=9zt@z9;F3OnYVxzE3vQvZ?FP4V|0!Np;BSKGMfxjE=70Dt zF#oGiaiK-cGN3CYWOo2r(FJ~h5I(N}EHM^@)NzdnL+=geZ#U|Mv!&gaKRJFb;z72zx_y3|YH#Ow^F_5@9==q? zZ}Qo2|6q=FWh2;3-PQf8^dFTIy?8pVeLBZK^Zb#H%ZTURtMeNgPt^6D)qU9gNMEEKE*YYn_&TIRg{5M*bf2&{q7Ek{DEz7?y=F9(Gp8VO( zmZ%UwilgD}UiEUE9hVA->SjN}s&76OAY$5-QUhnwo8`fL?_0tlz-MyDJ z*0&z$bE_{>^*1Q5=RZZx&p3WK8=J^0|Lpp|kNUjz5B$6K1o&5d*tGW%((5?;EcLI} zacB|f>9GIkFUxNY&(}ui!_Sc#(`J1BV!o^6&2YUq1~bkNc;E$(htTJtaL(oN6>{Dw<=l+C*@v652XQ`( z9j`%kFI10n-S3}7Q7%6JVmTMnUEmz@_P%0caV&KAhE-MPZGIBOy&N89lg z#k8t(Q`f~;tedW$ynj^+R$^E?K6I9I1=rztdS>C;cE#S)?p(s(u3h3>h5yvv$yXS` z6&Cd|=iarc3uE8dqWZppeRw2+ad8`r@;bBoi#STj_jAe_$1lcB^IleAUdARb%y5_b z2NH#ASEoBs!%}Ds*JIda#9qLc>VPx$VF<{ls)&mZUE7X6;?Ic>zpOCOv72E22Ze!s zg-w5sC1SA;pN<28M+%#N@Pfh%_Z2pe;p>qzKk~Hs#h>~h&e({LmoEBXTjEv6#x7lS zP1{z;-`Vydd_w1V=k2T)-e2wl^<*!uGe*M2;mS#&1P)A2QH zi!ULy)^QR3Ik((`IyUf^!oYJ1wKsP<@4zf}58D)J z!u4;*P590{xrx&Rzu`FG`DO3DOwKP!N3nQ?zkHUoTt2^F$MQ+T2bNFoD^&S7TUkCo z#b;yr==!h@L{lFM1TEEvtHs_ZY8vguw7n%_@0f+`?f7S(y$u8{**it-<+Z)Rm#g>+ zkiWC-9DGK`chGNdXUq1k{{ZtjiN2ljrL;ZzduQ8w7P5ErlfL+-2wIBoMPjd_?TvJ) z_;y16&bH6sGde!MJ@U6^@78}}d>ktnUryWGAokv~kiDZ@{P7XA6yNz`uV34nc$tn5 z@`w+gk@0o=?RBjg zUwk&kuj4z4M??_bn9PMi7lX=A*TI{{9lim)7=rwY^TUcj`j+{>JjVTI`MfS;ZIA_F5>vLz{f@ z?IviczMLZV^4i|uIVzu9A&>bdJ|oL-m){=wTeEk4h54L(LdBQT_IkwL%7yG5>hs4( z&{BLa5_=VGZv-bRWPS~K#D~ww_?G+awYO~V){7b6+z}ODPTQNhM*0_gM%vrq&*z4g z^Lf75>(}-sUaaCPNIuV5D4z%Y@$GCmzI)!w_>$UQS=-wHd5nMfjEwInf;a7t`Dm^D zE*E>le^U9JeUXZ9r{wc93+3}~EWan;!}zk=UZ1wtLiw%n$JfXT-yZo}%jX$lucYk_Em!%Rf+dW93)x!(qA9;Ff|lCfjhOCX{CiBrm(ljx z#onVE7l>~ch{oPlf|l&PTI^M|y|KSn@%2C+tAiJh4MS}abJA930kTzr-;40wl{dT%I8+dV|>78Wcls#+arH# z_O4&Ud`|vB#h23ddc@w!h3p-=${!y=OYyx(>{YbAk-yXNK_2npGcvyAetYdL+q?B$ zjBoBy6<$qY+!$u(e~QK-lH29h;J8&#@<$fmh8P+>{YeBv1Ka09>`<- zTgcv0e?E`29N*nNj4!V36}7zs65mbujBF3xG-1ZSmhD|6_UeaKKBv)&~z-MIn?eg0re{1%xe=GAjiH9OFzLd7tBlcDN{P7XA6yJ-) zUPap*IZMX}dBlg$$oQ7~?X|aT@74<$-`s;LzMQr?5cdu zrc``8C7+*JD4&00`8|07w!GRzlH2A_2=_Q%kka)kBl#_?G?4X0}|g&_>621-85mw zzn1M?B=+jRRr#D=s^U8$@!hvjd>cVD_Lz^>^7(t*@PhGA+w0Z#I>p|p3)%Y{%kOHj zH~N5zFQ)CaP=1F#?2B(VK}+@J6tS1r_6AQ^`P>S5j1TyXEWcfTd*pA;-t}*0J||~X zd?{_ON9?U!$ljq3`QsyKDZUqpy^6Ls@*Eu>LxIjLa`|XjxwS1l-_Db5`&=Qr;DOkezw~)OxAe!>)B50}o z-S{Tvb7oq_m(ljx#onWrFA(1@5RJX91TEQnwb-j_dt=X1@%2C+<6m=owT{cCPk{Pm zFL@n&_0BVO`19+u9Ph1fWW00t>h`bg@0NJKjL*pSv4SSN@o-7Y_Rbf3{o3BdGgZ8f z#QW3c@v8Gc>p(R23Ir|X_ntQ}zNEHS*7lZ&y<--#x5IC5L(BFq7kk6^==Q%@#YcZ} zK4&3&2iN)H+ey$;d`}h_Usl`e)Alw%9{n3WBg=1x-yZo}v-c^nH-1RBe=k0Go^j9jrn6`K1{mkcm_>9cwQolX&x0cUS#9m(88$4Cz^MKg9X(4;vG~tzBXUq1k z&oiHs|D)ndX?sU5llbr%8Q%^NjlB&7E!EE#iM@)pH0~65mf3ifU4%a|7fNA3h`F zTk5xW(hUW0hFy|letkBQ|4;$OgN{JN}sn990sDvFHOqLrvZcLBq=$KTeCUjP0 zONCB_g(-AaWMoRm#6>A|Ec%2dbTBHc#DkGxI`(_ruh;V&@2$PxpZntaUEk|N7x#0o zbKm#-ah}ineV_ZB32U`oo{#AM4yeK?&(U`&e;MF;!E2=XbpBCm>F)&RdF{7e#y_u}{{4@0#_3a|pQiU{toNBabw=-JCwf+@Vwxu=S#nTV8<)ad6~w%TIO~9TJlVsB>u*)RlG;3wf0Ay z>HVX|o8>vXQTfXQ&ktS?^Y+{E3UpqkF|UPr{iEW~k@8o^{;0L|x0gE8{;E}BbiZUV zuME8Ka>+BFc`J|0OYi^NNA321gX*Qph*pqzy_s?82&v^9xKcek_H(&CY{Z9jq zv;W)ld>f7P&81(erTtIWzUeET-={(lntAG}7+_e00c z7yJJOpSGUEsxVs566Q677duh>9iaJ#mfuFLrN12A--0o3bUp8X@Vwxu=S%PJ?06Ll zkv>0-d9}>zcmn(X1o5}9S@EW*wf3j;)OfQzXV>xm2hR`QF!K)D@hTJ|?a!Fk!o2=p zVgIN6)v`ZoE&X*;XPOsKh0*&;JpZTEW9 zse0R1+(|O?OZsO!wcmIBWU=;o^D%k`>EAbPBB`KsS1&Nt?jFs~WB*pX%Y_nQkG^He(Kq5Y4Cm zeoC$7e(cqGYP=b*g?aslu>Vv3n77G}H}MJGpDK*}WihV|yzpVkGeq;rAGMbL3Upqk zF|W(5@*I0y{JFpz|G45kO6_rYrwuM&c!D?gvj6<`$iCLw&OK=reIj}ENP_nJAoV=| z1^4qu9y^mBRo`!frfQ}7{r+>uQKfvIXj}2fA$sBP)4vHt7yTyvnSYGQ*wSHiqz@M5oG|8u@m$In-I zd#N+ct5${4{WDs~`yV_nc=^m*X~*l;c_Cw7E%Q1a!~Xvd_CNDB+3_YmruiFCg^|D6 z0^a}N`N0d(eA*w>TCQKO&Qs&fcrDE9r+^9&g0S;)M4@S+RiublHNvdeQs z_t#_WZ}9EP-+WB`m4X+b`SkglT1$V2$$WbMsXWZquabGK;Klzf{(3mi{dRdSas4JQ zQvR~R^MPluel@y3kFmcd=5_x}@=U%g{xaF$+(&HkEYNvsyjh-$7b<_n;03`OClZ}c zcDx$uOs}6u6-N87oq0op;?J4#$Go|#ZT$68XPOsMg%K~8c~#&={v~-<(|mgWWXH?V z^IS0Y*O#yIoPI?7xxpJ|e+Q|x+z%BBkv{*7c_qwi1}`=*{ubEZl%2o5)S2d~Jk0VO zeVg)^0iGAUeCDmR<1KOhYMIyZu;iKer}6qtRB8SORAF?#%wC}U<$>o1FGTa{e4y5H z{d#qt8gIsHVP5}F#h)YPk9nKycoSFY{#0S)FN=9);Duk3JVP{}{84M^uR!Nz8uPl& zS9y*-B>r6BjenS5U#PX@b?SKrjPopHUOjlxIq_G{c^28_IimaPG4?l@r~J+TMEsS4 z7ohoc{!we`?=YE9??07?+4@y7uNAy_QvCIBp8M_cT;lpozE%0l2G0kc!TQzc{yfJ1 znwZx;AbBQV6n~lQZ|*}jc^2qAHQp@G#kVMb#oz_O8z&N-e|EeY>P)YnM-@iYMM{ypB*np&vU`pU*Bq#=k$Z(&kf!% z`#VUj<$kD8i1hhq%qwADGkCEV#NPt@o3it_mpaotm4{iLqb}ty13WKy`OI5s$6Mn1 z)iST+N0MjaAI9r9@j=bsfGUjcm)Y}_zdZ2#;Du;Doe$Jnu3xXtQ{&BeEzIlh7k`eF zKjv++<4siR{#0S)FN=9);D!G#d4^~{`J>j-UxCicH0E{XsyxSjDE?gFjaTsN3$>QK zPCd_nah`?Ds|PRoH}O}_c^28_IimaPG4?l@qx{YPK>U@07ohoc{!we`?=YE9??07? z+4@y7uNA!b^Wv|E^W1Nj=MvX%@?7OF8$2I)2J2U&`|}w4YhqsaLCG^YBmOek-`tfp zc^2qAHQp@G#dDOuV(^0CjT4E^KRaFxb*9(PqY9(_*Ur45sQ7cH{4sCt3LAgD)S2dm zRAI!+WnL9{k-tiw)ij^ZKRaHIp67zGzrM3op3~nKe{S%G+228GE%!r(LZr_>V_pgK zn!$_xMf@$WzbQL^d#N+cQ+b%>IeM1zmjRv^ynN=ZwBs#t{c4%l(IHVkjFk8P$=Cy(se@^`MaGv|^ z@?7HjO`f6rWrODf&tUy(bblUWe@)Em{+{HSoDzST>~HSX*RPg&9p9Ba6O+d4H}PK0-+(HN?w8q>%3mIMe(*vx zpUwwrE!VGC=c(~#ycXv5e@FZ|QvR5?$&NQsru$Qck-seFm4O$YkUT>)pZrm4>90WN zWg7FkoGQ<;d&Qp%yz%$&>kGA(yiPsOfN`FM%&P}4`mFdX=RAw-@*L6q^%(mbJWctV z?-qZh;00(toqyC?`a4YK)B8{5VYYsi%xeWN{s-~b!+Gwv%X5kAH<_jUWrODf&tUy( zbblUWe@)Em{&mOL*EjA&Xhmq&26&r*GrvgUPu*2yj;u)irge|xDj%~N@pL)*3w^r&dW6Bb)Bs89P1K)F7U=n z`1OTaOJ1j*XTUhmLgv+j7yX_1E9X3m?D8DZ{q-388_ZPx<~zk-DR=>zPv;-Cmi`Wt z`Sku%d6=zVCG%Rri;s!F9?o;WU7kx^zsWZ!f7#&qz%y9C8r`4A*k2R#y6=%ZlfM;z zne1=wGMhXLbefLGZ?jMCYF!uZB9)>*rC0(f(^^-q79R&zbVaytzwl z{Pj|2nio=q5igf{Rp3Q_BY9TSd^-Q^csY8W3&#HXma9Cc?-GA*@P^snL251cLxn=5 z&p%^c3G$~Q2sK&^MaSpyp?vmC9YpB^E$pRc_!k< z>o@UE&EJ43jP94&6P3R_@ciI~Xg-|})LO1zug+8B&3G-$>pvj=94UXy+hoU^c!%y! z6-NHDm{$f~_}7wWh~|?&YAyX0=)6p0Ue^gK&#|wGKNoo88~OExT1#H1o@c-~&qC(a zgBKkYf90HKkzJl6y1yP{e}l`Ezxg}GUnzJ2nos8+wU+)4llk=iQ+b%JUnTQe!HbWG zzaGwWzg?b7T)#<&@|O*s4?KhQtI_>=jQuq+uluW#XYxt$m&yL-JT`e2=sY#vEYHOw z^y>jL#oz_O8z&N-e|EeY>P)YnM-@ic{4sBn9dBZt?oSm){<4@?23~kr@(j^@ z@<*+uzXF|?Y0T?-RpmJr7Jn}A#*6v&g<4Bqr=DlPIL|`n)q@xPh4?GyJd5n|9MS#t z82cOikMcMFCGl4ZUV!G)`A4m#zr$ocz5i4mX6skUyjJkyhs0kG=egf5&n2$kP+)Osxac^GOr4}$dKe&P4nsev*YFHc`g|H z>-)FLbNUYP=LT<>{T-y%az9ikMEd+Q=9Mt78NAqI;%|ZdP1*U|OPy(+%EK(r(U+CK z4Dh_*+dQKb1BP=(R`GW##(FAqFFcp;ik=L5Bt>({IE z)Oa&q3-kKFDE=HNf6Uut$D45L{#0S)FN=9);DsNRJVP{}{84M^uR!Nz8uPm5Ri0yC z5PvT4#xLR57iukeoqC=D<2(zQR}Wq^CjQDf&my}#M|6KZ#{LHXsr=1{#9t|R0h&+e zAGMbL4wL!x{!@9FtzRYcTEUC|O#Jn5p8M_cT;lpozNGwRgXaU!VEt-ze;#9hP0Z{5 zyyTf26n~lQZ?4cL&jOvN#+&82IH&v-gBJvEoJe&3+3{+qGrfKuRT%BRcIFLzPW(Aj z{+KscVB@csI@7$6DvWr!%&P(~@`&VFP4nsev*YFHc`g|H>r1LUr#~zH+~5tfzk}3T z?uQD6NS}Ykyb|U$gBN>P{4KD*DLa3AsWZ(}d6?xn`l9le0iGAUeCDmR<1KOhYMIy3 zDtRV;YP^0E7i<0oRAF?#%+4x*dEoiM3(olzh0fE#+&h4nAd;1_;aNEF>jL{ zZ{qE`KUEm{%VJ&`c;Sa6&k)Tgf7Dv~E6{nF#=Nc5q~c5#xLU67iukeoqC=D z<2(zQR}WtFC*rT1^DMH`mjRv^ynN=ZwBs#t{c4%lu~+g;^c%0=#M?A~1FA5( zUuOTR{N;h?2QNhP>3pEpa{YRBo*Hk)Yhhmht>Vv-^2fYQcD#uTbbqQa@|VTDGVsDb zlsrQ;pZrm4>90WNWg7Fk{-W|6yG8uDz#BiGUtg%TCj1?ebjW z`b|zNf7#&qz%y9C8r`4A*k2R#x^I>|lTq=P$^Pc@Z1OD7d1|~_o{N7{{))j1f;Ubi zI{)l=HPo42KaVPm_Fp^mh63WxnexZHxwqQ*>!r>#FQf`1UM};hz>9oe@~o!$bpF}# za`ZeGjQ#aJr}CV>N&LCN8)kn8skPh>6$+6)|BQJh%xeZO)+hcJ*x!_$zrEC%=BYf) z@*JH~{xZPxf|t*{m3F)(u3s(lI&PFa6TQakH}MwD-+(HN?w8qw@|OpmAG{FFr}KeY z%k}Hkd1|~FuZ4O2d&Hk3<&Sxr?06Hab$_Zb@|VTDGVsC=NS+~@PyVR2^jDzsGL3m% ze^hynHH$wNc;ha9eWBKp*Qw_jFwV1(dG+8$?-zgNoM(|;o+G-y9%Fxllgi)xZt+(N zUV!G)`A4m#zr$ocz5i4mX6skUyjJky-xGg5oacVKJeRnBlM~8cHh4bp4A!qk_vbP8 z*TlT;U6N<=KJk~y{^riJ$+JM`sqtocE^9&g0S;)M4@S@$~ublHNvdeQs z_t#_WZ}9iZ-~4v*R|;N$=F|B{t);)iWInzBR32vQSIN9q@Z#SVe?6S%e!D!ExPFuW zqx@xq=L64R{c3c79%Fw^%P+)g9%gxt z{#N zmFL)2@#g|>{LTFOLaimQQ_nMCoM$2P>cNY4iobHsv&b&b5#3*pvA@B%@;Bcg{z}0M z(0n@osI~NWn9Qg5pUT5*{VJK)3SRsk@z=w7?zhWxiR(A{YvnH+JRf)l>sO=u^BDVU zVqSN>N~cr1=|Ah0*;o`-JkB2c93i5Y4Cafm+M;>(zN`ycw^BdHp`|=ScZu z-X=TV#Ob;}RT%lpVqO_|;jc-aA(~JAsI~N0pz|_~d0oF!d5&!se=hLGSMuu%wU)e2 zJM4c;*OJ4mhNeyC80^!aDZD`8$U zc(E^wzXkR;W#?}%b*6bL53@W+A6Nb|!1IEa&%Bj(yd|z*E%Q1)E_o*Q8?WC)mga9j z6-M{V?2z)82c93i5Y4Cafm+M;>(zN`ycw^BdHo*~e~y$t=54a$O{~!Uslv!#7W2x$ z3x_4o5X~ol)LQy0(0Q50yspPoo@3SG&jsH2sr>pvttGEh&of}0XCd?I!Ha%L{FQT_ zMRs|P=>B?){SB)Bd$pPQkBYxi@B%cS&Od4`{T(Lr>HVkjFk8P$=Cy(sZx??(oacVK zJeRnBlaDHY+2HxWGg!YG-Ji$UUla4XKO%W1+r(cc`E8iYq=jP6e4~88S_e**9=~4pZHr~e^Yk;_EKk> zr}8k%b97Mo%K*;{UOw|y+VPgSeznZ&xJvR&e9?IQCQjD;4XDECewlql`O5>(4_=7o z)A>NH<@)vNJT=~o*TTI14~suX${+JK+3_Yab$_Zb@|VTDGVsD*kUT>)pZrm4>90WN zWg7Fk9#(mdeMtPdz#D%9zrIjw$?Mef3>fEG$h>;+q9O5D&UqHuoN8>_*3O? z-Yfn}!3)rQI{&D(^mmxdr}v-A!)*O3nb!(l{PW_khx6QTm**1KZ}K7KFB?1`cn0fN zqxUoIIaB_aH@DozUoUm0c_CF8@p7401zzN{l4mu|r}NK_m!s#oVC=7NK;=1I zA^zOp4YR+4)LQO`3WZ3Yf5yBL<~4&CYZZSB>~G4>-(KoW^Hd&Yd5->A`O5&$3tm3+ zR@(8FxPG$p<#Ox$j~eiIp*zX4Sk-7m8bDt~$4`N0d(d^#VfwOqemou|f|@miSI ze}(vSr2H{&lO1p3MBSe%jQnLWuME8KXC%)M%_o1qKYw7PW znNROOm515-RWh#?ym(Oj^>Cj1?ebjW`c3{&`O5~+2cE(D)#&~_#{Qa^*Ih1oCO<9y zGTGnUGMhXLbe{IKFZO06ZYQ_nMCoM$2P z>cNYCO8k{`o<(+fj_Ce+jQtJvDu46u7JsGS1!z8xy1FGd_eij2G0kc!TQzc{yfJ1nwZzUN%Bkv#9t=+n|sYB&jOvN#+&82 zc)#*j3|_!_>bmqKov&!%WRMG zmj|97yb#T&^MP8+_3PDnYP=b*g?as#i9bimAM-ZZ@g`o;{i(vpUl#Mqzza7^o*|k~ z{;0L|SD^DUjd@+)Re6qGD*jyHjW6))3$>QKPCd_nah`?Ds|PQ-Tl|%Co<(+fj_Ce+ zjQtIMNBNt7r}!%cFF^C@{G-;=-(fPJ-hV0&v-PWFUMqO#JmpaqDkSdILxy-8qFXERxt7$%+e|EeaJtUooQZ36-K;V=2d|g*(P~b(|kJr?07kPo(snQ`tDJAP8W$kH+aMB?;y37 z`=LT1(&wKsuY`Hc;Kdrn-vaxavh%l>I@3IrhgqJZcPoDx;CaEzXWmLX-V)cZmU$g+ z$un`C@%l|9HGc!DFuGr6?^6Eq!1IF_qWN?_P;0q^9&g0 zS;)M4@S+XkublHNvdeQs_t#_WZ}5QfH(wzBO2G@zd^-QAwe)wG%%}IC%EN5^Dw)>` zUc6rX^>Cj1?ebjW`b~aK`O5~+2cE(D)#&~_#{Qa^*L|_%ncO1>GnU3pRNc=sY#v zEYHO|mA_)}g5Zr4iOxSeUJZ4o*UzI0qy5*;yrH*?KWEAx^XC3xjCi@s zs{$`_t>jrv^XdGvM)w`Xce?25*@C9i-NBKU640`usEIl`yXvyjY$1 zTVQ`vcK-HKXPT$-Fw1kaL;1@9&kJ5Y^H$pNmbiYk%67~LIa2nMeBD*|C zbbmd@{s#9efAbfJzf$l5G@s5tYAyX8CiCh2r}8jcze?t{f)}q5e?6S%e!D!ExPFsi z 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¥nG_K&L4nj z=ZvLasA#||%3fVmT*K|rVD_VLCo$@0as0TxP8guBu#FuW@*ocqUc**j32oV1qQdyK z0`%>+1d;{0a<>~ydR1CgrGlwoe-0?pY@LS%=c7d2?vPck3&0~y7Mtv#webW z+S%$x8^fGmsx!B#3okr1@>=lAN6y}*f~=wy_v84A@dF}3rhCa?5WxuqRj

QLjb? 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%0AuTG0U#Jr4ujZyniFcm%_Ry18XbHO7$1H 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

ZBB$?zB?$Ic)anE1oSot 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%0DSlV*62k+|Zj6`twAAtUE1Fc%QF} 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

;;V{K*{+GK5)uh%LdU|t1qJEK`bqs4JQ!;Af3% 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 G`;=&VZ zy~byvhTUUCgwaYDV<_@Wov;~E%ztqnM6 z4I2Wj`UcM^DjYj)q9NJpdLh{)Ap?kJK#T3*ZK9+h8~AUxnSQ!^ zaPZ`d8l zEw`Xbe?qp~4`M9-OU^$<*jMWN+K~FLv-)^cAga$@D`Oh1KC4|7UO+x|FxoFF_2q`t z_g<^7s((>^+wavd%Jsd8e7C>LfZfjDno51Uw^on$DaBrCykE2WqDyeA$>sneiIVW_ zilOa&iww8Vf2H=W9n#*Fd$$+$|M*IMK>HlEr+fKP2gdR_o)Fe!?GsP1hnR<#39a{- zVd4>!-0v|B&F)OG{ccPfas3=mWZL<~>vJN%gn%vrYhzVf6Q(zHF<#RliS3%$*gA_j zD=BB2Gxi{tWOh`oX1-JRG%xKy8ti6qrpNd>8IbMm-wV3O4c||#gvG{i42!Y{p^17i zXTIGNCgJz^_oCF$>;sUc%G)|$5)6Xd4$!O;czLu4^(K!yh0tq9rtFYHCyi|YL#KNA$We5AK z{Pl(9lW2wZZ^pX)%{XFz zGmhNfjP?7Q@qqo!IBI`0j^5vlWA-=W*f3+Z&~spx6Lb99AES6Kvx`~ng{Zc=w7>l~ z{i(dRRr~stvh^2wuep3fwEDiDt55+Raz#CqexYaB!cfd?zBG7A`(d(+RqE!_CjhxC zwk0@(G~N`NQsH-`Qxc=`@7s{QL_C1t^f1(a@o@2I`IjWyG+lUgK98I{ z`Kdc>B!A`p?oxLi9QwO^6QR)G-QmYMM(B|{xRddh@^^>C!3Luz_W^6$SQe~NGT zd;8zz@9ovY|F1Ced z*-tH=J7RaXcU#g3W4~8A;-M4Aqe$=d8s+-d^LGq6@8aH(E7%8d`vuv0UoN&RQ^eIQ zB76@U`$Z3(UK&4fNPd6(q5d!lEOW6n*~y!7v2{EGPJtIGz-boZF8!lkuC}MJ_j8vR zvV@03URi%)ZxW&D-PZ$c^?u{6HY(j(N=;;kY`Xn z06=8_Ytnv-E#p3~_obxQxTVE!9Y%DEMYYdtqUd21l{bI3$)~YaBBi^M@*7f|taF=5 zu~6%?$qaJBdUe}O83wlhOCOXxr(66?aM`MG6RrD7YsdsFwp}?ZKHy1Nig5Go?dZk7 z{WiJ&PWwg-!rH1T3>wmBKqlRwn^E)2lhMKVl zUgI)vBXV9u!$F;QQO{KG6h16imw#j@{K0BJSLf2AE(P! zOt&ZTdCWYX-V|K-d71424J#8|rKlfHrhlzt-jJtG!I(w|b|I8A6un3N82xZLu z(*zvd!~1eIjl50rtlzSR8f1ADkG_l<*E{6g4{ZxK5xvLmM7PRrF ztPCWSm)ysKLS~b#<&S7Ea_eW2*lgnJrKCsrhcgAzuUq{YICkyx5V~pbWib|rs9l~M4uCXWOVz^VcGw6Z%Bsj3%1fbmfH^+wYv2lqln!Hw{9YN z-|`{6v_D|_Ix*9X*PmV4#+~eM>D$8%4z@Zicd`$_pR&0@qU&w782=BTMgS;nP);6P zH;jh!jfkzJ-v+*9&N}`-?PquAVjFX@O_|~uY*JcZ6nfylu}P`_PCs9Me`GcT4SwAd zk>%mp=!&o(=qsQKL6F-o$+J>wj{6Yiv8Ux&Ig01m!dfIVUtN*x6 zn7G``+Fz3PkA%23a9aW2gu356+#hpXNSwU*_tqPM(vBU`r+JeaR{H<+T>vPffT?+Z z9c3%}8T=ldjF0&-l-*2OHhj!?MwUEWCDmT5S_XTvh2GjzR$Y3xKYlT~&)SSXn2+tu z#dZzy-0!r-+1{st;&xndeG~%4{eY-zix~?z>(@@De)FNvehO`CDV{x%2@7f4gQu2i z-<@rIsd8Q$b5x%5nw}+@%=X*Dgu#Yv%oNYE2{Sf?#e=p}nxIQiROL#%!duY{K4Q*2 z{!%Yt?1j%cocbmWsh@>YLp|egnoU`J+x=Yr1ffU3b2x-%r1#Ho4BJa?<@f7l&?%YN zaunU#nEdf^aa#tSK0ocC!(;9aoox;LdM|X&!F?t7cVS!qGtCc}`>p$MK9%-2r~UQW zQ+h6&cxwFCF$tb%NpF4#m+tlH(Hp(Oi^)qLDIT05hreF^Q^rGNN1}{~?a0?U8t2&L zd$hGUtCnoa{D*VZyIlKGAD*}OqrSv`*EfE@>YKRV^-bEZ`jY!yA5>yL#>?idT>AmP zIj}F5!Ww)sWpCWG&5}TJmm&Y1kdyirpimys+ZJ^oPt=7h`A%!eALD zYQ@jRmqxnq_^`qwdlnvAcxm{;G`H{;#tScvSokhgSHlLr?GimDJW5fSJa79*#{-Mt zGk7(~(ncw5R&bA!$ zZU1`L-@)FXZyot$3%-+9vsCwiySELV!Vs@~i#mOLRi_`HT;1t+(dn(rDa7~}9iH(w zm{qIUhTB7_|Bf_n>z6eY-&tno^)jjKYzKRy_G4>;*{=PCSLkB&Z+{iGZP0%gZEyQL z^R?(boiT>6urz)-WjaGq8w@u4gzGkR0HA;u|&e>R`Bi5w_INLmcsopvS&2U zj}@avW1ar(CxD}|AD@ruQfd$DlBdaFo4<{JS8gR-r;AO6o%Qj>i)F8WHkvTzpara5 zc#>DZ*C#+7cG=&6>EGwMCC!G+y>I(B{-jH%B{HQ`&ktTeNxb!w6mRW(SGQ(i>jgwK zjSq1VvU-K(&f8gdd3fG`T8N*TRjPeoE}jXpgDdT(+4GdmoqUV6dD+2gOIVlgK3`Sp zT9po4wmf;0Y<#d}rqty>zOC?b?ZWp8ySHK%At`|8$3V#(NXAiMy{^G> z(~g2=T%K#|B=`sPaX@wWo{^NcdyK))QT0_r#yf9KuJOg(DS+iuZ`05vAuuol`gbNP z>-8JKHTSpyei*Ckt1%sXX^ql?QZzU{_RX7{(z@C+_GSIdO$>5kwC*T1a)beTM=c;nXWDNldOR;7G- zZv6nIypG>39OsqBoRafb()?vK@5O!-wSKsabX>!y{Kl>4dsH&1l1$T$s7&;d+ncbS z&-yF3ouI*ANshGbD2#sUQR5vXjLrs~kTn%}jNx+<4Y^f1{r`g?$Kxk5zRn=2_z6i1ou>|rD_#*MsY(hNi{wl zrPj9E)~#B#R;^n##HB%0z(|5SXltpp^~NaThN#v2-k)=yXJ!Jpp!WOi@Av=rRmnVe zzvrHN?%D3Sv_X{I1Z!3SOOSBaut9ZBokRgG^b_*_xL%;t;L_O>EZtHDd12Q}y`Ra0ArB)fF6 z)cq(-{fniZqWec0E3LAjpLee@IJWv^H-bGMEZ&Jy9V7UsTWTvFMj>8p%|}Vj_igYT zZ#a~67@DoydpAt+Kko#6&*3p7fKu3a6KNiWABW1epQ5~%Hz;1m|!f))u-zOhz!?fuF&?M7_$ zI~9bbO=uZ+fvAZ+_#H#mL0HQ22Y&f;aN=7(ss1w!M*5P6?gI79_US&+obobvP3?E} zjB2_G{;ML;sGmvaMsvQ5UkL5RmqdMV@gLpSp=^7G`aQY)X`B2GjAB1l8$iZKsh9gy zHr)6bZhxPeydapEs2`sQ##SgC>R8566^uPhAyCIoQ}ENVM-%om9X~`(ahx2|ZP|j4 zd%DeUv!0TN5RO*O)ifQF&HVWHK63}_erNg8sK;&i;a3a}vRIQn&f5U|B7I{OtKbvr zpBjpps+)c%JsVU-!cY6m)pPB`qeyC?j zJCeg1#bE1bJBhzgg@6aRBDtZ--G}P|Gq6LNi2;sNhEy@T;$xZJ_-cZ=lJtU`{*Z0> z=RLrxI{|FTtsYMNU_$d1eK+nF{wCZ*PddbUNK`a-yilg*LiMnTCGlEH=>0UO9N1m{N1?lgAB#p6v4R-eK7Vw%^x267YD_Y2K%Wb2XbYYtmE~p4 zCJ#;o69>CLhADfIQbc_V3~VbzL}(ghvN(A<_X2t z;l(@A!#{<2sL93;Chs=#+`-0>jt3IU+?8R0ffOjDKs^Qi3`3Pye_oL;5g#qoPui8) z;^P)J-bjvU^mY_s^S!X!xC)}wz0lvUyqbdz{R zxfu3$OWtx1K583y7lu{Eurx{qxM=(>Lrzyh6GorpPF<{1r0pWXbtnp$L@>di@aA8v z?#@+Xbo3a z>Mk}AT;a}JAg=d$roy?<>Ym}ig{?1ayMq`38u?M=letB?cRjer@{_yzQ}7ZibYG~? zTa((tZRY4top|j-suyrSUZv`9_hw)TJ2wrvUSq2jFUUC*1Hk+>3CVTMehhUVaE63A zRnBEUO5Mxh2P(m3{-^XAk4LG_HR>k=Nw7+>+D7y)qlcYcl-#X6n92fT&vx@5_m+7L znIyAr=5=5UafnxJjK- zOic|p;hvc9bC!c$rf8}3LfxHVdXuGhL#|VgoOwu#ekzeNCRY2Ks0>OW@KbRzvhw7G zWa@E)(1YUeuwBJQib}V-(lAwC6@piyP2v6xpiIzxaH9>fZUEVW(gGHT>C`DePC~k( zR*hQl_2bJ9O(kru411|t(cmYm7#-BZG#L#cXTU9FM#-)2=CF#?Mmf{CJWRg9l39fp zB{-fFrUp^_2%V4FxJ>e-lThmX5upf3Qk~IOCwUYz2vbUYO1Z?(t7yqoVT&@Wyxpyu zL~^&dUYf~khmrTigaPrt5)UbOp{~hi#$%&jC{swl7FWMaTR{#dJ)qqZOs}VQT)arM zvv_HUBnV2ie|O-xuNmuLh8PRQlK@)R3~AoVQ(aq>4=_OpkRHS zv)VrSla`p`AxDy_^A*7B`HzNiRmd7)y#_ER&9VpFvq;6Ag{B^Ab+vio=U}_vzZ%++R~KI zGU&u=-x5Y5J5~b|8Fyy5%ft}^pe;DKl?d7HZ$A|bBv$)dDpUkxD8D!XO?CgePeY2; zUTW!;zzq;)j3e<5om{6^1fv0}d_dg&Rz7)bMX=$rqiK9bSoTt1c3)M;KhO4fOUGeD zX3^$0+WEf8>AqMWHQ#GtJ2yzyY62f3X-G|%f@(`WOsmXO^nNCfKIMY%E3Dr)Eg~3) z^0~|$iu6<^w0-DW!-$fO^t3;g1&p^13^u=yzq>gQZMa2<81voKoo+PTN7-zX7SSDN zDalRzVZQ}Q@nN%zk|p{FruuMBya@&FW|(SlANJvJ4Av6{yPsP^vWGF0!J@X63R!u!l)4xBsPHn~iQ!>Q zcsdSiW@N65?m#5UoF=H2#{V{kC1+^c%nSYm8Y&p8hCUHSCO{ zSY5M#eG%p_7NPDDKK$05_KLs`ee+vayoR=Hm2F)NgYH=|lVJX_kJw*r-O2pab_Ya9 zR#~6%@exh6&q}P}m59<+&?uT*Daz=~m3H;4YDUOEGwf6|gr4gA^*oH>9zU9L&JP#s$Or*3Z)QG1^mc`0|Rwf(a zNLra)v;I$*ci~COgUw#yFz=YRl6t_QDABPnG5l|5{5>;;;vD@8`h^6OQOqJDbNzjz zNCfh?;lM+`vau1&)dI!7RFN)E;5k)plueL2s_l$BqC+C52Y;T-_O;7{COI~yRKE{3&&F?EsyCBNQ)q6NWP0;ZD86u)Owrl$6-##+YF|#i7?tpoU)06P{JFTpS^X z7gor^fm*FO-tmlR)Of2%+2#tWR|aDWOa#P4us38#m<8E?k2XkI&XvDTSLmGJ_xs4*!@o} zotDAw2v0M!N}jb2K2GS|Z1Qk17SvsDOKT0-1D-RI)H~C7yc34Zk`2AsrNxrMNDVgCJSef!^^1P4 zc3thK7>d+R^m9J_sOPQe+4@T-(CL-N-LIguZ50q3&;r(?l36kZ!>`UrSrnClH=L+4 zmD+lp%XGIgQwz+5+~UqKI3T?E?FP3PHot+YOQJ1_DneV@Nc1|*|Bf=1!Dw<{kSISe zZ2q!LRkKcWqWE}+5hae*o)VRS{;P4S=j_`Fovkww`2yHBWYtvNh9ml}R{tDjwtU`nuE~_h(t*xP zk-We|u|;Y+_XhkXJNAb*D&V`J*(AqjK!D1>!PhuI+J4VYj`oKhz5o-^k}n!-Or^Ve zg>Z19bmN!tQ`?GJFt??y5UBzoVupCkVsV(Wq}B$9h1FRs|Ayzw|83QE9%kgr!y8Hg zmaB%5gD*pIfb*PjW#|!Bl-GRJC3f*Bz-eZg7w$Eztn=kwi2 zTW|?BDVYj(;x#ytm6JtQG?Iv{j6x@k%K9Oy$rZ2K#=~oO`WDK+7)DNScKgvh$T>bc z3I-I8f&qC!$Of{BFG=`PL|x<~3u7uZtQ*#-Hp~;H3|AD1IVb*B;tf5c+G`&g%@*y1 zNy9dVs1p>&`0Ue;O3h(}HhcF5x?(X|@O-EuK-p47`dwee^*@S&k$kYnWrj1ML=nVG zy+q+YgU1h+vpPdqor^#AtMg;6jy5c-6K{~;g}d=i$}MD4#b0d4Or(1ZTRYIl_SHm7 zCm$Z!n17$PAtZt`iZC&kysZ0q)rNGEAk$K@zOubYT56BX!FL#a`-ATvU{2$54P`Jx zv4al-@UcfNl%c1^RU!}9HO)Rvo_*;-_ft6DaHLA#V6usHT**V#BdiKUMpd??O0b$r z2hP8Wxw^4)g#i^hLzn4R#x#gD2WOGCV4-`s#?Y>RbVmEmd7pM#PiZZxQ@z|M&X@Kc z?smAZc*76roRRFoNQ7~VU?p+}{jK2u>szI1R{SIc?g|;B3N_QA33l30GV|EmfVWhE zn`XIZy{8(0pdPXIKlveeK=d;td5fq^&DmcRW}Ox>S9_ zlDx>LtGhj%UDZ(w1-eyF87uV7%P3&t$)xw=rq51%-+x8#%fGeW`(+0UafwKXM zrc9~SsKpTow}XF)pikzv1Hw?=F#B(zrqV6Q08(PbxFUD_B^uj!HvDQ=XByLq{9f+P z(QgRpco`ta2*Kh;wVF(Q+2X2A36mP+$1MG_4zy4mU9+}JYE$O9PO^Q6@jEhQH)f_0 zJ{)vuW*T3D4>FUBjhL%dVdV`?GB|O7X@4S|cx1aAoaoo^PpWvtXy0MoW#19vt7YH6 z;jff}b-bG;-}a+{-t|yIxovVc4(Y(J{C(`d4X^x8DAc~CmG|^W$BNscJ_ON7(IXL{ z(pUj+tm>|9L4q(#x@uccN|+_Wjgdk?BlZO;1U2$>-;MpT2JaQ)Bc9?|Bt8nOr9#fLkM+1D(_ zC!1;Gn9vIb4oa#o_ttfEH{G##J7rqyMk}5WANe7>ULMmd2Wv*+gTaEqQ47)GKgJr;1r@a+5k^BKV7}JLhrya<+|sO^vEMyf}je{DA3 zb%Wr`=%jMDo*k8orsK<>np6JSi>$mmpRyzJ5FpRrq#;ksLjwy(%;6UaO#s*@D2s$S znS_=6B4K7G;d-A?6(wA~`=d{TzTmGPUyIJTaK88o4RCvDklNiw(25pD)N4II zBs+g1|JSG$oU1r@-hdv8QndY6e~p8|_%jy1y(!h-y~v(PpbS(mF*|VD*i(B=@gYxh`Hm7Id%{lC2KiG)hJt!)%0>)-j z843VQ4i|Gf0PtMQrSGyup9383&o>&#jK{4Anlg;X%|Fi`KVQQBKIO;vh?YMG|LA?Kp!2pX_CC*P;3?BW^kp7j>SlAXeG!q}a zKiixq!j|M_I^GW}Im+!G4k?LX+TxbMRpbok{0lUk zRyJ1lWIY6{Q-`<~w3JU@?sh{*0m(BqnlzN7or<+xahCF1Tvy831Q#RI6E>s!x&>!Q zMWV_XUOI&S#A`Oo8xM9oajpORYWV#lzHj5d5BYBg@;5;G{wtHbqIv=tnb|*B>rB^j z_gh|?mm;=N9$+xx#J^eYUPO?xb7`mq`k`(2E{Jy9`cw4uXB8-xX&+iOH&es+-xB4= zq5g@%Aa4r77C&F4V>I1khPtwGQ%^&-WLWO7><~bF4WbhL^ZMO~^x;(BzGx+r_=^#= zi$K2hD`e;e{=9{ha3#^u-m$=mPfBn9I&L_i56?D0k%_wchUW2B)+nNw)>Ups4q(igb?_QseV)Fxb85 zn#2+rT~80XPdN?0CC6333h?+{o9+p#Kiy6p%Fx~$6b-GF!Wx?6U|<4sG_+!dWe$)_ z-Oe_wSnc;Aq0GhHm6p0CC<+AaiKNEOTcS+`GGm`f-}JJ3G;sDqi8~rX?(c|}643X@vFQms{ykvpvDkH+Nw!Xrvq>Q2h@HPE(~2a`UBzk$ zccokt?4Moa!FjI07W~9JaO!;ip|yrhKvA-4k5V=bmFj^yiHB;-G|)Qa-6h!DgaSj| zT4d%CS5Z1vr;GTss8Tf_btJd1`KU*7YppS&ZhuWy!US$D1Oibwq5YuBig zAW`Iw1!=K6c#6nv7XKc>_*!i0I>s#IT&nwjQ}c@$6fp$(paUciE7xYHldjP1BiWB%^Y%TXwRJWfpoU!Oq=lY+_{}LAIRo z{&Ak*yjZyLmtWaWmoR=8^03mKOD+zs?rPy}{? zw-u>!eI#XnVXP=2)TR~oJ*XUN=y}%1PtHqzNcXK!M*QOxux2-(|!(^B0loMU8U{KCX03zC)0P(sK98QBMVh- z$@Mp`&M^ntQ+hn-dX=j%_HVJfQoM(u%{u#6r<*zt_b~Nu_4PA1>(NS>`19r3i7#Jk zZ7Oya{;Bx?hW7a;ot3&R=Va%!_fl|Zc+z}VjSUa}CRIX_d+CotZT%VtGZ}I#iy1p< zv&5=wD^_I-V@KUcWOCCKFzZxl+szacae9Npgp^qAJQ9pgxd+}{MCMOMEr5o=bgp@g zEOyr-`tW(8Sgt!w8@QCB4>wT-I1W|OaoU*>Fb$Q+h3ss%Py~pqz1`iW>R7Ii9W<^& z?Y9F^x0~m2iz|boMKK;GqM%Xtlvr+?xY_Mv)v@>L8kP4M{?A&;<8PV2dt3}##O0K^xRQl<#^rMsx*;}_4C#>Lo zmJ}r#mRz7d|AbRBmxj%pXXlBQJQ$f@GqfO97g!2$lHq$09TWV(Jfv))20s${WkDA> znRCpBCn_GR?O~PRIFlNQ7YN<~D2brIw#iI)+$B0pTrG#HM*4_WCA^pLn3Y@Xeht&R zQ?I;O-iWTK?_+hhlOD+mrb{-Sb{Bu@)m~<`4$s#qQ-h`sQZZY{mgJh_qN2${6{|+sAX+tWKGc(qux-4)e>(n2+r`#QvzteLXNzn5RQF@k zG8&DmHd8Ce^fn~U46R$L$0g8&jG#Y~wop>E?`SDeAMdp9tkqoKB)H{Ekx6hOM4v@P z>r^WC1Pie44EGFH4R?SB}Q$KVSY`QS7zw#~;K=2i9$Gfb>od&DMN?d=J3W**hk1`KI zEzhS$1W@xfyB_eE9ut^pp^7&kar!dikdq4 zd-~hz23a$-As`FB)=DlkzWHzbo$CLZBM$Md$BbL5SS^`Rjad z0VT-Izq->mc7lT@dsSyb`$Pxa3Y}X|93d!-&vy^=Bi`^1LK{?Q$lt{xH@gF7l3Vln zaUUYc=sFD!PF)i9UD=Z;27`Ehd40}!f-ae{sgCk<6V`=K#Bcsa3;}mb8vg0W^^=uS zM67f}jd{`DOYO)Cr%2YazfP&f-W)BF%fLWR5e2JfNxzUB=Hh!HnBsQy9s4*20u>Y7 zS5wO*m5NMb1BRsK767}bCxOCDD8*UbRyb3*fB8YwQ--d(+aqWpVdl`9-bzM*3 zg8>|-9dR@L@;gB&KIT1yvmo#4C)j`;!~`{7tlOg{&k!0^=Z}m?Rd%?$^FeiUXC(AI zipH4xC-kbW=^T06*F2WUU6C&tpV)Et+4ueU(u1}J8EK)YZ7}A(4OI2^ftILzzc)c{ zD}M`T_~(|tHYz`;B5J?khA$|8YE-^oW;|mz+&=hKs2Lm-)*#Zt`KI4k?C!c59{ZQz zPzpb-rUW632%26qlsGQ&jwXdut!e6>sQI|(`R&-nx~KXy`~m1Q7b3Ti(3OPSG6@FO zuM*NF#J`MvprKf!yH-oiPGyOO59~URo6MjN4- z@i&UcisJ5UQim&wVg)1uuDDGW7qm#uI(cr=)}}QnXn287FE_UxU4_f_#r>$?% zD{^r+(Iqq&@`~=+Xy@b+t!8j6QyK=vPI3ctvYS;{u>6u#NM0|270E z0^3}76}wL-UxqpRCTwdi{#_z|%>?vtdOS2NLdo>rzdoAYZZ^Fk43{Zwqxs>%zy!L6 zqxa*ob!vPxoW_2B8bvwNnB$(lP)%>_vTD4AigbEd812XCdCRfk$m99EjET66^oJw% zeM9EZbFiu`SQUIm98{iq0J&ndAL;3uVa2i9)%Ig1!H)l>UqQUU@}IB|exrzMwBNR0 zVzqbhQ4y5pn|O3RALYYT`4{{OHsw%rMe;*0fddkqAZ=m}H&E4+tnwp6@obmR4#rY@(Jp zMKCjebg)-^?x#N|W%iz`G>2c-86DpSA&HRa5;xg8U#0$^Vs!3>JGC0x;;G#!d;x{k zKwZ>8L}9kd*1M8=#68G&{WKVz&9S

yX7%`dWo}%y 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 diff --git a/Binaries/Win64/libcrypto-1_1-x64.dll b/Binaries/Win64/libcrypto-1_1-x64.dll deleted file mode 100644 index 19a42c9d291dea243abc30c9a8065ef03f743d3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3473408 zcmeFa2UJx_xBYuCXE0+zR8$lL7%_vQf`VYqIbj49v$kSJ#GE5$%$RcqQ=4-Hvmz=e zViw+S9>li$e)rz*{>KaVjd2{Ki>h6#=9+6&?b>Ts)jsXfW~L#f!C*+me~F0(!#@7% zpOZ2DZxS6>4X5PI9S^Ez3={c}-KkKfY`}g?%=vw!O8#ah}aywfpXNfnk)Ak|5jZYYW!Pm zMM`(ciV-UEBEmC;JTW@8H|5x1+V4rlWWyh9$TZowN@T5mX8G|{jFgvH|f>Y zTe^}h^QvnwbeojUFf2#T&dJwe4TY^UrpQvj(5a}w@Y>vXc~VyXSQxWoF*_-r!eB^a zy!6*!!_10F&g6OuLnlO&8YTbvkL9E*GgH_b@_DB)y!^9*p_x%ZMZ+k8$Cfj=FECz6 z(qvK5Fu}`Ua2a0O;P_Mbzxp#)^}jVU9IIe>neksqCS5Dz*L|2D*w{pr5!B;*!zlhv_z!Zmx%&Uhf9Lfts-9CuLzMq& z68D3-3{jOYW-&yqT4rI03i?pQ5as^%w+bR&zvNr-xAe{#;8jnp|cN zT7)=4XnX_sWm$`&fb`h0rn-%i*!t%At(k~Ax^4U{#bK^e28fFY`63!F1?Bzo6*(`E1(0ih^_LTezf?2LRD+ z(YEe2BF;;(a`R!hoSp~29q+;Wkruj^X=xT$8yX4gk*iXR+7Iuj_54VewfO?_GkG#} zAW(shC_iuy_?7nL&ab0I&%HP&TXQ&<9*M}5TI%0!w8+vMlC3)+=aK?emu4VWvI0r` zAygXbpfY0uB#S*p*eoMl4jsW^d(}}__k%Lp2hOcda_z}Uxb*i#E`2wOeqYod@sl#d1?D^p#?!GWc)(&FqG#f!Ar_@f?!2DQR{sBUZjWi?G{66otKm zxMxYOEw;zD-HXMq7$|=RLwx>flH=15J`@IM%hJ%eS`!alSdQ|L3*cp63-a4@0OXW& zY-+}>6bAh3J z&QOFS3URIVCG7CK0LqH<=qMS4aNU0B2yI5uu0NcgSHf$Jw}QOX1-+HSF)Ld*P&FD- zT$mQT)yHr|#47w!A`hUc2IH{Ep17p2cGv-l<%yLuR7%B+MOUwwLA}lOT7WDDwPv!QhO{r0M!~&vCa-^v)sw$ zw}4A=wU}KVl%URtOeqJorj_tP{{tvGyN9-G9>T!K2DyzFxHhpn*Ty=+&u#?5H;d!! z&Y6L#9t!g0YIN)#Et+&*D+j*PS|I}hQncPSRtJslj4p92rj zACq)LG;UAwdJz5_S_7s72VvWV_4vx-A;s*MpwZzQ*P`l!oT?!z$CSl{S1Y(SxHP$7 zd(2-_4QeeKk;|%KHtjqBEuWzBgbNixEpU$GG?LX9Ao*4Uz1K1TTn=O4j6oEqW*{jV zj>?&v;S#NG?C}og_{$sLZ<5>l7J$OLux(iv?3m(!9ogN$%W@9qxH(dMnh0Ib$LMV% ze$8`IVSf+?2mOH0)sBjH&44e}nq=>6lxKTJ?Slshx3Wd}q!S`pG#JuXqnM*4wFNcR zZ`7Sv)C@VV{#d!GGTQ2mhGgR{5PGfKbf{*>6ZV*YxC(8(BY`T?3cdYH(PB|{YM(|? zJ7%H!qdHJU{{%VqCOW?DgiDL^=5{;3?026Qmg`8aH6%&M z0Mk3CkhAfm7_*YLy-zdXie`q3Qyj_e^xi5$MPc23Z|p(#E(prC zuN3=_qS)GtqMr>d5;auX90Oq93S4LX98=q#M%xevt`+J-ZKfPR6}QCvt0$;E#&J=m}q`NIV2+gJa0WTT!&Ghm{9|(e_;9d6qp;ujfO2ZzqtiE`m#e zcoN&vK$Ul(S1)b?ua}U+QUb8zEzPQ)MET&}w3r#f06D168?p%yvb0%lWO(~kIouvp23EJrpsnjEnjJ}p9g7ChV%Hf)@tD`h<<*^6w-I*4mPgUO zW)P~Eh1|O}=&1e`N|*E8oDPaBi(43f-Wmk3qlEPK>jigxg7C`_>@J*xtX*W z{2lX;O~izIJLrW;M-U#Mo<8&hk@fw#md%A`Z(?cI>KI8}Pip@d0<}9uVG!m|?Tj)2 zEIx)yo>fM9Cxr(2u7lh|H(l19T-&TWWq}NQKMIRVw!gUWx5g}h}PDT36bXkS1 zm~bf*-Z+<++{9K;Gw7kd#2$C9Q?jxq7Ufs8^ywqTCIMJkqdYW*ZKTEc>aPEx8 z#w|o;mZl^d)^pA8A$ooGBfK~gsEUnf`)~m$-fyp2O5H7XaIyLhZmB2<7xbk<$)xOHLs&sT=oERtZn@z_F)YU@&_m zW<9uzuPkE#t+R{V^5b;C@X@sOyMXdYg#o=^BfR@9ISU);jClFgKuOaV_|9uF zb@KzfQGW|uve{}r(2TUN5A4S;2hYluS~pE!Im*HB=vZhpm`25Jg)^Pb(BfVK*K%D0 zV7sE5OuCtF>2+z`QQ+Ha_&8dVj2}o+vkWcv&xBR8%iLC;4@th3!q3esA?%cow)aNE zZ~iryZg++A(%ZDSb(&m?64-ILA+;fHP2xLuvMO zFaRBEA)I$A&e<)1vCq&Jt*6yTSK2zL%QkOEc&|p&z!iASL&|UWqs92mfc~N9QHhGw ze)toWiMO!4!8eL)1?77WsBa}Oa9v;Iu4sPAq!;`JA1KbgPK(32&}+L8sFc#tL4$BZ zdRl~OD4T08X|o67H}p;ttUIs%4V+U+B+WVikf}3rw~ByVt|_&n-ASfQ1tt4M{M=vD zNa{(--<1T}eH#GlH$6xHq0_^@_u9djL?S z@`Aj+7Q!c1qOHbdu1#?SZ%|Wgo1PjuH_bz-@h~7>vEf&19!(?qeg0 zjiYICUMnI!Z{V9#xuZCj6L`~PhT435_ zL$6Lc4l930YB$dVYW-~VzF!007B>=08#+0z8?4Icb*Xhnke{X^+13gZHnxM%;IB}# zhyd!~7XWSsQ!(of9?E|aZR=l9TlfPEYMdoWmj_mJ9^#zkp&);mhYt)#vD{n_^{RR~ zt6Li1`)cC3mjzF*J4y2HDauFf2B7$1YTtK6xJFjsU0Y!9oUt(7`V5QCYAVQ4k!vwK zk?XyHVs|I#+N<~b^hRYp^}_MpFxaf{eDZXX+6tK8bVQ}A?v#|*0NC0ZqpR$PuFW>I zt++--gHAx*$WNzu`N3t=c=SGZ65bFh@@IqO`YWhBp*wWhdYZXbMsE?lA5GVTrL`Vo zITT%cM!@gYUi60R#m*@TD7)%3Ya!QV{RF&m{H1+>W4q)BVDwt`hdFJtU!hqREBtcS z50y6UY0Nna(gz~Wvc*jTL-Pie$tGpSJ!dgV=_Zn@s zS_p`n0IM=1u&q}xT>QoXa7mL)25Zc}VMDW-J;4jqt4yx02zRza+aW)?yX6q9d>oJP z8-?r(?;*FdGCHghQEu#yW)3J?Q5rWbJ_=M_Gjv>5K$WiptcvMX+BpuA?Q~zh@Mb(; z^}y%{X92LCiMBdl5ozR$sf%{v$u-vKh` zR=V3->jER)AbztD0PlJM|GhrQpRPlEoMP533W?9?4%pciR%NtaJp3HS?COW2g0T>P zHH?b2Zx9YnhffbK0CY$qMi-h0p;7g*GHqH!#_45Xv}S=2FPg>W=3333$W_S)msB>; zD5yKHIgi#X zn{`9Z=RR~BY$XY=k0U|_u;~cK6e~#W_EogFKZTBZQ3AIY)~nW=3n)*gNo&v;S~PM+ zN0mD?+clkvZ8nU*l1soVx&e`~-c&S{Z9NKNn?o$u`UaC!mfms-Axi6xa@5l9oDOil zsCD2Hk02SQW&ag@Nb+_@Z)&YS&n$o=GL}cAhm3Y!NJU>QN=!DsZ*8QabOo-p%1`aJ zGw86&fZqL@RCmR~<>+86+89mk#H+9}bmv;1!_+>1Mb5biT>93c;+8omVVZ2^!`P4N(l|UH3r6uxu%B(EGJ)W7i)rVn1@env? z6LP=GhzuJHmmganF&nx<+j;tsc23EZdeqF|Uy8YN9x1$+e7Hs94t&8d+T-+4lw> z`lRvKMa!f?mFUZb4N*QQoMM^!6a&)HqFW^xB<@Gsfe27`cZaFdZX9M8L2Zw-0GR3Z zaFjL$dg=+0P3wOJ)LT=uhCC-2;kV9=oU>J^xIP=YiJ72rK#^AJlqA98x5S6qN_yl! zvL!ix36g2$-7Z=uERdV~GF^X)DQ)0#q!4##)J;UXeFNS{uY$b?QyZ>(CRle=#tL*m zB{^)np7HKl5TBeMPiE7u%#RAR2vLVN)iXXqF-ZCwv<6!)Cgi)3 zuy3vj7uJbee_Vz zkcQf#+VPAnL$hz4P+4gNMd$ed9MTf-`s|3L&`!hQRhTfW4Jx}%!YnH{L|WT|JV9GW zW3JJ*K_QBdKbKI$8?|XAXya!-i2n+_-qcL?9YL^ zs5jRr8-yqH1!YDa+P2w<LFaS1=lvrq3E&$I}*o|+jy93yXE^}-Ng44mOak_z&kA$9lA_My%6Y*N6;;OlH$vO z7#P_717+ewH+kgYGaXKce*TbAtYa|1FE@pZ-RT#Hd_5VzcS{u3(aVHTzQkPtm9$Bfbq9f6OF(c~2rRWckL-jmg@(__8dKH|t zgo^VkC@vTezu8)ADJ@f5mBl$lG!@j;V7+q(sJX*w+fj?RRhwiH0eKKUwc9nH2%+lCDw`iXff$?TkNgl%e5@h7NAWZo3xlvb}1xFP6nm< z0NNT{A>L4Lkhz|#KeV#lSMLy~2jR&SjnKPn9rk_@@wlh7sF{=6;dM}yW30xXC1&N- z#_KcfzXc0)lQt*Q_@KP8Zu>(O(Yv4|D34Q}^~=#{ps-WL07T)8!)r&Hx3*)|e> z=f*P3c5BiKE>G@>=A26I)H-V!=#Z8%hMuB(X3qn!fX;ciHlf*07g{9TqPR%i=%?wc zpzhzQ3&_oDhyQ|G!+wb`ByWbmzD-}8QQW%>PY9saFTPJU+BJ2X6i)7yE+dtu`txUrgN>29uv=xfLus7&a}0N+|rZeaW_Cc zW&yD82}zy8n9xBB5R1}b^i$1s+vN6*eiSFR!g7QB(&sZG>om|CYc`uEhxOdXAUvT( z?Kk~V^mzugMKoz$425p`c3AXOJDy|g@X&!v0EBBhZe}gntM~nSJ80p50)FQc5$?H; zw(l(gt)Ug5VG6tFjN@8|@!avo_shADG3(MPJXCTDBF{8(d>4@myai|rJ%t90#jMTp z+UWy84OB>1Xg{5@ur4S?batU;6;!%eK>ULSlIH|kG*|Nej zv{;%7_C2+@vP!$~HNHVNWDM|4-!pu+p5s~xy`?^#1eb!@Q9f0BUg7fJv8#CFpn~mn z*T5T~`{=tKxWy-ud)yCJqnim&yK{3+qvN6#bn|H9X?BvEDe)0T=WPk0qD@HbGa%Pi z`;wKcD4N}d-{uqIr!BB@dNCxzwIbD(-eEbFF?X@#{rVH1~j|OUM587@>Pq9KEy?-ey zE%N5ar>P%$~@MC$+!-H$Ck#z0qtI$md#>HPIQ9EHH zj_^D}#ngD%54Hy2*il;8=>_`KcXHdc;qm$eCJaqOu8Ahl^hZ#ht`3g9Ca-mv1|hd- zJbC>aB8h2$|5_E!&kiH^&;w(>Y29&MZdf^IptxDDGL;otojA*2DDaS+qaxLmCBVC= z15^aAL(0I1bE zBbT5ff_EZe5GHRVD(0UmvnmdUhSLq`F7XB`*GP~bS%8v%DFF2s&?3cr{E}66gtUi2 zoQ`+(*WyKMoiplI3vIQ$5V`9HwRk;YL-jrreGk1ioe|l-1ib1A42xTjA(=vPaSe0u zY@cIvN()prT7tHydB8V|f%6JI&`R#5xLdKj?|0zuH3PJgb|d|@oA&(?#q|SVf1Q)S&mv)A=; zM137as;#An(mG&f8;Hu)*Kp#I^AxLS{jY*h61}jp!FDR@Djf7mL+)ETIDc#dE9b4q zoxcdm-byg2eGvF%WzcJ>!&*&umtf-MrEYP|;EJV609F z_g7OvceIA>Fd6vdI*y3wiSqPk(3UC-_eZT;DA;ybPS?tVUXXd2cuFW{NWnOB}Hj%@<8{Q z4%LJ%fnOipgCDbEZ)2_gp3i~Er;Mm9_m*p=r{kP`-_TL#4!N2~Kt8JjNMRjN-f<@= zUp+AO#!PCxN@MxGP-vW*jmY-gB<|JFTfBkz<);`l0{>094XdtQ@n0ibYO8#w?FWA< zE)~MI1Kp^d_Xt+U+^A@%PX4G#e|suw?+-%mRz93qSZ4!*^uTZ|0`lrwbVY|uG}~|v z8ZJ$6c1Jxg4`^EIu7JRxLxmYNELvnlZq|NGxUaW_7ZYf)Y5@1ShZ8x+V^~?FFJ^T( zft*`PbgX$qTOYmU_a4h^7NC&$VO>Bs6$WqJZk~Q-e`3-7nY5^1l-k+p(0jNwtX#EQ zwNrOR|Irkq63~&O6DYNEP*HLZa)T@4_R9wD_&^=so8*gaE6wok=8xd5zelqjvg6Hu z*;|jKNPkdjrl+HNX>%i0XKGjEpv4I7DDF;;wpinM*7N+ix$x%0v{VpD+TGwa>4$+q zQ^ijcMbnHB`a|*BS*>|om!cInDVEF+gWX@y5vpL@ZWPx(ikfpjcM>Ktzw0!bH<^j3R|QQGD4`xD{Fc$zKNBR};(L zVhFvLgLnz$1QT>}1R1Eu0F-|k#bOnaJ#HE`j{Cq;W={6eI>%3`e(1Jm} z`{>P;p5hgI>?rjLxyf2)ZsJ4ReijsMmvQ$rZHaT1mm$gHjnN-^VMoV#O9-PrQ~+l zSA30#S5-W@WDS!G=42Jp-aM+2%;Eiqwz_88e$XUBYPq~?Vu&# zD8*a&ESw(cXe*k5@mVmDw zg+_Z{077(TEW00a9khm=Clk#+^nz|#caTf&2Q+>!riMPjw&k!cXW8zZ-)5QMp2tvpfuOp=hz^cRa*?*9$F}SXUDbk zdhWLr=W<%}-7=8eOD&od*$Zg@e8_E>k4q*fa2TU~zq><#zflV1Ge-k|FqT{oe`=3w zyS48?46J{M4oDG0v4GYNy>-H1P$DR0vN4cK=nirj{4xc=BotIx`2c*;>&S$RBpuV>rrtS0?*1A%3q3>a z^q~K!*wMKZx%)k7yWWxhNHGqQKdy1jaT>~3EAp^fh&DGp9CDPS!lwrC8ANxtmi{bs zoT#B51i3WovL3*!^9eL7uJ16KXrpCI8^*o2=8`!Y-dT>*Ws4LdR!9XkA4N-dC(xq# zZJcd!1XgzW5y{mXXV22A#(7OBd-W7g(E=U)Qqgu_bC9oT{Ut+xd-&1E-stk7%K z0iD}y-UT`9N+|!98_;?O0T`ebhx9_;(~mA|(hQNH+6cFLirgGWM641J*fIa8f)F`bzR2Gr!Dw?RWQh-50ZqGrM7D>xE#^g*w7HU zRHcEcbr_XXYhrZWX|xE{!m6DeX06k%)^@GsPSb&*;s=pirTzWUTJ=k(u4t->)=GD1 zo&mUhjiQGcC1{aB$B2vS1iSq}qc?UD6BLa0GI081i7V?I@xAm$D2)P zGiXNYs(JFFqUQLm6q`*)Z(;`YzN&`E?ukGJYvRtQ*ViF7K&|}2)ZA_sqrGP-I_hyI zj9I2H6hcJ&T5%Y3@JFv(34A|Ss|!c<+#jK%C2RN4!byR;-6@iKT6tR8huUdcrtdix z(Alj4D6KCpgnF9t$?$$G^f{5Ft0BW5RBkW2f*OqFH z_S19x@_rcbnYB*+QtLTS^dga^G*D4mW}fQ`p)q|iD??4#SJcv^y`Bb}^zB>^dz7z? zqS>MTG<%_?x>c5FYhNGbu3aha)Qh%NI#7mJMfvq?2-ni!-gdTZ;i+i%e|;GZs};*uthjaus~8U_O| zeGhib$|7Y1XMEpc!jHZAcG_k94Z(wf6UiZo~X8dO$9FD*q`w8q^G?{XZh-<_PFq zjd33h%)2=ej^7U<-#<0~eM2ryA5=clX|KLoZLD7s%M05fceoGN_Pr+Q8jY`}=Yv5W zEj~8WBsfM#88#{)*d0Uep$1{JPR_48KrU+)@Tb(r#qK2hm7m2f6mhA8P08!@mANd~j8#Hb%#Q z+)A%4MNT8~$5~XS*LNq)G>{7FOln?j@;_@xZEPsD)q0}nxgwsdZ_$x|3@UqOgjyF( z<^{fMyo>{HjwWO)EekKwqNm?8=+4mD^8+PFChCpvautk;E`zB(mZHO~69D&n)9ltH zT8z_4-U7NI7FHsOD~VjhYT&C3pyGoC#zb1--Ku&GpXY=lj?JUkwypS0Bykvo$afvl zs;ry6jngN@M9V=~IK z#sm6VQ^x66__>Q#Tt_!T#PT!%*Y3)H`>8Fx27n3LF;29hBCi6koViH64g)55!EJ!Xn zj9i);%zB--kUL+WiDL3p#&hk96d&ke)9Nv1jqeN>D@BpR!(ktG5#&U@ARM@bhjx!f z`9pW$GhP97hzp5xL6W6yfhryXgV{RF{h%;%=@i^OIY== zrluJFCnEO8u(FSCjrotz>;Hp_>RQN~{FREr+i}U3F!Y{Z4c+l#FkQK*?{t()0rbWg z*AM#OlGLLqT4;B;ZFSmy)ZWrfrGq znjT`}VQ{xAj@_-7bbHy6F%5b@#v$yyi`w&A{~H>C%B$~49(<8itT0-i72t{A~ z0I+#U+ek%+RkiK(EF3GHv}T@9;eIZKDOaT9kfxDO>qy2;WGdJ)3gLYp;P+%a#zYJR z;Eu+@gm<*vrh}wk6&2jj8H~${P!6u5#YY_w*j^ctQY{%9>%-}a6#A;Wv;v!u%UHfs zD`-~wKF=+Hwrd)b%#cMHvzj3UVU`cAegRb zFK<|O#*=j>;*v66=skOg&b$5z;yz`doA($Z&CdWDtXVH`CAFt?9{7=tJXF6!vjvuz zu<8YhN_T^XcYBg2+hN-OCbj9+J*nmb(6I%2N2o97DaJHt-S*ybijy>Vnt76I=K<7S z?L}uxi=t&(F}$r^l#^PG|HGg065xjN>s`r}pM?oi6%s#NgYwWmv_1HVih8@b=C7~k z+iB%)sLoIoPLHDF2ZXjYYqT5HL@ zN`Teia)=xo5Anbi6mxZ?V!O_1^_6qdYMv}th}zK!bkr1mcURt)ikdp#xj_@Wi;ioT z?SRSy$1!?dLxzAsVRGO=ntjxPc4ys8=MBiE?Fam91Bu5GP`nk0oOHyU#`Tw8cVS;a zk9W@q+4~i_x_awFJ|O3)MUy9bbG@kb?ETL8 zYHn_NA*LT(+LVQ4&K+=mn3ij8FJsa3HniBTll{~5$lv=NR!#K9=3%{zPSI3)tvt=% zo<<~(o=1LP@$*qF8n>~gYb$O*(b$S4_vVYA{I{|wpw)vJr?(W-3|!1;I(!C_XC|XJ zyP}6i^3~aIaPf1bqN6@8+SmfRIk(~s-za<#xB(rx0s(mU4EW9Vh@_1}d2JiG)HqFB z%ZHe-Q||0A0Ui5wyvuJ7IwJMy{>J%So2WU*ODEkk>f7*}T8?gPNilz2Ox;@+1G zwcj#qo1%4)K`T*YrMYQ?&UDPxTsI>RatCfx6l={VC zu*wNVne{YnrI&_ldPUy44BJX*q10t6-9Peof zz1VT6J^Dse9G5f?u=ss6oA@!AUbEiVp(^oy`<+Cq|o`aEK4OOn+3{%EE? z=KHn<_&wf0HP-e;-*>c4`;lZ-AW3FTUkmkCG)F)6&|jUrLB}Q5=%o9YuW)`<7r7gy zsIab!+!Ad|wAchcf9($6S1dm?nrl~ILHuwOI&90JZIIr2mye_v6#zBAN?h|Cidk-OEMigH^3=%~x<`cP-ZC8*sk2>aB!5e@O|crJMZa^Y#X#97Ng_g?~aOUwSXb5VTLoVJ!9#ZPCC zroTqp7p*`xn@?Ai)n0z@5SZp1E`IBvc5f?k^ED=~h-5o$bM(|=$PRn>1$9JktDSJ^ z>QA#QTEJQK7Ln@~xN}TzYVVqnyE79)V~3L*bfN7!g}>W%ilI~?6fMx(`>Oop4zI=- z@6}WkIS5JP_x5hunz1l)MeowUIb6_9z`NQk&V6f-u2f&%x@cXnWe5+HpFB z5VRac`<}omP7kyrEfKjBfsX4ZX=WaQ-UD*jM0;9zJ?2_l{YF3<2a1igWxv#baLb(l zT%CwEkC(Ktl}noTqS^FFxVUL{^eaJaqSn^$w#3C1-_ydn0oU4UYEGj~Z~wP=W7H)8 zhQ>fLoAEqcdlZFe0=PB~ysZjT_AA`_;7QwB)nTyMfuy?@bc36LoKYVT*V8idqwjz& zoJ7SfMLe}bxMwnJ$;Y-6G)|TRrKZOC@Gn%@G{I_4NAYa5<5I;v4-Wj%yBDT)Rm{2W@CMNM(ghh$PO$q6~|vjZaC%SUuD?U4cO^ z{Z5RT4}Q7tz_qjrqsoP%@`7eo@BO&A=^kOp!3Z~c93)}M0c7$f{XIZE?re6l= za~EUg-v@qsbu2$r4yG+%(zTC^Q&B^YohjNODxz<0t)jURHyG!8eE?hbDD3l2$CLBE zq0;&sem)oqXqpEQ->zRcSgJlh?MqT_A;mY((7R7B2u~`4yj6>5tv68YW=^vidYPa4 z0O9T(fVVcl>fR!n&2Iyj0kH_XS4Qr14zx9iB=;jf&Y2PdzdD_0d+|QkS}PiUs?%)+ zb%J>5g0$eZV#H-f``Ugxv>1a_}TvwDl?UV)r$?ZD6GERQW2C8EoNRDhfChp z#EvTAw6K{&ug=gs^eT#R6|bF@PWqZ?Qw>n+tpa)FBW|X??Eu)Di;CGBXmLUNGmd)f zl-HWV+x^IuxC^1Dnw!eX=mukutNRXPI(0xUFc#%$bl|{W$CF;`q*HFKq}H}0=~stq zw{;qPjzkj9;E3Vn@oqPrF&tBrq|H$9DxOA%(`L-tB$AaLFtZ*Xgn_RM;jmj;H*2CB zyZsv4I;N8UbgsEk6NIC*9rE-L9_ly|R$u!d7vGc$`|WV~W=d$DAw2UeXT_yb|aQ7dQuNoi(Gja6bA1+Swnx zcA~b|AD0wXxD~XOiZid^JV(2I(-i^a>CH92R@BDmi>i`x$qn7-u?j1e=nP9Sck~`# z$ru{t$F=p>sogON&}Dy6;jP~Q8?PHXLHiYp^1;veetuM;!8sj&OdUdQW(AM~W#xR` zl8v{5l3(jI^>tu(M+ruvht{t5J!OOq(&Dn!dQ?U&M9yXcrbeCz;J^+hg?X1yZmp>0 zo<3?%Q-|6sy8TLNlREb$M&fLJsTb4@lrsufujvrC!)FNs-4?&0fYLM5@qeE9|hHI}m)>VQ3$*bg!zie zcTV?od?`@uU&3_BP6*}F0CwI)?z>h_gh-l<(j>+ z>j#ZL6n+F~a5Xziiy2c8S*&|2UI(eXW}@Ss7OX1ifQoZ*l2PYTdHM&0QrsZtp)(z= zWXvGFeP)>}d!N&yn>L_~`_ol}!E3H(nXf&H^68VdTzcbc>@9wZEGuULrSM3KZ?x5Y zJ1--myh63<`ADkh4p^ft#9HmJylNG$4c3B?llJqf=}BBEmTL}o$$eK`GW1W38R$># zmTM^b+!do!D!@(9$3^=!M?BSA>LuN^c`w82hF)n6@=IV>a?fLF_GmG+_jQ!|)^?D` zU8UI@EoNHY2KnT9M2=jBhFgDHe25__s1Nq5I^&#*I)!9EleQx*aPbg*TIM{2Yxx^d zn|2wN8Y0*s!#6BgU)<9=Oat>wid+BWQy#z?6(f1Gz zg&CNyvs1gbH-rlBqjq#Vimf!VQ#RsS2TdqvcjL}(BZ0r92XmWU1_q&QT|lPi~>b);Wl5Xon&f{UX{W?MpV$rsM9C zpaiF+?LkFL#cqQ9P779R z(O{kJKK4}hY6-K4R`O>l$Qq^7;GbI3_Wd9_&to)P9KQn4Rl9vh(!pT=MyOTDLb6Q@ zJsTInzNjAlz6uheFO#&;kDNIKbItt;c}4le`6TW7|a>NmjNYVj;UCz#gg z=LS5-Q;|UjxQglr(!3Og+P#2Unt7lc|AxpY&1MVqfk77?I=i4(nT2_ry_i}~tR2c39pr(^p)^&?3GElB$5>kC^wI>xV~ zg_Vx#?VrY6XVVPfOV7Z2rIQjlFW{WZOA*P~0~Z%-1hvN6#LQn$^UHghJst{j0llHM z@&WHjZmu1vhwsm7Nx4EhYCR9*p$v^+I!_;!c=>|TRyX31RcITa)$>EmDGnWs$haBm zUxl2Xi^HJnT&~p|i=0~?^gbN{p)p56t~wqaYfqsqco!AM?+07xLq-36viA@871zhx zCyL_Y!_n{y3B^hSSEYt3etDVCBC zUT7(2hb0w3+Wc#k7rkA>sW@^5&vxz?6i-=OV>(%5@+G{vfU8EZE_Q)|#u zvQGuNab0OU&pQ|JM#FeDcJCa2%Fu2}}3ePLZ zZFE3xx4vN;s~6*Y>b&QJsWtNk>U$767HH9_%Ux>wEywq*=2M%p4|J_;fGVMm$`OkB zW3tc{2ed#pPcPpOwHeV+>(tNnBcm(dfpX|9E>5dy_^KA2E(qYIe)Ma#o&jaF|F&O; z$y`DJDENV)*FdfdS64V`?eI@IqD5-j7K(;_^#agcpbeDS7im^t4=U5;#>%eY4CM%M z9^RA|))Sa+B5TsD&qmSdNx=>32eDfLK* z=nCG3*C4y-TLsU&)b_qgMMW*9A3F@nl8QLu<~e+t)eYpOdJ-3Jibxl&{+8ZJMXTGq zot)GnOou@bZ>@JpKLv{`ZsME~Be1uw)_1Kf$Yq?1$jz3BywiK=<_Cx@m__b{IkiD0 zC|c?;=rz%pu08N5%@Hn3sW{plx?g?q>294wu&;w(q80YEkfK6@-~5qI8LHzK1KVN3 z=n*Ko{hn)06{$`?gIs_%(JQFMB}+KBS&j*7i&NXlo{D>VE6;V0j_TZxX0ML`-_v+r zGy}q;<0zh)jtO~}Z9N%974#}-o`zn%o0>ano*w1ap%@sg_oFn=kej6t z@z5wp?j6G5TBR?lN^2gn)z03|(z<^mKw-t6`5+#Yj{1UPv9t}&gj}o^m+eksOueVT zXVtOf&4&=)y9?wL8o=!f!NAo9x^?vXL(}y%NUsNds#P#3xE!;p<|fxX2)Rz%DIQ#* z@p1yWD-XfTpPk%L?f0Z`MaMF2%_lJXmL%XFmT&KsJo(Hc~wesj6OWC(??rvrku z^t?%vOd7e<;S(a8wKCf?13t)hfa0=Xd=+vIMcIebtV1Yx`>)`Vxw=N(J%LiaZ9c!srKqkhJZ}wQG54yIf1Ltu<8E^rG0&h^NnZ zy4R<-E~lj8TRmD-(xE*w{a{WeElNz*tMra-a2Y)VYPZkBd5%7D{UaqwdM$+Risf3Z zg0T9kF?quml-LQlq|XCd)Z2s6?`q+f*LTR}Rvghpqxi7C$KIzWY!U5wUDUGrhWFfl zPX5?dRx@kfIH=voP43|h05dv`D`H zHHxlFBvGH|RP7GlV9jfxT2c=52Ko71*gN+}Zkl4?mN&6u;025>AOq8d&?0*qTGZ6n zieGL5HP;(q&zy+7%1AO%htfkUgI7)8p|v=LUT3|L=8r+{lOm54x2XNmnOulo8tUjA zV?rmOT32Umq|#xxf{iI|T#3j$9W5CfhPHhAd5TKAsa?5|7KfGt|H+*v*uclg)fkFJ zQ?wm2ry(jE?VyF5_C9U&<0O|-(Cl18gi~vY%kTubO`2cQtfkpX50YtmXMgby9kpF3 zHvR**+saLI-pU69DW=yO{TeN}_-KSR(0bhseZp*^ulC#OZ2a>IB%O7XA^&hh(rQ)c zgnpm(g1%|6)#LNpZIma><64wPU5<9Z&rr$WoJgj&O3xUAFf8objlCS)5lCu>6Nc94Tjj_Sh-dar0si#4wWhk$vx2&5jY3ooK z;p%#_54{e_tBP~p#KU=?HNF2to%hEQif)P&KIr43F^cqiKc*t}0+LYu%FVai^wyrG z)cWg)Q7NqjrH!C=l{1_#=*)Y%`DlA0i?Ub(Rb?22y6NOzjH2c?0gSL4`^Y)DBNDA? zJxzI_%Ov_z^7n5Cf|* zT8};O5JmCpP&BqJplv6Bl14%AJH2UU>VrjTpV8vIIkj)}yQWhv0s15bc#W#SV1uIi zX6v|CON+q`zGK2}D_V4#g0rLV17FFD#7ubY*5ZTQS*Sgsmq(A8Fc_x0XZ0+K%coKd z(1xmuX3V1(;nJoVc04NpKMT1eqdsS-r{l&BGq~2S3!pFbwN5sjN$97zI7AgGyKrrK zRh;9Nn{Mnj2)#akpy+_kt;cIhv+$?IlBc+?-Zq*&;?2wWzl$&>CJ&fAVDf;;111lc zJYe#G$pa=2m^@(efXM?U512e)@_@+$CJ&fAVDf;;111lcJYe#G$pa=2m^@(efXM?U z512e)@_@+$CJ&fAVDf;;111lcJYe#G$pa=2m^@(efXM?U512e)@_@+$CJ&fAVDf;; z111lcJYe#G$pa=2m^@(efXM?U512e)@_@+$CJ&fAVDf;;111lcJYe#G$pa=2m^@(e zfXM?U512e)@_@+$CJ&fAVDf;;111lcJYe#G$pa=2m^@(efXM?U512e)@_@+$|9d>( z8ZgQxooj%fjfHE#L)U;yt^qgQ15S+pnqpwiz|4cp%Naf$Hy8{S<`VskG^AavL)}-z>_N2{hoJiZ*c#(Fq=|t+i zki<8HWY|8}@vrS&$3H#h8sK7M5$9s=Q_MAJ$S~KSFR zZio zHK?zR#eOsV>{{YM4|B)+SDei)-7O0$%~Mbp?kJnrcpWxcmg7HX)P>*pswgJ_@MG_jgM4$RsOE>LzOe-lMljFeo0G48^!a^=2@HNkJaEJ z*RFtak>t8r#Tthf*}esh*{H;G<`YAIBqq8Bax(>T|F{Mn4Q52?`j+q9qPC&7x>IfU zIr7KF+;*&M(%&h%fho`QPWroWSkm84Q``fGU3L%jz3m?8{m?zI(@WPt?^xHsR-avi ztX%^&YXmZD#GU--i2i%|znovPXZ&k^iOTrDVtyI=U(YXN{)_pAL0kX7nqa8+{M!t3 z>gNo@kPTs8(J--4VjL>hl`E`nzOS5}a!-}K{%t;CKK>W;N5ntpkBHyqk9?XxB6J%? z{62p~=st?j{1Nf{{1Ku1DS7^g&>a<_`6J@@`NN2lJb(NHCwcxb;v~->|G-I}Ka4oP z=8uTW|Cm1_{yBd{X#Ow)|C&EQ{@eTk*}u;pe;NLB{`j45GF;O9@jFY^B+noJszuWL z@vmBF{`gldew#o3-YiBp`DdfTq#4A;Jmwf(9&;vXS}=Evyh&|jq(+6GWvu>;%A-lZ zF;dSP$H*wnCoXwo^~XJ5Y|#_2pN=)gA>p5ghL7;6nG}f_XV5FJ2t{W2 zGAp_VPVU5?DpyYi;nC6G~wDW6S^36c>OZr zwntF2ywcGfpCp-3N;+C4o6s=H1Q}!0Av^M+1MmFZj(flC=wsB;>X#iaJ%ZZhla7A& z$#&RFN2g>v+--gt(%_dN`BC!ppN2g7Wk@rdsvp2G$LoY|lbq9$XF| zK4uj2!cVXVw=wO(!?2%V4_*THAeLgnC&2!g0@edr`rsJt{A}z2dtkh0L&A;^%jy;D zR^oPeR1DJsrPi_TcJ4N=;g4dtk12Pd+|0%+{7ww_9OXWgx#7aE#BhI5_OsyvFVM#M zO&3N}W`_Pb%MHs~kFp=5FKNOXmerH;C`OCsK0Uj0ef#-lz~k-z;7x$n1HHK0>c!o5 z*uMYCi^2a3&u;^7&aVDX4LpQhe?HB%qVRv)lRW(En7KB`xF!D0M>_ILZ7v(-S-|-3 zpY6!6v3Y2eXGP<`f5;=h*(TN~|L;8Q5#MDaAN`w;edG_>SQzF1t>-_p_yikk$^Q=n z0UA!Tv8SOTf--6T5fLaDaH2Bo_y`|vk`X?6loVD%L@>gq0>QutpV0&hBYe^*F^9Nr zuU;{?$mz!F91}@Sw^Zwx7vyv^HI9iPH`qzH(kF7Gy>t^L!liB}-9D$ud2k~+#9VUq zj~|PdjqyZu?!Q8YzvY-IB9h|=<7<{Neuz-~5b=Bb5Rn`|MEr~&B8VSG`1}<=MEpH| zm}?{5LjPL~VSEWP#t;#jWg~u%AtI7vh=`vtM8q+v_$!8p_p z?2}*dgwYUVJYh7%7*9mJ{4JjNn<0uPk_`DPo=7s}S3F@HP`}~{BY$H&VWgiFPZ;?p z#}j|!uXrMf|6lP$68&HCgpvNQc*02E7*81K8{-LMKP1N!f1|H>B8mQA@kA2+|303G zP&^TFhv(?e`-4Yl#5*3G5nqx>cX3E!s(2zo&-@5IbbpR?3CBuUPgy7+Y#h%?@x;H4 z-RggWt#|_DpCLdp^`9X?gyISK|1F+~_>vq?&&S;mfxu7L z$d^fRz+<<_*rW*H_ZTDcbNJa9rmrqlB9Db1j~VUtE82)W6J8~zZYSd#m12aXkmIXQ z(o7QW5W}>_<>c7ox5?7y=S)CtawPKG1nTqi{-riKF8OUz_4#?%QJWm4{5I3_9>h#* z7W4kMpoIyxJ(I4P-p_tTE?n%+{A;H7wO`>27yB_4o5fuCITb6E3HTwGkkj^8pwPW4D?2UqQpC(7Qz~Q#;0jKsa{weGp zaM9J_tZQJ4bnby^+yfgCPqeUg59;9P9@N9qooyIvciyOI(#^)+RWJUDIZs|IZ`j9k znI)4jr)AC^ojW+UcW&3dZO0CAC;#_sYnhmsJYe#G$pa=2m^|=bdcY+xXTVzrmahv; z;*Xp8fhRT0$Mq~~FgW`^;UQ=fGYT0hb(Z6-r>|$EU3mduKj&!YQnzw{dTB zptbTN?Ad}cJW&#@B+hO82`3sQ=*)rPn{scIaCBe{M-QCMzfv)VQx3{<=70q znp=#S>1=LMKR7z)-`=Z}3&;OVflLLPy5=oEIh(g+AKbz-6eaBYyO{fiy>+;$?a&t_ z2{8euQNfqZ5rH;!a#ZsK7)v z(H0U2Sf*)OYTNhd;{WBnYM-yQuk`R1_)uv%4R1FVFH9DDB=J8{?5HK zcd{TNwr>d^a_8K0&+^;O@Ao^ubMCp>){_J#zz#NLtVVs`cIS5M{;CawNQ@R|(VMlbRJ~aVHE1x?r%;;WDEII zH##>}tr}qEy5G#kl#KVCo7mU}>-MVm1`&l8L4kQu=QjW9uo z0NGQ5>}CkhRPKP8vE?d5dQfwp2oEW6r6E0$ExPoKBIX@};#QCWrJuJ!l9UM91$u}O z2vBQ?5Rh#?2pK}r-MDn^7a7V%a_V+Ngp|lqhJa18Aw$t!x(wY&4rD7F&~$^4hUiX3 z436>xS*kbW2mS1U_!uHvFXEFU47@57q!?e33$wD@d@%Lg{hVFyTIXt!x>O<&5bV%SWS^p~ODnEFXgxx?v%Uv0OQX1P?45AdVUSwcb+i@2 zVhD5CU8$8UT%}vF%(91gx6~;)lQ> z8=?x$cF_Mm5MbsB>k(&^J@26+)w-G#I;VinjgT@jfls64gs_*WShoX#93o&71OVXi zB#71;0=V@`u?x=k$p`>=N|3m1l2+VwQ0D}>AoNGm(O`0#1IkI8+U(y3*uleSmGux= zVAolo*a|*?t$zhBsI&^Wr09G=C%*004+S%5q-@~{;1|2mp5(0aH!Idsmpiv9Rzy|_ z5@Ig06%wG}Uk^g>kQZcw(4U=c026GYQl_@}qm(4TxQ;wv*NtQZ6ipZ-1NrMAQ^RyV z5b#~rPS-gPcF+Z~Fv=l31j-{w;6q7H@Q*3T0(G`CsvE)eGI&O!+v4y+;OTDyx-yDj z${>2cr4F34%W%h4hWmrpU{INjeg^Fxcn2NP>R$tK1Xf#wr)U6rfLM3!fWATgR$;D# z8eEaVw;!$^=nX{>SJY~}iv^l-IEk8?&~LpGq{_@#EqXn&6*&60L0lmMPzO5>S`Rs) zp=I2SqP+)>lsGl`{TqQat+}&~DubBOY-eZSmJD`jQ+N8CWjsb3NP>1i>w7+1bVS!~ zWy$MB1gP!x(M}Vuq}EsOUyZUL{<99dl7}Y3d?bn5RKy8Fk(1FRZcn5h$or!ZYLSiN z-3QH9+zA6NgY-6s1!(B zL|mHaUg5YHY$eyey<|E8ho`0U9^iH)i2#VqKmw?R^|4EC1GC6pAWm)rS+rjqp+W^$ zg}-S!f5}>EA93LH(Fyh`lh6uo+Q>~{i2kP@AUCO*iK@75d!T8wt_Ii!D4sUq>@X8& zW5dwbM)ryWrSljVKu43&N^bHTBgkpO-9|YFr>Us4;)a75;^3licI3GaJY5nf1UmPH z@1p1tu_NCp@7mNxvYonKw6YAW?AXA9i)9{I6u|>dTGOt55PB_oM8v|Oiv{dc6GcNw zo$}y8#I$Idp)hsqt{0d+pY)v85?Pkjv)7Ahkm4;H7Atq7)O6$`u7Tj`J zThxY7D^Wd**%;?w;DJpvFlS~mE|mg?R@^7UaTpCJ#1~FR%!NVwC-({X*dS<(J(^5W ztYR!>sEzDyA~CA$$~(anFh)tkG;*w=Up1HWEv5fOd}$bX+&f)jfhO95s}GM5gB*I?;NQZ z!QS#ayybJS$TA%(ER#mK%co-t{gavQib+_eKI2yU|4Q+t&_^#OgqXOy01HHYgqWUA zKVyg~SoM-`W^T~+lJ6pJZX2%;*m->vyR%-htfo>6?ta0t5lg6+IxGoWnozTA zcd+V(uKn2T(RDb~31x;0Gz+d6@K`}aP>I(UDP{|q6 zUf(eyLE#R(8dErF$7=au5&?Jxg%EnIi2Hxq zbsCUC5-S2WbqI`Dw;L2tQebn|0kN*MP<7Wa6(&+tKpT;E9WlrP$zWiE#!ccdioG3D z)G!Nzoi3>%1HnCyXdkAkh!7CjsE`LDO(|r5s4Ds)MF5C^*fHMU7$;~pcQT#O@h46a z5CTryu8NBR5ILO|s_HteVnK=ms2Dk+BLZ0<1q?*cB8egP^ZFR2U(AhnTR7|Dcz#hl zzZl6z5qM)T>Vk9|;p|i-WH?CZ_KZtgof_&SlQ4=@BnY=v`WVXUdf$4O;}oM@4OHvg zbjPUf!!=_KltVNSBWg3Suenl4^~uMjaIBP|T4UfIf4N(BwT5$jRJ#yw{8&SrqK-XJ=3D2Of*9ul3(Sr;l5=lRqF zSm#`56Q;aCe1yR?GR$BWls&K=NensN*T)KG@*FAmYr#~iWFQSY&Ebq6+FcCiXRpD~ zPBgy^0FZI0a-0DGAiII`Xg#X*w-E$zP;=`7N<~b9_z#AvIXwllCdEN+G}_ zIvh#{3}s9}4YS1H4iSqpsD|@@eVj>rC-{s<3#C#$18oWN5Ov(2;M5-wZwzvjWh>Sz z9c@GbM0+czpoNNBmujkDqU~QDs^V-F14F`oqADQ-i0z2V))B=lUk$%Fl)jI2C zFlCzt69!h|VB*&3nwVU0$QU}Eo|qC5(dmhDf^m+pj%f5a(R4?a0wQCfTTrLl;73>| z7+3a)?Zo9FZX~Jqm63$rS4NV0Uk~XJOF$gc`!Thx^ggzxeTCSYXHnS5C2PQuZ+DdI3F}{16yKN)G(emrAfS4H8QfL06Ev2?R_M;L%5pZv6n$ zs5nf$7(T#+C{J+ZQ&$=2Nmk3Cfdf*8489;$yKrb4|CnYTpSkkK-s`z; z%;+&+8tZmB?K5Xhnf1(M`y}5C``nzHC)|AFDEpWP9w~hAzPnrnW9?7BWWVjH;^G;; zTwn3T=`&|ez1}zDxjQU%!_-Gw|}=3yQ$ zQ?vq?$!l>b-j2)MFyDr^VwGdM$A-m>+lQf%yz(E*M(V7tJk53sqRlqV=E7UZo?@;t z1$ZJyarNbqG&B4t`Bh^tl4kQPmry^qL|w)elwG*B$ea03+jzen4F*_*Cns3`%GH(k zWG|JypyB~;n2I)_ks4`4?pTSpmT10q>-s9}2+LWE!)IJA(ukH*Er&tOkQKwVEO#9B z+oe7$tdt5Huzb^qvimffRq9Er@doQq$0l{OoON6v`T&Iwq8EFt^xAl9@1b zg=UsZ6##YsU3Cy+)C@?2tgZmFk}exiy2dDton{8kI^(LijV}farDlU{#U;_#qjg33#g#&RplmhX=*Q2H( zUNKso6MfvL*P-RERU}6?PSeWO7T<-}e~}kcXOKQ(|WVA9lQ=(#cV<(Q?z|6WBz4)Bzdico zbiY3`q-FJ8-~YF*_dm04;B#47!@A!u9{m5lkdtxw^&d?eRdCVJoUz^SADlUO;vWZp zea`jOD;F#tHRILp_x}?9%fH?;>9RMA%kNqF^ZTc+>3)A{_|;90fj_QWeA9&;#g$*T zb-%y3>h()gr+)QH?~Cp)y#1%;H+H}O&$N-Z-2Kb#_ujYeXOA86T|c?|{lSIbo8^1v zjk&|-u3eOxwB|eA?@yk7cWGp5;p@kL-udp~xi75le&0R*+Wj5^b;f@PV3x` zJcXi|M{~~Q`>v%xfv>yrj0}Wz7da|b;ycDmvg)KRJW@w+A)(IJLP8yyg@if|3kh}3 zmD<+mu6U;uZFwuM^W){*yz&=|3;geU{dL@>VDXe4yuejH$W=Z8ugl(t*Ja12<(J=O z%P+rgSbq8V5&7j4Mh2}f`DPup@Mr2#8-JcXYRAcN<4Yq$OabIjr|JIMvuh#_YkJDk96HoB%^qs)nw=Zk z)itk3_CLC?RY0~t`kT}yNbHs9#PN06`TkHs|L(H3QlgaR;GrJ5vb!j|rKwE|(cE8{rZJuwvZ^0B+BdPdD)mvc>?b(7KE#-x1fNp|P*Z^*aSss0a3 zcm7(JbA#$Xh@MWTDgf$S8S8_ioee^XN)%y_d06I3&G&CpKm?IB+mdfkVizcp@2tzW zw&sxl@1YQIKjiW^=36(a9&xkYE}N370>VZ>5Of*feYe-6br~C(B>bK1^}>8(e0VyPWG| zEYAna4|Too0?Q3V11Jna+w#pUmpajX`OfzVNS<}K&T`Uwbsp#qmghM)x~y9ikJ-H5J__IAee6up}}Ce3zRbvq6Q^|@1XcFKPW(2G!Wc8#r8bwE}iY2 zki5D)Yb!e6G&tY6#${b+bh$Ap&)Uf@^Zi?0iV1oCL+mo&-;l4w&gG1=-39VO?hI;hw{Tp0Xh$>OWO>Mp*VGYQ` zP;1IJ30FIwg5@I(*=_(SrD-x8W%I0I7f7!do@YIQaqkj_&%%~OjO*R;LH>ev;$sJS zYu7doavjG@WQ_B*Y%|CE8ssE(_d&iXHppAMYR_Si8^pGmN4mo_(gASyk$y5h(l?*q zkq*XgfCApek)CN9>D0;RX{0yqG>AVwTOaPD&SAK7J3NN?p7?m5qIG`kc;D64%<=BZ zsE>)j_*^yUVNgtZzOO+~()SqjV1gR-ySf_AY0#T!QfM0aH^xUk0PivKX>;_EzvcXl ze9)ya#+@P#fAq_}BBtTLt7~@Ac^Lk#TOzB_RpUi zQI}}g`f^Fi7xQ?=g1ZYJ8y^DtfvJ8^F2QqiSPY461vlIrJ4+6~ZY;wbVa>vldx zp0=x--8xSqZ&J_aY_iA!xTSr`eP0&oyb8Yw51JW_fVhP@FC(Cb{YbPO=V2I}2eTmt z!&{C|RM22d=Er`D#eQ(27_%Ou#Co`r2f30lHBQFVI2lvpWK4~dF*Q!c)Hr# zW+hA&HXs<2e!Q6(P&vk=Khv1>GArr!0Po0jT*!Kul+y>oeDVV|FT%F{&f*VGBKpDN z68Wf}Q8z@nM67Wk-#UulQ|Uw(3A5U5gAG54Wrs);&h-G9AYhWb zEj{1L7zio?g&-mz%5CDSHLRigPArLJ9jieTALe7_MX}HYfc)5^d}ol4;ilDvs%JK( zb`OGxM}VQfSmIvZJ# z0TO}~X0w2YVG@AUg%?irpp4lA6Oagx3Yg#)ff)r)_ppgT(OcYv<#h|C$4+!n;Z!Il zDsa5urZFlI10)a+n#4s#Ic#xJQDGB`O3Za5;Z7oIA`l^BLQzp(oPa_;$6UF%s2~i& z$091dcy&U3<=U}bkrq^ebz?0hE-H3{%0Od1A}7kzi;0VJ_k=eHng}e6noyb~YQlDv zxFB}I#~42wMO?ZEPv``qkByi;u@bmLY3VG49b~h4Z&t`3XoUJgs@4vyj6nEV=(OA~Wv^gfg)ljy}H zI52Q_bZZpzTVk4pZNy_egn_P#$xShND7`u-CiP+RNxCh~NH4Lq8NC;MafZ+6d@xt{ zI}H6jez|FRhUIj3gGE8AGkY2=6rTXIHX}dGMK67YeppP8{jek?X1AcS8p|#!_`?#h z=nu=p!#{k4K9sxAi>qMr5=`SZ<{ZR^t8@{I0qK1lGWh}~H=s8Uz%(39hCgxLMEWpH zz21esa>7Tn@XUqi_OW)tQjlEObe8+rp~XVF3GZWc^b!)%`(OlAI#HJTQ;ZI?IW_`A zdMD?9h{UYyXEa1i=D}<`1s~;>>qPss42De~_DK*r`?2#kk01SO^nX+Qs0FW%^P_k8_^x|FFu>h3i92cj9-C-R1)o`P zb(b}^mFAi|>U)He3M%Ft=kAyrJ7lX&huSLBVfU1^1+c~D-U`R{+-BpsWh-~uc(uH} zz3sM98*7r5E)AXX-M(Tce4474eR($p_~X5)hCdJ9)WV;~Z)y*&nwOK}um)Gn&f!5% z!QJyLYl5q$<={XC+|0%Xn^hBYcsMjR-Avuipwl$Vwt|XjfzT=0b2AZpZjN%#O&j;z z?BkxBQ#f-h-+2tbIKjk?6|?|0-kiej3d|Ny@w1T#C2^}wMC%qZ?*>_cp{CsEwLQ%odIfr-W zJ5TXZ`#?arhL7@{N3k{^3Lyp+eC8YNEf*v6ORzwpt%yP~r+p}|;iSxX%XF_g@-n#PMi*zR`Yo2s*go zu8Lt-qlcqIf}2N6WTohYSV^XBLFEa zJrqKK3ehRTv^L*~NZA^oh8-XWQRh~8cA*W?<9W&7aqzt`x^(EM^-|VKVzLw94ExGm z6=@kP7aU!D7`rkcjo)ZL1QH=+#YX@KMlG}f5i54Q8{nj6!Tm!=tC?|F;Mos&Mh-!x z6NRLaVSFnA6arL&j1Vc!$xsx*&P!h8_>O?pz#b!)3JiOIAfQTf-c^xeSAafUba=N; zq$2}ah>wIw5E=xr2*fTxm6FNn;|7MYkaI}DY6Vy+7J^DD8Bi?;RM_W(Y;G|Etx~WC z-5`P(+%pZ^e89g-0WC<-C|2{Z--qcF04^mP;&8PRtEcB4-lfwFVs*6ZeLfPB>0$*? zS}sQB7hyS-SRn^ug=;toLUWNJRt9hZAsJCSLAe5hu;3_S1wOtGsJN8}wLvgS#3~XD z?SBRGkfEgNY5UTV2~<40!)5TheGuXxrn?h1g@kFWPppf?gvD}2FIkz0I5dk zwFcU5ZMb36j+Un8Aj7K?+@EO~ihpUR2g>>?|UzXI5ElUE9uCW$BDWj7({)&cDCLGGxmp zWLpCxft_4`3$@kORYziXQ(Gq!gbNJ(ub{R7s**61tDFtcsJm!Xg@uwGv1i}vYtK}z}4L`PW~IN{V!oD)Kk>7;cIS>cScEX{TP6BcahHm1$GoZTDybJIO0W|DiMyD++}ezO zB5+RV0vJA1Fu`4lyGraJ<|XmQ>>!!#*m9*{1UJzwAYl=APoXn-Lb%5DNHD?uiK`E` zAM<*6V|IAVs0Ea+KxfL&0U4i-`8SEaO)$Z&iMcccDCW)Z#_Y+M@v2e7A6@AV4CHWf z%yS`-ai=BGVTt=HY(M6v@Wwp2&3Lt-GiVg9zK`E&r1v6S1Z|YrDJREe8Wl-3%qRfK9V~%nq=R z+5F}G+O$G#(RT)60_HsCZ^CTDxiK<8A}8i}NnY|3w)3qK5@R5scuXaX8+M*GLOisA zZeq%yV8myo3o3i+g8Y%^Ulr&(oqK43aoOiv2^cChAc$?`@Q|27a>0$~efTS^dYalN za?ba_H?V2}R%T0^f7|&T@r!4LHA7f`Ww4cF1GvQY#_?hkO`5$d(G_&V>$bF2J?QQPK!6@(L zsQKqD`?Rvo6I|F*W*D|M*IoWQN48;-@d+B3l?8bSK=01t1FhP-ya3k?`t*c_l*|y`)hp*_S+VK zit>N{1RJo=dVe*(s;mwMJ;(Dw-4z4c-#vYrr*mGw%l$aq(6_9V5O+T&G+VPhrH%>J zimNWim))v=i_2!Dd>>BIZq?SM;^S*IkrX;GJa+VRygX{-^=UiK0L`&%VfyPh5Yd-g z%8yp9l-zn;ed~CsG95E|OtVdq;|y^a=6g6tv^a1f`Va8P!lTGp$3`mI$SP@M4^I|F z6*n;*rAj1U%UQn#b=p}XUI!(7jkw&ZHSj~KT_}=~&_)Z}z^Do6-yp2jW~|+smi77&vf4CjXZBOPFfPtPEb}6lsyDxznRL4?gXVl zK&cl{B4#=ZBXZdWw!7wRIKVbQv8Q5WkGIi{sByYW8%1m*fvPd8$D2r`rHSrrqO=qP zkF6vSR_8=aiclbturb8M;9(3|;mgf4B-oB4FKrc(P9 zwARN#saMS`aHO?HftcwKY>fk66L#CR|vaUKX3%67%(kq2f zwq3@bNn;pw;woYt8c^EdQ%WAm&ku!mt;OM|TKX*G+|!biIQJBq`M0?2FckGPfO@O8 z1)mvB&xWEep|&r%ABUjc=-{{CY%oyxTr#fsY8S2#I&yJ++);?@vyLKMr#gypRj(x> zq25d4`P5uN?Edo5Cp`~!1={HCJk(0$dn<;w(HHob^HAra+}cJ}F3o+7Y!Mj{0BhX- z)$a1#xi|pz1P(%N$APF}9E^(BpNjDs)ZCg+a3E^M?@I}1#R?1jkavb5{m~Kk8}85e zoK*Kc{pY0q4UWX>@1maq{S@e@KtBcgDbP=WehTzcpq~Q$6zHcwKLz?J&`*JW3iMOJ zL;=l~?kX?k0vEm?$3M5Npd#0zEi}tKlEh+e-lno$hnY3&15K0_14x0>lhd>dMkXGWU0VS}N);olcL-4JUs!(%1|I%qP%)1w-m zn~B2P-r>QB*^WP1QQKrlF^ZF!(J=nnc>~%+PiVFjO0z9;MdAy1EYJ%*8V>P6=a~q~ z0@6O(CTZV3b5nTQgUHNd6OAVfaxYDwHvl*AYck{4WX7-Qlh$&6nQ2C)Ev zYckE>Q9eJZ7Vf(sbk6-uc}(JxKUCJ;47n(Bn)@0tih)k0vuc z&cJ&D-6TLandotrU4R~EkO?;3EKN7Z>2c=$9emyFO)U#6b6K)7mnAE6Sy-8Km+fxX z7L6WYv6L^M^~E^y_}_E+SLQDcXp8Q|vXpzl$x=R8*n;a3&36g@CfIO!&W?*O82uiFi@93*{6Zv3uwIycr!;yO77f$yMa!~ime5VOQQqH{zGnVV^~Fx4uSwE6 z8)lo*oVg+Qf|UeOTXcI0(Z9r9cG5nhShE4TMgPbLw&(1~%heWgT~f0F#zpT+>cw2- z7ikN*O-HkpVC(G%NGU4dLz>m$y8sn{Atc0Mx(;7JQDYKxr*nai=9+vS&2|AY zY_mnzZ9+?}KQ=0apT_~idfTmKMs9q3hlgN=)6{qCgv2u8_Y$8Iw$`u3%V^_Ihu7kx zk)|dL@LPwWSol}HKO~7;k3ekVphzkvMclIlzMhj5O^!DTxIRmHdJW% z9Z6_iCbOxOAMU=-!2sdR`rKPi)!nC3SE`)5@3LVmd_({8HEgZH$GZOsznEpX{$K-v zy%m?T#HDypCmsZ>j^(%~Yh@%EKv4L-{u+qXAWV30cMrds9Dt=odJLrAa36ZQ2g>}L zr#mjK_7Fd(8#D9xoGyqmekJ?H&=|@S^oHgpfFP?xZ~r z^aSGE=mLt7rqAE1XgUVJT4o(AChVq=u*Xp0^wm668aKJBcBiZ$6G&fdxB+=U5pPz_ zJr&-I>>mHh9_L+{sYOC5ik0oR&YG>WN_d1~;1T$x^C>b&7buk1{k=XJ7K0^T7Af5^ zBYdqd;uA@Fd#>^_x(n<()^S0_WBhJ3d{cOyGGiZtEPcjK*ZZ?ztPana`3pO3o$Upn z_%i)f<=-ddy>ST}smun~fLI%k>29epMsx~ zVGfsuPt#+!r{>#@zx~L=CMvnYx*%QT@o$zyv8N)}>ZvG9($;G0oM9)5-g@=+WaK8} z`Qr{q%dJ=MPS)0X{hJFa3R95zti$dMyEN|Mx;mWfVig?0l3h^Y9*~DGMS)h;C^=AR z5|^_TMf30(smDyxhxvN*-cA zB~P-Sl1c2RWIFnpQ$)gRWvlVUEO*(;f!d;^ff&3MqigQ2@TM<6zP&1((s~2@Uwt(7 z`~kgF(WwvTiWAdK`F>7^d|pQ}Z+Acx5NoMq8t2!vE@h&XvXBO85l(R8+|Y?SrirCz zIqETANVpvpCrQl~=7m{(B&sLzuALW7Y;zi9>eB#?>I&%9)kHQ{9TR)Kcf3>Q76$j) zJJjTvd%q3UMFx89z2)P2_oDg$!qRK+P#I_L{c%*MW$YDq>&JCI6}1QT*|{yDa~5j> z`5-R7OL!x+|7O{VA$@i4vTF;gF*^BNQJ*PAc&2*AIGayuco7q!xXjyL$(uXtc|JSq z)(byT>qU{F2|`ZPC&-|yVe&Z{b=#Q~A1d0y<({uDL~C&IjdV!HUb(h02cMVW&s1mxRy`)y)6AMBssWmo@Z~gC zLF?u@3ZaFU!gI=L#8%#mQP{UdykI06#M4G%pUhm4I4DyWB#tX*)^|eYE;4N~W-Mj< zQ?;@VOpKsGQnf|06Sl%r${8vYe2TX4Va`StZH8DtdlN1y3(k2kRBdr0L7%7E5H@Gd zF2)w&c!<=sGUpKPCNK*uz^$$^!gFxez0M66JVPN_E|7}WAJIyPU34!Jn3*Bfh7=}d zNF7FsfrXMeoT?Ah77kIv=zE0-YWlX{0$$achrr`BtKC^-;xIUTB zV<{(V4E&$WnV3stje!%C`3<-tS!2R7YvP1Srb;qN;w6`tLSBk^DfW~qTEXdb`!^tRzzKlIzlqT|@c?9G z5BS3M(5M(UCvhoWHvx=Ti}B+-giBX7Q`;caGd{Qq$=cJn)QkS9K`PqC$MJ&Ay%pTv zOToYPRSCPxP{6FIBVDn0OF%#e1rj5brS6CWCaihIIjh&66?m_R0azS0hI z525J;xC3su15-Q{RzQV2HXStt8u#RhsX-k+JWybvrK7BN0;1rninStOVUc-8%T;`; zL*>%y1H6qv#ig-)A)WzAfsOqiN2$gK9Tqei8xP1)V$w+A0D&+OBNrQq8Ge*-G{T!_ z3!U`Wwe*K7VIr18O9x=25o(;%0(;diG03?aPB*PGZ64?qqU)lfkC6KqhWgz9_RRDV(Y}r;R2gnF{iL~H2Oun z4uN-s7*J?)Z!>dv`{tQBi?JtoG#4`((t4`9#YTJdBhV&85{M*?uMg+6#9^#u4rlZ* z!)U?Y`p3i;^!gI~uP712%^LXI8(wZ|XRDE`w?(Up_Oc_>6IGe1J=6e>zHGpjYt+VX zTR3MIUb7<2iCP^~d|y)>8}V=y9pf}aKe>^Csvl3;E^XE$UjI7n_k*f!1 zxLcza{{b5XpvvR^1NRKX{Rb=@6mNL^|$22-0!?0VpT<4{?lR{sYhjnRM3{jVJgI z0+Y#q5SZfT-he65e`reZ9|XRb|Dc!>_aB5OrUrG601gF~?msjo`VR`MnEzlvrTY(Y zsAB#@Y)eVpe`xOEKQt@5NAh6V$uT450b0Bb6+;kD`pSGxrfYAfN zMR88XRdefjJTO#&{GQ3*=()5>Ysq%$Z}7JPR@K(Z$br#lZ~jK+_HOx zF!={C-QD~RQ#;~su$?BrggJa{bAdP=Qw(tEPstVrgi(~K@5SGEct=lv11-}f{}`vk zx>V8oyMP})hv8N*@PMNltc?F7R-x}?=#`wLr1tx}Y})VPp}VIT&h?;coa-UJMqh;Gr(XB`1r@~uuoHM78rh4#HvAo9L!PRA`1>FQH3rUjsC#@jVP+$f z8kx`FQc{SHi^4n6g=st)yImM01RM-t44nCnT0B_`Bm`gv*z%E@V4L+Meq_5w%8Z#v za<9e`RSaPW>@EnujP^NjyL#y)@)E|J?_~I9EWsGaM<&JwGZJV*0&`*Rtzk2WUdq^y z+#$vAye+&TLKDe~=V%qQ8 z6B9g-Lv76A>~6`4z2^*PYBl+=vz9vnTs{?zCVjMK!faM#5IT^<^_ivbiT=VtZiCQjTI# z2_A641mX*kRtOR<1wBeANl`E-u73&q2>>ey|0)mIfPe({Z0oiE|55ho77Wb3?9&fS z_KBNv;x?-8liH}_$OSPL(wvAP5i=qN1Q&f{t=OkWp}?WLg}t(P1U|2lg*+sJhAI!q zLLPEf%R(L!Yhu>xr^-{_H@YUxco8Y?H{^#`kW>~-Tli~rODo3pJOM?lSgpy5 zoi!-kgKNMV@(O!*r^()tn60m(GoeY$-X&wck5MZ2jzx$%epf}l9-|!-J?x*kEUAS1 zVC3dlo$#+r_VD8n;q(9DHnLCs+KYXJBGFAFQo2<{YA@S3N=2mGLZps~UJ^}oHWsjF z2m?*VET9T5#4KP_r_yUELcMl|xP~aam<2Sw1rZYm>hGSNBacSwyuR-ts?@N5%?b9e zS?pi4*uQ4R)^nOkzntdNXJP+9?B1C|eh35luysAqR#feUphCvT@Ho*-sov;kGABKl z6Ssf8_HWp~X0d;Xgz44(h@9~PQHYzqrbN@%RHIP%oC$C}Dexx%9Jha}72W!~0T8ci~375YM4Z5A1TW4VsNyrH4>_=%fxLt7sc9`t$WuouGv2prB4PVo2 zhHIk$K&29d1B`u?gr#*~YCL=r+fTWi&|q<1%bLY)0QdqN=BC&zjjLDYtoR-u(vQoW z^;ym#vfgr(q7o9nlQ{zte{xhJ2P^IQF)|lwubhD82F!wkzS+mOQ*0jeyKfItYP<9S zq-3X$?-ZdU!_$_{%n<`-+j;j&MmOep}pYLZCLb*PLWF9BaOZXL@^S6YUUI!d%NK ztvh%z2VSYDPy#P1xy!cV&6|BBi)2*0t*0asi-$F=#?@mZ-ij2uL2y-y2IR_4YL+sW z&gq%DQthMh7Abz#t+#)o)-U*EjoUs^;~u-(=yvv`$<`LGCv86oeR4k;3Wc+#eWK=z zK3Vg{-Sv&BGYA=Xpz#&Tn1JE7g?XIq={AwKvj0R0j{bHWM$CO&AkI;yZ9GMNt=y}v zZFqiHvE1*~_rY;QJi+Di9K+@@XQGUhX?DryCbyjCD(275=5<~!j9E^zobg+OCJPE7 zu=0)$l+!2K=GKXEd1ny@X0iUJkM^wxu(povPuy$;t+%pR`))B@P-FaJa6*;*8eTBU zY{6a8i_ao#u_pWtj9ma5-Hc@c&SraTOrxtrTP*9hpbE{r5zwZ~guBxc)W)-8fT$2U z7W*usr&~XQtBRQ0UEHBo9Zp(lLHQlRmt?T)TN6*^b1EpfttCVe%`4)9Xl zIu|gQEtHmihp01S+5!%py)xx|h85O?^Mj@kbgyKKlZ@m-q#0mh34qjsp%Q|TSWvq~ z+P5Y_eUfb8TcP&d72uK%C&T@)vf3-JW8A6@hM7B64(B&q<_8z|sGN4m@xkU~9#A<~ zvL)M#xyU(+zb?LA^zBt~hI3!mCuKOG&IPP>WH;H&o?6qbti%kWqXD}LYw22+*0%>LYKz+d-inHq6<}WM);%{`* z&fG6K|9;yahQygOYns8Bb=GhQ1Xfr!m1_=pxZV_&f6aVTjv;&my8Ojv>X*Q5!D9Az1#^m)E zy1arkg#ZUsu!b+tF@yYGVj!6mK7h7#QMMYnDPe~EBsV1-(Ua>^!(8N&+|=+^Bi9!G zrIBk3|Ha6)hkt0~+Qa{D(-M{G8LKg7M&WE8)9@z)ktRQmV@_T-edx&;UB1o877`Kdmwjjy6cGoEMe zXAyL~Q!fUo_%H=&U{O5|O>>-988Wja7CX=~w`;4z@ai(P)jRLi(jOKCBL7$K9_=&Z z-A9 zZ|Qg4^NsAG7iwwdzX1aWrI`O%&-`~e?#+L${IT{)z8QAU^jQ<9+HrT?y`E9_F%LXa z_~3naxeCVGpMJ@H+f&8GGkm$e;)&B|&YXI^Z^m9%?yVShF%GWR%9>S1s-7`3L#Kub`4|KhrCdbq?Y#Q4IIBJ~mo)1I z-qK}g)Kk8U+hA~1{;dbqQTZMZ&c?_6JpKL_9WZ1a!8`l_e&)6Aieg)LIvG?fkCE%M zJ_kSdz*j7sBOqoI%ze!@!S$r;3D@IKJT~FUBdbhDll3S2DbP=WehTzcpq~Q$6zHcw zKLz?J&`*JW3iMN;p91|9=%+wG1^OxQzn%g(%*6Fa8)9kY3mK}!;;|1we&6sPVhL)J zhJ%Wck%c9mP2BfikAQrRr3TLjERyFr7UV>?ddjL0%8%kWkl`cK@GkGmMzj{|MX0}z z7X-b7EI>JIylB1vy%9bi<&$n9p+#!^b9DZVbt%eOtw`u_mIi09L zaB&M3``*Xe;OP{VuWnM+P4xEL0Tj8c#49dY$bz7Wu2P~Z0>u?)emI=NzNdI``y8H0 z$p(}Z1tH^FgivHh7b3hNrupQM|2{guNOg|p#@LvI#=%N0)<03N1%KE54hw}8r!RxN zC=tD8CfLW4=n&snSBYpm(Mo=TACw2N8NEq4t09+Per!f1?NT=!vR z5J~O=68-jAHgCHX$xSR$*h`V3#3IG9A|fgAae>$6+C610*&H7+dFXxrHD7ymV-%l< z-NXL&s_=lazyQD4vv)u>i%Z^b4X5)|ciC6OEk)S$Bioa?kqBwop3Ln-NXzzQebW$b zjqS<$CLzMQ0E9SXo-I=GV3O?}j7y8l-|pHJc9pf*U1ja| za0ZV2`|po0RdRR^lxO&Uoa_x*8h9RY>dC>+oPUDPFTk$wuD>5XUVpW>JkOD-&LjU8 z&a-Q^X$w;T)p;C=bZoNSSzTd{7FSuPW!6_Bx`mCd4wvB^d8oQ}a5M#5QcJK?u+=uR zCGr(z*NiL4g<>bd|A{qdXs*?`;TaO9I&{xUvOgoKfaQM);KMfg9%$k9Q63`V8_dhs z`4+G5Y3^zEycqPs5WrGg-P5+k~}D-bkGoO;NTSN1*rp)(k>jD ztabZmDgNT4%fkP6W$N6kA6VM*hjo^MZ#w5?TfGa`pIZLWZ%a2=?kIfkd%J%6+q|P+ z95(&s<~J;#-+gj;?TDMBJFXvEwf^|mERGk3tp35vyElA!*`LO>{=X+JS-S@3E{ROJ z`|}Hbwf32RS!r4GXWu2$HrLF3Gb!})Uw%2<^7TJXcw^Sy_fOvRCD*2FBwpf$6qh(0y1%r*9F6KNV-^eqUWgh+~b3+WO58*}` z%YeaJ$^{oDrw&aTlx7_`#BxE>kd&bVwN&fiDUDo;T6OX>rb%kZh{<4O*Z=Uetm9KUDYNadFa@XFUKXKVRU7hb< z@#yP&atB$;ZhpJt#g(orU(5W}{wWO;EL#f~U$ySOpZwTcJ@S>Yb;*{yKl=T@wLO-; zcHxcleb@Y8ho!Fis&ylix4u$%-;cdNSv)rUjfVRM{G;<tTOHhJXYYVVKlE4*s!I*Vu90skdm3ru|D!~gq#Mm;&h z@~^-Bpn3iHdAH7$-5o!yeP`M)*I2H|`+@e*w$J_SyP@rmEVyUgLld8wh3!j) z6K71DJ?p7iQ+(68iAlCJ&CR)a!p%2+dF-=1iP1bIPojvSNFN&NKph*&mZTSKl1tDSsigp!|`X{PK(R-8wVAtZ#}j zZRweLd2hR7+!du%d!O}In47Bmx5E6dkKyzapq~QgN`c<}UBf>#A5G*MA3E_O-9w%$ z9XgSqYtWr+k@Vi8w&&^soS=}$2tA2}?;Nj$DxD>yM%iI-if5_wCif?h` zVxM_|Kk6=vmb%LhmU_zCN<9nydK%{^dKRq7g;VOOilzl!H{tb&Mc=1VMHS=*tLFRi zOWh0hT27ok&6|QsUdIJ^eWHceiBf2qo$1-Ryv{2My5{>9m!cVO#aoU5x<+UYhH<~DD>-&J4@O2la-UEl|0Sg8C`jgf9Q_^O585iIC?N=w ziWIrg*$YS()Xs9)L#I04Rqf0#VYU2Pe5Qfb@QgpWE5L`mQeBAfE`I0~M*n=@B8P=T zw9EG$hg~Ip=%A)DhI_DT=**fcK)L!gp*Lo3x&q{?e?K_pl;zkD)Hp=4{s+M^Lz6Zo z2gh8KbS#-vUKt#7Q&N4h&XsAkTS8qJow)pf@VU!V9NzK=9jV@OoHgk!f7USq0C<5w zmyfdLgKTyAC<#7DLYEI5^nC-Ls;bg{Q*{l-&sCw9rnk896)f#HP=Xi+dp*`Fx4(w> zOFUJrS9q)|_1mQd)^#51Dm)pt%ww&^QAb7_u6Ox5S)`Zq8PIx|t+oYSS9FZ4jCBM- zL0c=CJ3C->NAA}#>xq`<(9v^7zn-f7pw&cZIW}VPSc6#cAcLWLP~YzLZwDmg;X$dL zD~OSiN2CULnqLbYbVbM8BpER#VOIxd^Z0`T*AumSD4koG{o2ETK!6Eyp}Ot4;8UIR!x*0w_ldPo@kT4zYA_is%q}FUBk`)m z1ReSwc9fmW!IW;0FFOC)xNhIX_|%WhqaSKU*Ql1_X+h&4PJ zryqiE(g+X(qF~#SINS1T53?C}@`H{M!K&M9yHw4ah*;9URl{qm zWQ>d6Cs&kJrCue-qLXy}ru39(Aw%zgYB+;0R6+GoHP5U*La)u-e1)zBCoghq&zi77^3aVp{qAjX~me8jsp)Q|GW+zyGM%q(}%l!dd9%;cP1AkNOxV(^y z%S+&zZ$T+5)8EH0Sm`Paor(sKK-HtsY9vs-ExH*AG_fyQk3>eOF}fGOXliS;4GA>2 zA$kl6G#QG*DJhX=L-Ty}y!@5yqHJ%#Q~rd7x^^5pN^ul8tDh@yZZ2@v7dZEFQt}42 zgeaqqTHj->?k|SwObopZb>sGLcWb}7v(#(Fu7;gn?KclC@j^MKLgl-(-vmU{d;Ily z@Z?f>ao8zX3OsmU)xuu3+9#37fndMq7-lomZ==HLD&+2=_*xrgUKbzJTSSGo(+r$ z()ZK5fv*F#KBbaI5xxfe+Rz&vE-;|B2KjXOp&pTfQ%)6$XJA2Xn9l^B4%P-dHzj=l zRf>54iU=!IMNGg9ssRR&e9|)g9x$!K{qz;^uULKKN2DQp*(HPofKLKg*zzknb_?0M ze0Re4m|eS`9?O0q9veJC3T}n=>tOrSM}+p(!f>(@D&(+1@qPBQ?877`Cyc7>+|Y(v zm`RqM@B1!25uyOq$M&iJV9GEzqyX9CR9%UNT|lEoCoR!=RLaHym9lX_S@z$}fU@|VOX9>O4dAtb!Ufg_(hvi!!Rv2{(KUgd zYkSf&oJh~qM0#c>(9G4_-8|3PQ1FM8SqL{C}BPLW#zK&cUebX-yOsW(N2 zVggDq;b@D1LQxXJ^{f{bd13_tQ-+yPlVHj)6KV>WGR%aU0;UWzp(epB@b3boGT8Qb zlNma>T@5t2ot@KB^`_d8xRbBq!{DLUYEvBWcMLD^N5&*F^lRM6q)pxuFJuZ@5{!z^(L;IP2t0pb9gXbL&=hXmrlW zt#UKZzFRtoFjDtb;(`#3c!96QyucsDyue@UULYwzFYpcB3nT>+yg*RE@B#^sz@~eF z3N~n3gCq>X=p=!O3Bn5`Nn|pKc??Kmc%y$`IN%_HFg{2$TtQsoULa$(e^1X3rz4f( zEDUe?=u&U_-AlaX4=nXmwIHIq>xu&Z7EjggTcNxL;wx$J9lX{WPuUiW+i%5$9yOMs zMkPvLQs7^Q3OB-%q^Xjgvdt*wN`;B^mOuI?$}Yza%Jc$%6^dUEGyXYD$5GT%wu$9% z1ms%u4EOcX0JM5&Xxe;DJAibMq*)9t08i4XwtMdQg*%Ve# z#%mz-z#1*65k~2e3a49u(;zcKu1tkdJIbB_h!-o2ZU9C@6EMmaj4lI0sesU?5V{Ts zU6g=OjzY)=AV&be!3w}H0HI405Xx2H*#TZA%4P#Z9JRkYLzTY+<&(N&)0Y$cgVx-DxAr!Z$KEr?_M?rD1 z%4sJQH>h?_0E%1%g-vqO3B+}(%Txg2RzM6^IW~6t1=Yz2bX%ypO;I^O=RJ@uLzT@W z5O=69vjN1z3W&>9P7Z;{Q9$HUY7`K|RgRlbd_}cW2q-2iC^VJxFrgTw`YZwz#R`fG zRL*4fd#&oF82!#w{U)m%+|__xb}1{KIsv&|y8XUbYG*)!a+%7bBoUggO5Z=GM0x!S zD%H=M>Sww7S%IJ4cLqT}!=1Qp9M+*+*vxl#MVfVm#8UO|!{K3)yW#I1EG^8 zIN{1~!Ftf?wX^r4ZtsnnCfF$B@$cdH7`P1Qt|)53(p@nxbK9{BmutbrZNsI|j?2T@ zxD@5$GPw|!;v!t;7IV?h!rEnfTd*Ih72Ufl@*JhXDh5)k=J}F%x!ca`*K-k?e0Xo@ zRM*zfsX4*W(XPhO(K+iwr%FmoL4;6SS18mrrxy21DtW)JYeQ(?oCe%44e;KmcdBGr z3-3+!CAK~-USC4&6XW$6X%F3wes4#=s9(hUo6!GF=>NK|eWB~n?=@X*p=;3J6*s;UC@pX(Qv68o)@ z*3jGa->zi3F|s@K>-tv%DnAl>qy8r?D!(Q4TKz(4ljVO@|7~fPCXhIf_tFucK=@_FJDjZ>jOvS%5 ztiCUdvkc?k6UNP0^%Y^Ho>AWpMrx+|Vlch{Y?9jY0iRo&ZF$FHO||?1*jO^Ea40Ws zw7iwr$BM1Irm`lnjwPv=S+B2OJ_EWunoiDT;wE|XA8zFyl#ySS<#UWj`NdDdKbAB9 zvAp?@^~`_l_e_7EaR1Ra%^Qz=p7J*<(LVBw8&-F(-ta+cm!u{uL9I5=FxUY*o53dj3 z7t8Z6a&YqK_HV&{NB8mF9zWh2yAvy5o7~6ua3!kz&JiB}W{GGqV@fI&y zmxx%3!|liV9O~KJ$M>mDM-W7Y-cBJ`G{II_7N=APdq1aojyta?q0wsE9T;!+HIA4!7qxc8{Tf_89QEN2IJp0bd^j9=xti;5GP+ zYMwZo5np`J@vzQjB`hM&V8hk~Hb@7k8RI|^IWSp73g;73peamVYuKH>(<{5>yxcAK zAa~0>?m(~#A7}QKPvzTivp_Sv)R}`}J|6;v)8jc#=7w*!A-0o@Z)18d@;cn!i}1Fn z_oBxg4|^}d=P|t(O?6E6UNp;5?7irlj=AnjtHU3pGZq9wtj#Mo#=qK)aR4u6w*C;h zL7%}I`hkjNP4MYI9$V}7uL?eW(ZoxKB0+A-Rp+2t_7pGw?$C2 zHO)=SySvzVCg1fBeWiPv)69 zbLPxBbIzRE_;p^m_>?EY0w!40UAz~I@RIYug_85KZ4c;p+6<6sB6{s<8Sk5b07BV@ z)r6>b5YxVeT1%%{_*RiJ$7xwz(yy6_**AGILF6&rIIW0M$}JR$bRxzr(i96=;a*q@ zG8dTa>F(aha#4UwU?{Rel3!-=Xhwl+rob;jd7p;(e$1nyYpXFNQTkP8Kjg zLH4M?qkzx{D7fZ}Y$uuKITBHnSt^p9W3uNe&@B@w(*?BdBH3CIv#Ao-O)`1{FHv&@ zDys#eheXOE}b3;R^lA1wt7jO}HpqX|fH(X1IdQ7E#9bN^G_R z8?BdYMLuLJ5h?S1$X4nlo42nZ+;K|TYem@`2zP)|_BxS&n@FRSy;H>Gin39vk}=my ziEv|ZahI{K;1B;0CJJlMK!3B#b zU5gN)3eb6iyhTb?A~FHDyJ*7eY|b~rV!=fw+k0VC$$F?tmKQB=6Nus`8-avNRDBP^ zMWh0H8vBc3$;^L!y_4E8jX}rsCXNQVk&emS@Jb!iY;;VO*Y;lbGOyoZKe5g;GEFdy zSmz4sslk6Ltfx6f*?xy?+nzrT=vI>HI?0p29LH}I4pcf=K#}dY=6~JD7tjsTJHHza zySWi6A4U4#LCXrKrq9dO=_~ecS20p$I460d+6s`C7pkqq6E~|Z4NFsA{u;Jbd3iA` zPkDJGtXO%0lOLJI#cUzU%YVc&c5yLVIAXBFc?J%$ur?e4^@eBN2l z%pnFv40zRZPC4)|%wVvAfs?@|25T5>VUUhs=DGpmwSrs6d|AP*nx*sM0iJBqEP|z@ zFtu#^QMLO2s@#WduP56F1i@OTf|W5Z2zySk%apNzn5bsNO&Sl_>tPgNOxX#x#F-V} z(ZgLBKsEyntkEQl)hwtxOw0GNmDHW2Cz%9w<148Q3)0MGhTAGg#t~C9C4QUlNUCBCWA@wQJD{o%gAy3$mY?9g6*G|OeY#fTfykI}YF)sHjK5wMPCh_FT0 z!z!Dx)$7iYZI>!~`FWpI^zw6t$@V+*H-SbsZjh8hc@~bY8Grlj`OR<^R3%VvGhT0x z@ESUU>uolcvV#NEXv|TXZ1qgG=aShBwwI~;O}4j^#p44`X_{=GCyU27oX|Aceon^2 z+uqmRa93=fDpt#@K*C-(=;Lts$+mkN!ep<917FfiP@HhJV6Z+8WA(`xs?WekeI5qt z7~SF^m@ovmCr*S~5r&IUFTz10jBQ7!TyF+*8s^hPFKnzdhnL#}CD5cRG z2OknuCsbav;uq6=QGB`Diw;-vR#$t`!bMa??a8*&^!=bFRaGC=UN}@h_33)-vf3&~ zlql7%VSga#!;TOtg1xaaY!I1eylJXrFgYLN*A5U(gWpAP!#$_~1+e@;aIyvL_^_K0^6E8AD8>^0Q934}7) z&7yrvw;9{4Guek>IaQ{yG|OZk+sxQzy|FagWS@jpM;nZ#znbjvSmw3SSi0S0pBrv$ zv&mSx!(>myYN*Y|(w)XOTTK3erpB-;8pEn+46C9stcu34DjLJ8Xq?pj8rW2C9QL2I z2WiOAG!29$74*Mon#Kp=ASl&3Ro6es*r@W~ZV}3k_@D~k`<1Q22yn~|H;`h&txd<` zZ`Fo_#Q^u5FyxG(sugDpg#(Z#oH10e_Y9peR5jj=p-$D(un!9|hUOYW*NAaIM0p|a z^Hb%oo)EtqG=@~`QMH8nu$W2*YDQU2T>_a!{FEfXPz?I9ig$4`yiSFVu zbf06lD$@FxZ^D5nB7H2lsz?*(8#Lc4asHX!BLQEv-Be`JKzb9LsIb>ewAbLrrqLEF z{L(bqV6V*yTVTQ@#fYyc9pQh%2n#PiiqQwgwlg?nZ{IiUZJ!IaUdPRI>O!-d zydM!h& z#GN^gFc)9t^s)yBI-1m%(>)IkaI|!YxHkE6dijIg7M-5=pxow!yzQ85J1M6h=_9vs z%jpGm?JY;Fm(vUV<%lvlVvpIjNnRTeMi}OZ?KIPa%(mZXsfU;&j?hGJ zW{%h`X6elld-z>vj=*$lMiJA?b%xjg_#V1>^nhoy0D`Zos--`}Yq$mtfGVBTh^Du5L87tyE40>{} zk3lcnU@14f|D|xrsQLato7v-$dPW8v%$dT=jJ6yTro#{`4}S%?;vgy=11?;1p>gBJ zk_V!)@#}%8!;)r1o@NAMt;f;g7lRPwB5?EYeix3v4#l5=$If$a7I$`;u!Mjfb^2Qu z$Tnr*!C@xGpWsF@Um)XcD%}TI)np3Oa%mIhqi_m78MHgOQ*T&>Qx_En+NS(ioN36l z1|dw@OtvGXY>x}m=l2&MDi#sqAaTZbmm`@Xk}29Tg}r5%Y=>ykl^?=$@&O|bKbSn&-yNnKm|kDnuACcuotL0rZM=oOZ>u>U(<3`!x;n-}R5GcL z%dtmbganMI0^wNTI~C}T1hxx+>`LNVb>L*Qt^7ztu41d1ZDJRW*{1Hv5j%7+J`-J| zO}(&tAsTDVcdsEiZ$>xSHe;a;)~SG0_2459fsb5ga*XS4a!hW>^repp^n%fyC=?5j~qU^19r((LK$0^OSci=R@ zXHM#CmWBplg7|sFC{C5iX%=JYZtMgd;265Gn6HZu@W@hg`)uRlgA$H}d)N_%ZRah+ zOg(;`-=MI$*CiwNe&VzDlRL&1wGlqzU(I&-87ScO%n>E#2zWNJx*7B7n2q;?)Bl*5 zdQg`Z2XU@|>oy%peuaPWf)-CKT8*&>c$CS6T`lT%0mPU| zYs6ZdJLg4Rn~FnheDK{qz~1DdZ_(8du2^@#imQ14?2Gs104fkS`{7(FL5fQJ%{?}2 zmOOy|1|*m5IJU{QC8kBd$rxKeX^cJUOc3j6EZ;Ksn4GdplGmAx7;RUfDI-^{q>+ssmPV$_M4jY=b_VoR6j0#j<@| zne4c`>cs5z^Do#8({B~)I8?mnb#yL~Q0(s7oVZn$& zWmR&S%y}*>kVh++{Pv*<1NbW2dWC@>3cd3a%$Nb{pDX59FV}-fqC91cscgrK`4t5* zz4)r|GfMIb0ZL*n)TL4a0A7)RD$oU{KG4gmKv%v3XP*+HJOW3bBJ#-DJ+^3;bS0WI3W-AiGmYH$<}6MKYdO9wCfs55gS~SC+?$N_yLh=ZRf+qxq#)tK%FyD`zx1t-y!$Q}I9)xcn!(M)bJI4Fj_n{8-m zP)v(4Cqp1PCE6JK&=Orti@1}`Vr*kdLt<=krOjemM4iNkF(u(K_PCPnF)fCk)B)Q7 z_J=Dp+NIyXJ;uuz_w1Kxen8OUJ!%@;NDOPjAa?PaH4p6p1Ucn!8f*?@`$E;oFgn6I2)*0m`24zsO^81% zc$y#HSU1m+DaFtm(<>Z%=-41wR;skj7LK9z*z5lGOt@6Jq+{+K`DY_xU^`mEFoCVK zo+Gp^a{9Tth1&ca9IqbZXsO|m_P$@#{@Y}4YqCEM8+tYj=qH=uOlqyE#U#npB0k8} zVs413MIz$jVN2hG)q6o$y%&Pjdx%QXVoq`{t~UhlI9lEkm@Tn%%NwvUk-j196U+j%I2DR7%FARj(J)!b(=53vz!zT zMQe61DHD^uV&&f`Wj%_|vcGpiU?|ZV!uWYep2+Gm>Aet;*PCpk6`0EQf=fJ3!(^LS zTo~l7h{%SWIiHl&6B{meD99_&oCjVn=@%m6k2ozal+0^31#2#ql`Sf+#9go!cjN3N z<~>AS1ZtfJQQ03;Bz_c$rZsz8)2A^-trWx`SN86lC5=QbwPm?v z^{Op9f%Lg@i?S6J;t8miR31RHUcUZSX<3$dN$`?y`!*KYcd4z+G^2w=BDJx-O+8Ve zhSDaFD_fdGrP%NSk+UM(?`eLK(YNVGgCnle{Jj6xxB2A`9n7I#4v>4o(S!R~q2bxo zdNj4Mbf0j~=GP^aw1t`~+=2Bc_7*1lMD)LpqyL?)_P@HfcR-=!)d_90B41U5CpYv!E znpGC$J&$H~KiRI=!4p>Y-@TTgXl$)(?7z)5R*O$91!^g94GLU`{a)cerh|BHBY2MA zej;2dn1)>kypMVYW^O9ShxESDOZ?)-d}#6C%dmeALPWn67(IF+K$FTnpfEfAO3MH}%z$Kh+xeR8S5?K}IRwc43%seHs zD$HUfvMQcj&WD1k!sN!v%kb1HkyT-e4VS1lNTOC;FOsPh9>gC8O%ApO@qu-wd<+eX z6*Z4lzhb@&gT@T}Z9u&Bv9M%5;=)q-z|A9gDFERU)FDab3}74!GUX@WE=JcXhvygcPg1#)3w3b+sjoK}DnlojB@ z1vrJMDmaChDmaCRDtg?sDfVpQ#Y_(a=>ey}Y7AO$e8xiOW3yKA|KIR@h42Sg%uCQM zdX>ovvHmv(lE~dLvJe^fAsDztBv6#nlqTP%6pg6Kc_&=Z%mAMtJMfO2T_E;tROqQ-^{z2aSvEKanrsmfa9!BFj2Oz@fZCo^}(!OFM>UT`- zv{T!-O8Z_uJtL+GyzcnQeWlgscND)rW{2SaROWCL7r1v;s?u#=ZE~j}I$d>gM|eYR zTM8Tca9?Vw&wNkGjm`IT`BUb5svv_O*P(xKjaQyw@xdTv_J4TE7FLL)@IPX6e~d%ZJMT^BlbYIoUDcTh)38sPY}K{6oI-33J;;ZLSg49@rJO0Qm= zLS zF)el3w4Cp>W24GB)P-%-1iovkw37Ktud%z1hz9Mx(G$jWS+G6@gJm9wkfiAUcW_VL!RYVC|E zYqgqXJt`*RYODt4m~W^SjV`YRHVxI6E9O^;ZDF8FNu%TCRCG5m8){7lEU>G=bP#sK zKzox$SD1eWqYi{DT#Mn&{^P1nLsK@qY=NmxAI9Hab^kBqh>XEzHTw_8wCFYX9ITt? zD{l(-_+xPfAoy@)fG@vOI3RCcaS{{kX8+riEItC|%l4EJ--48HHPrJm_9qLXG==}0 zSKWBHuUc`=TsOx;mH=X~sJzBdm`MmwXQUu!Hq!lh}r_r;ctS;l+w8Nms{UF1is zl)M+IvY5KeSb7vEHHxI$WrtZ3Db=hzl+)~YfDb^?loi54YzZ}al#99uT%6Kb3EMuV z5vHWY;htu{LZ0y{(h|DK)>0!xWP4=^D8Eq%F!U*=0yfJ7tjh~%cEtk5XaGz(CKO8d zYW0v)&PmGteYHGCyy&{rMRX?Hy(n3>jR>k?{^qJg$MQMQ8XcUM(EN!CR-wMXLVc1) zv;^)TtY`@wU7%+5f9zhRPw^!fvamfAlCfdS*kr!_YYpvV^6#kOX{u8y(YR7Wv6V!_ z3NqrlLJhX48!<}QN+u*}ZOwf($IJI>3q zf^us0DzL?wLLj1-tGFz$8fT41c7gB}+kAvzb8%j(qIi_ml0Nw1JOH4Gv8bv2CN7xt z%cG>ow*J_Q%p;Ak2m(@8%<}`V7XqE*_@IG~u;IA02HP__j>2s(51Q-a7=sbG2In^% z!HJ1Lq-loj=*(A!1r^57?dWcYb6o{ykd=%9YR0X|sP)aLlS8pQFQBt*8y{lCv7=y6 zldXRtUYc_t+XqafoRosqzBmb` z`oUnzDJka54hH*^PDtrYQ^*mo2l2S-Eky1a7Z#*RNv3=98b^D`&9USc{#-#95=c3} zO;ifNuw&w~)6$~VK71WlU|fkpH4^9M5XL@cqmGBii2l&SI;iKSaeIBFmoyc0ncY`Z zST6mINllHfdh!X#BPdf)h%VKqGoXFvUx#PKi9QmFn?1kizj0c&I0=Jyzm@)WE%;1j zH<#fo8^QkSK_0M)7GaFc4zY$a-oVsykDZz&r7$#o_6Yf)mx{Ar;JXsb(+GEqT)K zEB66kidB8T>Gm&fF5_iaa9_LAYFOWc<$R6sHykTIt>d(lAHp)wAiPcv=WA3DR{DLT z2l=qLFGz{e;&o7n@(!R$BN-7Jjy0irV@jcZ?&oNJtYe|U4Z>{_MmL5J$H!G4KFke6 z-x`#EAI{*+AKpX^@zVsRg&llIls^cpw=4aLs_l^wr$Cq}Ubc1+k* z-vzXjxqy~SLU9K}sFMnlKjt;_uDR4<1ufUkf=|)O)wF>2I+j_AHGx-MYguKTrC14w zWtI&pJ2>(E|K9ppoUo6zvzX$mhxN0hLWmp+a$*r}qsqGR&E$9?1eOu~x112d&G&BJ_&o z=d4rpHOMBLy8K*Of2@j6hn_-oxJR=YRv}ZIR53Eq>`sH(ZL$xB*C^j)4?~M}^pkDr zI9tLWH@RZEr2Q%Qea-dDXlt9=ixC-Jy)>`Qys}z#_4dGN?p0{&`{O$7-``{Y>U_=L zt8Kx#N%k*|#Y#i8((~(M7%hR`%Fm^jcLCqB`8I=ZnS6VUZ@=*EQNDeRH{7-h=PyS$ zswbFk;QX9F<^dM|rx-^^IDlbj@q~krD)#T>$&)*4?pz8SB&iQ9Tl7^){n1w?_17{8 zXMlbusXzLir2erCW}@3jMsnC?`nel$*%SA>;DVxvL*|Gg?xl^u7#?0Ph<72bdibHF zUy#_QkS@e>tMkBD-c1|pMGO}Be^T;vGe8u{vPC2=PIZs&DXK!DlL^mWPjymo5`dl{896CBA?Pc*!a9ip?a<;?XdWE z7^QVbX?kbIS0!sqxI#&QU+>KLq-38+w^c-BJ2T!bNi*3_iMSjQw-=0$t3R9>_L6z}-$cTLq7a3mMN_6YANrxBSbSD?ew>wi&cXJIrS-A7U&bnxwdrNB z42(9n$qp8#wKY%{j}e2!V?3@Wnu6Pjthk(LKJF$;S|B?*tGq2YM|U?ojVoQ6u?y2; zdn32wUG}f)`Mip5s_}f@3*Pg2ea_lc&*$~oGbPUF71;Txxp;;0K8Nwn4VP^#xBP%+ zhhGd8^EoK=Cx!inZVnP(6!yO$-Y-lM=Y$%)o+O1p^s$A^86kJTT~Cu)X^}QigjYUE zS2!d=r3hSq1{xKdsp?j$pc8exfJ`)Tg8+tZ0y6G&xlNhS2;^+eWlkq-x?Y-wD_6ix z@QWHDxAct;R{TizQ4k&aNGCuM(oZ@KJWgNftZ?2PV6rcS&vZ*cvXWnBmr5tpAUL5$ zB4aEvO+^NDWbCFmwGHpQaMGiX6q1|+A1unVLNG6s>=99i(93r(!Bq5%jc|knoJ_B1 z@erSi#3$q#uj3)Xw(;V6C?#8#_y(u`&_)0_C0qe7B6Cpy5baNIbxj2gZG@dX(Dn8a z`fA0<$b}*BcwHrWYB>ix6G0%RV3y-8Xv!cIHWJyuIpeX|DoLMOprzr=O5sYn%6L+1 zJN>W1(L6M)dyK=>5RxF&hZxL&XchkJ>V9jUj;#3tM>hMquen#1zCP?-R(P&*e_vJk zsW{*IV2OIZwGxBd2LAB*);P?EJFT$ndI3$TnuJPlrjIOL;dtvQQxrkcQ;=|%o8qKS zf|X6Db$2+bg%4Y)swzj~0T!;|P-;OM^f#amMX4~jLU`~}l|KJ-{Ywp`u)nx58GI$a zDBX&Oy$~=IQ6AB`m`D>6WOlUNL7Zp=ijW-F@*k5wK!lV693iC;qJWo{3;#6u=b9dB z7KSnuS;rCJvVE?&rf&O{&H|T($68@>4QzuzlcPT#=x(m)u6_#Xdg8n%&62us7z%eU z{mn+Wudo`TbQcX}A|N(cZ@%1AhJUoWf7)qz^;906)J{w4seGqp`Ke;3CHWMlA9tA= z-vi|Y-}HR2O%i&%yTB>v@TOxrFwJC3KwtO-I*3QaPU{chKqEpXN2tj$%Fnhf{a8TC zevQLWmU8YEv!;KxrvEyF=G%Zrvh!2&?yU4wr<|AO+%XWhJ#dW|j`B6yB(oz~0xzc= z^YcAO*_SDO-c1gy3tfCXh|KS(`y5qo${{*#W?)UVx_r~@c$JJJ<9Yx-Yuwp@#FeWU z;b2WhMCE<~O_H37h|0YJ@DZ;-MCINCIEq(Rhmlqt#@6aE@~Xoqt_DM@4kDyF2yJx` z;nhIs_0?evstzMofsr(F=4I;#=-3c$4XkkNn+&>IA5LXBWCeV2pb}n3uf!|qBi6H% zE@C}8=~20&yl*;g;J4iZ^oS*nN_J(GC{dGq3fk{8il=S$&Xv*UHLVZ~DR$?9R#;7iT2!!S3D zj=L)P*oP&nyn^4vKR_b1DrZN7S*0s)KAk^p&Q$GeoRcSDM5R~$EDry ze$>Ul$#>7_eKqVEjl~wCr?XALaQI$=q0sl94lfK=yb~ouY_N~=^uBAXN1!^f! zOMzMn)KZ|90<{#Vr9dqOYANtPO@UR(7?8GK_Z`nx#v;+n{1aE4-^G%(VTR#`5k}i4 zTne0iw4UtfAJ2T2%c#+tLgXS%!%8s5aZ8>TlSVZiv_gZYi+9rJS0oa7+}wf`@Er z2HS1}P9(Kud-?g#k;k2iJdVf84YQ-mga5noSO&^nya_y947g`*db{VNl;c&~{U+2U z52YNs>2=wKQuf~Tx@<)$zuxq^tV1aqtJVebm?q@$Hi%=uoUp5k<3u5jkVkZ{dz2P6 z*wz_r+YGi0gDuA^k2UK*ukth4u>N4Xk9aA%PStLTW|N@gpxwqoyA2CAE-t6Soiii~ zC#yq8HbF!hBN{+iHbd@~g~8FbjA+{iLur99=tOs{-`!6g&*})}T?SDHfuD{1pb&WJ>NV85UtF=jD!(8musN z!y&|7AjI7v#J#}NS_p9%gjfe5?syY;S_gUkU$OPTu{e7bEn+uojrL(WGw$>@<2LUa z*}IahdF>b2x`Jg*^>Grx0kAbTE1JR9!@$<3jp;|g*5@kOdb2V8DA;)SBxP zXFP~AST|8tXn2=`j}Q~3Eg=2GXAtlisni`JKsc%h5Dr9uaAE;xszO7+Vck_Y?5Y5V zUDZs`aDmbmkxE-M1U?OwwulsMv5ftp+4jpYJAcpNkW1-DzRFlWd?kvm`fn!wN%+5H z$&!vzNB-~lmGsqD((&WR)1g*&A??*ypmK2o1PQuF4`_ey*B z0_6MSq;cb z-O{8B0r+`RAWs zDXm-yRGyk6&6y(=78Z7pI&=U^cNR;<#nR@@o0m#Umjbmu`=ovQr10?Y4bp}UKyhyu zsY@4W{P^+nqbQ6*K3;OUT>p~(^)H}&%Qk7-HtCK#?g)?q0)YAlO{6AGr2YH% zKOjBu0IJaAH|e+Er1k69hf1NLsLJ;Hr2FoZ`uFeuhV;f8sM6RW(vTri@7}#nNvBSs zYP&s>$0Paq`E8N5Y(W(tT`jF%E$!H`;|b}BCs5VFVNzI_G<^8*d?`O4RgR05Vq+z< z**r~}HVsv`e=L3cvDC0(!xhqs6(GTD??~^wBVpmSMY32xiVH)fp+hA&c3MlVTZ1Gk z^Q62ysZ*y;k4cX`2GYz4kwQYGTW`HpFjj{S9p07ReOJCHE#x^?URBK`6UNE`o%^vEO9x8HudOWL&yB>vYrY27+0 zA|hgqv}O%Ry=}3yc(HW*?YCPcs}&>2uEbZL6bD}hHB1qq)Kq@GZMvff$q4eR0 zXo3gcmfn6_nlNF)kJ67nqA7lBFSTzkwP?}eoOJFSnk4jI>E3&#mMvTUNBYly&@}fg zkQOYEG#X7ksa`!a(HlplqerFNZo6%kG;0=`YRIqBufIyonl<}G`s5Qd*{S8y^5xQ9 zcirWX91b*{CqYU`kfNfZzLUQD4o$eFOe!mr{{8QNe=2?YDVlQi{nGvSOJ9He^rVwK{&ZqZUBT5Ec4hT2&0shmGu*Z5Udlj3c@EjozCYWbmXBz2%99!@@5DbSn1tx z2$xh^S~?y=1(urYf-p%rIXQPgh`?IU?uYP5{{H^!Av9pIBmE&P(w;qgdP7LSYW4jf z9MXdiKDYxy0hY@h4q=d9eDOsygaEAfOhYigG-k}0$zXc0V9G`?yHux6olanKu;Qj$ z!Q4_zOpF#xO(W<_FtZdH8Tk(|F<5i93Ct^D(Pajh7A#t_2+S&-K7G0_m=vt~=C@!@ zDJdx_0!#^({pEHrqjccFft_GNuT{2Z0H|`UP9j_|n3K3lq`k5P=VEXl&`PfBow#Xk>`O z+oRFA(u^51UP7ZnBz`PMV@l6G_goel5u(xFiN=%8o;@q0(I6t{O3_%-H{X1dgGPd= z-0P3VkuF`jvk@?SqXbfr8s8KJX5g8x$HKm6>6_}U~6j6-B72L?iavr=u)Iu zbko#6r+^lFuLP(ya(@QYJA1iL(0tUUuR(oL3(Q6L$KJ6X)EBLY5imC-Xqy#iR&wdz zpa#e_rBGYs-mhV9uojsRZ&K@@=w{hEe+65U>$1?i)DEfW2B;NE&>fSCfvgpJ@ek1r zvlqJu-8ozFIjB=g$G^cQq^1$%rI!5-YLC5SU$7Oqa17KorE(|KJgKx6%}?v257Y&@ z;4IWVd#UFk*5t}5Fb`;@+=*_MQrQgbL++UYaicZ!1;mBg;$Em(a_a%81@@-Ppw`&y zG=v(aHXnj+o>oOM*pXWP4RoLEB`1NMX>A>YxKXRV3$~}#^*Pi4T2Fcl<{5kK!ky_7iyFHq2_5deE_w{-qZzigjU$oFx%KGnxXC~ zeUa#P$?cb*uGu?IhFWBAH4-6wn5jpz=kJ=_p~O7GoJE7UrNVNS9)oB%OmFMkKr7kiBdVU|*=dqVuE zwU(fpr&NA}ZjZf94%98R?XOT%l*(73K4|siqr0P(XNQ_(FH;9*9<@v%#Ew$d0A`J_ zeqqkgI&B5>gVx_ln2EF+tPpc*YX{UewfAy}GqqYHs55H2=1_aIVxEEdMlCl0W;CtS zTVUSN>iZYWLu$=nn9b~M7DCMmmA%U-s3&T-{V*oc*-R^E9n>VX)2&dWv?c>!?$BDD1GA4-+fbP6)Slt!mZ_B%LG99N`OgXn zAF8fHH^*LQ7}Pv_m#HwzsTBsHdt@*9GrAjUhpkW}?B$`Qoz!9x=+H+IT&>DUL2?Lj6-~ltZ1-n!OKZJgv`ZFcYbrf?!_I+O&8FCs4Dr zTEk%W(puhz;Q_7k3m8tYSN$I59!C{L=>9m`h=$srmA4q`n%3fMm`k*}<7t+{N?!`| zkyhQ?=uX+Yo`Bk-mWhGcMr(OB%ztWw&QJsFHPc}x(rWO7TBg-{1m*&J@pc$?P|L|M zkE#9t0ds>^+jkfaaMbh_h9m5SpM=_?wRjF{npVtan0d5Te}Ngm(ZW6q2WTD6f*PQ8 z*&gbhR_`X5$sCo$!5pTQ+8AaYt?b93eyQbNhx($`IuT|tt>8Cd_DE>rG??SmZV$s; zrM2-b%mI$R-iH}MZEk}(N9$=k%m-R8U&7p>6>>Y&4Yk4O}Imc1vUYNxk6@3hK&C%#nFdJz#&xhGU>v1@S4Ycm+VmL)>tp$da)W+|@ z9HzD16y`KXfn8wUaMaYAqim?CmQd5Q?#o~n4|DR7_M@3_72Qc3935}<_1Ss&qBR(G;k7TIIY|rFzYz_dje()M*}}# zI7=(wAclz&x@J9wj~tB;ta*MwoW{sQ9E3e6aXt1@q?sIp z7aQ9jz{x1MlQ<1-LR0%+jkb$M8@7P77I2 z<K2$-VX_ivX2hdEVUs=#eT5p$N=~%O<|aIKpsp_L`RMZ z^O@d{%j2H&E@Ak>%~D8#JGucFv;Wm5`^}ip58;fzvB$4w9A`K8J#lJaYtH*)egl1y z&#Hie$3OzQZ+LPTcTq9G4moVrdE=tVc7!|qw5Q*jocg8-V6kgP5DVMn3wU1}Gphg0 z&)}}*3=L~fDzNsXLL~)cyT5E79pt^=HrkH*q5=WYN^RCfV=)5jE3iPVc%QtM3mfVj zRBA4&t=4&+5!sR0h)f{G`Y7BG-wcVPK*5$#prBSzAqq4M0~zMDsa|gqrhxa`d+{f9 zogh@Z>S=k5obAz|!d~9Ad`5vp&7#n>Eu+xL+9+Tf_QpjSr&w!^jzme2%$w04>4|u_ z$=(BdEwKUvH;~yUVEx53@Yg7v?3fVly8@%{g!oBuanmOFY@5(p7HWGNUE zrsm`3`8<<-0erQurV@2_%Ckz6hcWYr-}Abl8n_{*X^iqaAq>CE z@O!M1eqIyxyZSpJfZwqJ1RVhWZtj(0sYd%k?73a@-D|-4;%WJPlWnsc0Z|?fuBd0S z4*+8f#~HTcx|E)e8)$+u)X<`i(Tf4e_%Me%8a!2Kd>C<@)}s z{@eE(->c(aJw0*r{YSig|J~?s=B-X2)}6HQ)*okgNe%Fa)wEJD{u<(sN3dw{havVK z`kS<1=7brKX(R9JWLY?8lJ;?_@6-wSe_y!IpsJ&`?<1oI4IS9uU>q5 zTpxdfLr&vFfo3=bq1_k^c5uiTJOT(YYCwo<^JLtF)U-x?SCK$JkV4;)MBkG}Q8+ja ziziKCO`a>owVcM$L3 zNOx-s>tKBBht=9nL%K60$`330a}DV(yd5z_6dTghf}{N0hKO^9^mM$b>4GZK;Z02! zSdlIe1!+-47?98bhmKKx+YAw#4e4tDb&nxpry+eU-bxG+rwr*CfLd;dxL`%&uUW!Tc4WQCaRHG7g0LebDiRBABL_5zip2Wb$Z;*fj{USz zk(0xtB4>1oik#OyDsoXTaS)k?N5d*Sxd=RI3$%?7z;Q9Q5y4S7!zs!(ut}6{1bivu z0RzY9McJl=N7<}hqHOcKN7<4911H?16zMg~Wbk<5ScRQ!0bv*y2gngQ7!(I#oD5*B z6Mg|4>x9oOg+u@%YX+tTOx6rE>!tZ7pta_kCM{*hXupW9%cJfrm&-TJEs!1m3FBHQ z9MiTHN4Md)wi)n%OwO0>Gm3d3hU~c8*HcrYXo<+H%fHdKpVAE_pjkEuU7fu6d@@Sa zEbU8yf96f}lo0c&22J}}yAUkQN6Xf2k7Kzm6a22(=P3Br-Z|o#g!?lu>jey}D654g zUu==3l}^dZEaJvZ<-$#k2aTj;Q96;r#=aTVcW?$;)xB%7rn~eTeq`gvdcfH~S(C7> z34$}hIFy73&r~GaS3OyCCd0vrOg1wM_ioP2?13QXg;d{ce3pO?ZnGubgAx5jDepB$Lnd_I7G*t3ziMU-$0zx zo-{&>U_3sPVUK}fUx9!Y_7D^UDQjvPoCo?4Sg{_0-~h8j?-#M|q2*D5V8-=xj~FyM zHotCRzR}U98rxlyzi_zFM`(4j(5qyjkD@j04XY3s*C80Z3&E)T$x+~|Z8+}lG+wG| zl!gsT1!HwhP@cV?;4@l-1E-@zUGTb_uY!73oNTR#xMzdHH7e8HUIXti3Xs4V267PI zviSz~5xmr0+KlD^Lm@#FqY>;v0`QhWFc)5NARTpC@$rr@Tu0VobUMc#ekN+pAX{}0qj5su0_@pq;oECa#E zpa7)>VKs39MH~KhMoG{_Bp4&)3G)c}1h03cB%vWyQNo)dOOzu@7X=E!WSubxMJQ3R zd=qgq@zIIDO<+@q8v<8Pewhj9EL2w?wM%HvE54;WuZ#@CVYb!2=U8DBT527#)^ zr`MD(T(FG0aBxRPhL%0|vT0amh;BR$Kjvfi$w5id2N)M)R!EO-{a##_0D;VhMGRT| zawIw*JinWYC**K3Cn6}B%PE-;ebw(GZBEB;tB@Rva^&EOiHieaPz0 zVvxfEcQQc#=)uYBoE0FDg}9wNf5}cQM$EG(scLuoQ@kcJUlU5fl>laRwxhRiRNO_DXRAdl1RDNlLE- zUi98*mzuyUEnJDcLM(y3yDIjeRg!22v9TPJQ|82ra2B z%*+8bk0Pz;@F}gZrr4*zoSI3Di-CuQ>fU;uZ&dfwPcpcGpVoB<;xdrj3R=gpA>yg@ zFw4~V%6y$o4Vt0>KMvf1==Xwl<% ziOVDK&4@=`44QbdWIPQIbVMF@L>_iT9&|(ihVlS{xR5LWg&&{_i9(uyV!H@v?PSsf zB!P;dUq!P-ix4W{e&{{xINlO89M-25hf8bRUBZBX8^=Nl6SWNLup2(jQ&eP#$UsF& zbJaSW+A@hcdeKbWDU=NLg?u;&fFN@5x*dP#kY>IfX;>PytXgK$2;>$8CnX{GFU(Cy zM1nK}h&`x+dk2HxhX)(fExIe*!{WZ6Afh0F8VKaQCCiJC3DPV}!?>p4S&XDqeXL2D z0b+T_SSjxSOWOFeTj1zo5EpWZMp2~`H!>A;MOL-4*F#!jg9cE{|D1wllP z6j+ER32lOO=#M!%!0$K?tB>&wOk1!T_*FGPZlL_@XRtw{a-f#O!!P8Oq&WF_crSKAmdy=~SyvN2^aqt4~L(Pe-dyN2?EGKLj<6 z{Yc?!+NXcq+;o-AcP+HG`uDN&a@TolbJr8FH=XHE;OK4D-gFuk!mMMsVVG+n4NSgg ze~fo%0lw#y;~lC1AvA&O9FikI>T^kkWV|8mxg=vM-jMQK(%=;cMy+JdqXMp*a3`cO zqLg5#ZRIQQSqRG#!NOu>Jt`qU%H5uJlk@TI9MhglnihgL{!E&sMX)fuaI%kxp=Q7r zAuvTKaHMVNI%g$jRw893KGsny@qI!Xf@xb3uw2-c_|OJ_EW}Fq)`j6j;Ox=za$!cI z#5RR@_!L;})z!n3=8EuSy4riPTx~o#uJ7E3Twl72T>o;HxZZJ>KcBxK<4_30A`zB| zusp=o+;hkk>M3&7_msH&Jms!`xYJyJb7wl!r@41H(jysGhK__S*+k*XZk|7>+c ztWrNwW+1Jgju;}Nw&bY@+CZo=d8!R9ATTPrN`x3_I1N24C!L1&mJ4{Bo{qQa*-k_K zxGf0cOA!~h2SI#>>zoICc+vwtEbxF2_j|~PNx@+PSO|C!oe#n}Vd1WYmTj(SmJ6

Wu5z`OOPR_2jMqeV1oqk%)3?w*DoRRkJA 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

B8Gg52zBKSS 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�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

!KTW&p3r#%7u1BP0E$IKbmflx6a$(`vZ^^z0Bqw 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
    xTclCm>{SD*X0sa7 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

    !BXp0^9U?z&^rY}-jb0W0g3-r?UNSlm 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¬EmgIA5 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 z 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 z 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�>V1G4zco_7i$?4B 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⪼cCtk{Pm67I!`cD>Vpyw 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 MhyVHee=-CA8xgzU4gdfE diff --git a/Binaries/Win64/libssl-1_1-x64.dll b/Binaries/Win64/libssl-1_1-x64.dll deleted file mode 100644 index b484de93ffae7132cc634344944499099ea43670..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 686080 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%0ADQbG5?IV48;1*|0BS4_Mi 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%0D!% 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�mZRnEiTcnQDMPLL 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 diff --git a/Binaries/Win64/opus.dll b/Binaries/Win64/opus.dll deleted file mode 100644 index e23428e3f16e3b7a195784de91dfe7cd0d372c81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 395776 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 z zIkJdjK~grzUQ%1X-SLgUOaOCHIeq;HxOT+^*CBlVVA?|Q)#<_v?{9cf77v+`APV~w zM@03p9$@LTw|APL4$mlBWf}HmVCT|$E7nAp27O2TPfzgz{ z|4Q5>O|8zXPIez z*$&P!|D?_`cW{>Zt`w#aao)sBGJ^{B4K$P?i~B*%=!*>h$XNNUET11}hKy*xCw!u? z8`uH^??Tw6iA;`Q%NFZ#5uj0ySrMPR0LvytZygD64iIvV=swNbQXi0?5ppJ3VmSKQ znGwQGhv=<{qu?=jl=3de30nHlkHiI)n&`@foW#9K+{PcV3cHufC90jMfezQ2*=fpT z`O>p&z))B92 zHA2dsdUK5ODSi8K3>RM!RwSpai926_;Z?F5}~%6>cXc zOSx~fbjRx2M65$#(4yhw-+2u5h1umkEXx667^O`-;LXeVA&t1ozi@Ybm`QuN;%~5< z!Hx)WY^*I5DN~zf@m&Gtw zwl#`hi*#I?kZRMlR6&P7+yD&>TxKugh8d2tCo!lO)77uJ^NlKD6_uu~yUZDcc(1T^ z_}ez+3085E$ZOf`zyQE(u9DHjtr7)2KFpmp1)S#8RHANeL>s`dUiF;J=Ug_?$lKC6 zNF7Zctc06V)0ru$gCp4dp_d|G4CxazPDC23I7b zTjub?I-}&0(@Mtxwby*{DTOgqB7pkGyUNxCg!u%bLLyB zE_bYOz>@Pg+k6-RIP(;3d(&}Qv(eM&t);x8CF{bCr?N~`o;)4j??nI*N1o60XOEv} zP!RoEB4Ntne2v;0xOp27CHH&;}&j|Ks5)PUEIhk_x+K!0iZV4)Eckzf9B~m3B zuj`^Sgf>5r?NWB7${7U~9a^lbRb6@Q(x!D;HGy2Q@y>Opa#e9umQ8?PJWJ+LI ztc{$?t3AIeCi|dPwI|YyPJA7@(+3~^E?Erw3BfN9lWCUNG(=CG^rrXG2Hk!ma~3Z3 zT?%Bk*?ZFu4QKaG%j0Lbo31NlDXKruL?whq_#m)0eh$u)F8()kLTX!fg%XxNV^`nC zu5y87+&GRLR%C%)y}*jxmHzz?g?kAx*HN5M(De>1S%n#if6H_$neq|B_R>%0A_lR{ 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

      hHb{KXp@=wC@rIj}VU_5x0@cxD!I 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

      =tbW&S?9g{WPeeokN|_`+>qH{G^aMR|JXU_ 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%0Dt;vbl}Q$V->6LUpzbJr6#PkNI`3yW|X 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 diff --git a/Binaries/Win64/zlib1.dll b/Binaries/Win64/zlib1.dll deleted file mode 100644 index 897a1fe66527317707a52dc04677e40d2d6f2519..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87040 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\mXoy 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

      O@A+pp9d;g* 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 diff --git a/FicsitChat.uplugin b/FicsitChat.uplugin index 5f6ba46..68357f8 100644 --- a/FicsitChat.uplugin +++ b/FicsitChat.uplugin @@ -1,8 +1,8 @@ { "FileVersion": 3, "Version": 1, - "VersionName": "1.0.0", - "SemVersion": "1.0.0", + "VersionName": "1.1.0", + "SemVersion": "1.1.0", "AcceptsAnyRemoteVersion": true, "FriendlyName": "FICSIT.chat", "Description": "Satisfactory to Discord chat bridge.", diff --git a/README.md b/README.md index 505263a..c707f9a 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Satisfactory to Discord chat bridge mod with lots of configurability. ## Usage -1. Create a Discord bot on Discord's [developer portal](discord.com/developers) (make sure to copy the bot token as you will need it in the next few steps) +1. Create a Discord bot on Discord's [developer portal](https://discord.com/developers/applications) (make sure to copy the bot token as you will need it in the next few steps - it only appears once and you have to revoke the old one to generate a new one) - Example application name: `FicsitChat` - Example description: `Satisfactory to Discord chat bridge.` - Example bot username: `FICSIT.chat` @@ -23,10 +23,10 @@ Satisfactory to Discord chat bridge mod with lots of configurability. 2. Enable message content intent 3. Invite the bot to your server 4. Enter the bot token into FICSIT.chat's [configuration](#configuration) -5. Enable [developer mode in your Discord client](https://discord.com/developers/docs/game-sdk/store#application-test-mode) +5. Enable [developer mode in your Discord client](https://discord.com/developers/docs/activities/building-an-activity#step-0-enable-developer-mode) 6. Copy the ID of the channel (`Hover over channel->Right click->Copy Channel ID`) you want the bot to use to post Satisfactory messages and send Discord messages back to Satisfactory. -7. Enter the channel ID into FICSIT.chat's [configuration](#configuration) -8. Modify the other options in FICSIT.chat's [configuration](#configuration) to your heart's content +7. Enter the channel ID into FICSIT.chat's configuration (see next section) +8. Modify the other options in FICSIT.chat's configuration to your heart's content Have fun! @@ -38,18 +38,67 @@ See the in-game configuration screen (`Main Menu->Mods->FICSIT.chat`) for modify #### Dedicated servers -Todo. +Change the options in the `FicsitChat.cfg` file located in the `FactoryGame/Configs` folder of the game. Check the [Game Install Folder Documentation](https://docs.ficsit.app/satisfactory-modding/latest/faq.html#Files_GameInstall) to find where it is. Modifying this file also works for the regular game. + +You need to restart the game / dedicated server for the file's content to be reloaded. + +The configuration file's content looks like this: + +``` +{ + "BotToken": "BOT_TOKEN_GOES_HERE", + "HasJoinedMessage": true, + "HasLeftMessage": true, + "ChannelId": "CHANNEL_ID_GOES_HERE", + "ChatMessageColor": + { + "Red": 0.34999999403953552, + "Green": 0.40000000596046448, + "Blue": 0.94999998807907104 + }, + "SML_ModVersion_DoNotChange": "1.0.0" +} +``` ## Contributing To report bugs/crashes, or give suggestions, head over to the repository's [issues tab](https://github.com/Steveplays28/FicsitChat/issues). +### Know bugs + +If you add your discord bot to multiple discord servers, it's gonna send messages to channels with the same id if they exist. + +### TODO + +- [ ] Add support for multiple discord servers (adding server id and channel id pair to configuration) +- [ ] Build target and DPP for Linux + ## Development -- Satisfactory version: `Update 8` -- Satisfactory Mod Loader (SML) version: `3.5.0` +- Satisfactory version: `1.1` +- Satisfactory Mod Loader (SML) version: `3.11.3` + +### Prerequisites + +This mod requires the **D++ Discord library** to be set up before building. The current version used is **10.1.4**. + +1. Download the Visual Studio 2022 version for Windows from the [website](https://dl.dpp.dev/latest/win64-release-vs2022) +2. Extract the contents to: `Source/ThirdParty/DPPLibrary/` + - The final structure should look like: + ``` + Source/ThirdParty/DPPLibrary/ + ├── DPPLibrary.Build.cs + └── libdpp-10.1.4-win64/ (or your version) + ├── bin/ + ├── include/ + └── lib/ + ``` + +> **Note:** The DPP library files are not included in this repository due to their size. Each developer must download and extract them locally. + +### Building -Visit the [Satisfactory modding documentation](https://docs.ficsit.app/satisfactory-modding/latest/Development/index.html) for information on how to set up the project for your IDE. +Visit the [Satisfactory modding documentation](https://docs.ficsit.app/satisfactory-modding/latest/Development/index.html) for information on how to set up the project for your IDE. ## License @@ -68,7 +117,7 @@ along with this program. If not, see . ## Attribution -Icon created by Drew (xXdrewbaccaXx). +Icon created by Drew (xXdrewbaccaXx). ## Contact info diff --git a/Source/FicsitChat/FicsitChat.Build.cs b/Source/FicsitChat/FicsitChat.Build.cs index bf58cf8..f7fdec2 100644 --- a/Source/FicsitChat/FicsitChat.Build.cs +++ b/Source/FicsitChat/FicsitChat.Build.cs @@ -9,6 +9,7 @@ public class FicsitChat : ModuleRules { public FicsitChat(ReadOnlyTargetRules Target) : base(Target) { + CppStandard = CppStandardVersion.Cpp20; PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; // FactoryGame transitive dependencies diff --git a/Source/FicsitChat/Private/FicsitChatModule.cpp b/Source/FicsitChat/Private/FicsitChatModule.cpp index 363d443..88fa7f7 100644 --- a/Source/FicsitChat/Private/FicsitChatModule.cpp +++ b/Source/FicsitChat/Private/FicsitChatModule.cpp @@ -26,14 +26,14 @@ void FFicsitChatModule::ShutdownModule() { void FFicsitChatModule::RegisterHooks() { #if !WITH_EDITOR AFGChatManager *afgChatManager = GetMutableDefault(); - SUBSCRIBE_METHOD_VIRTUAL_AFTER(AFGChatManager::Multicast_BroadcastChatMessage, afgChatManager, [](AFGChatManager *self, const FChatMessageStruct &newMessage) { - UE_LOG(LogFicsitChat, Verbose, TEXT("Chat message by %s sent to all clients: %s"), *newMessage.Sender->GetUserName(), *newMessage.MessageString); + SUBSCRIBE_METHOD_VIRTUAL_AFTER(AFGChatManager::AddChatMessageToReceived, afgChatManager, [](AFGChatManager *self, FChatMessageStruct newMessage) { + UE_LOG(LogFicsitChat, Verbose, TEXT("Chat message by %s sent to all clients: %s"), *newMessage.MessageSender.ToString(), *newMessage.MessageText.ToString()); FFicsitChat_ConfigStruct config = FFicsitChat_ConfigStruct::GetActiveConfig((UFicsitChatWorldModule *)self->GetWorld()); UFicsitChatWorldModule *worldModule = (UFicsitChatWorldModule *)self->GetWorld()->GetSubsystem()->FindModule(TEXT("FicsitChat")); - std::string userName = TCHAR_TO_UTF8(*newMessage.Sender->GetUserName()); - std::string message = TCHAR_TO_UTF8(*newMessage.MessageString); + std::string userName = TCHAR_TO_UTF8(*newMessage.MessageSender.ToString()); + std::string message = TCHAR_TO_UTF8(*newMessage.MessageText.ToString()); if (message == std::string("has joined the game!") && !config.HasJoinedMessage) { return; } diff --git a/Source/FicsitChat/Private/FicsitChatWorldModule.cpp b/Source/FicsitChat/Private/FicsitChatWorldModule.cpp index 50fb18c..def9b28 100644 --- a/Source/FicsitChat/Private/FicsitChatWorldModule.cpp +++ b/Source/FicsitChat/Private/FicsitChatWorldModule.cpp @@ -42,7 +42,7 @@ void UFicsitChatWorldModule::DispatchLifecycleEvent(ELifecyclePhase Phase) { botDiscriminator = bot->me.discriminator; }); - bot->on_message_create([&](const dpp::message_create_t &event) { + bot->on_message_create([this](const dpp::message_create_t &event) { FString messageContent = event.msg.content.c_str(); FString messageAuthor = event.msg.author.username.c_str(); uint16_t messageAuthorDiscriminator = event.msg.author.discriminator; @@ -50,7 +50,7 @@ void UFicsitChatWorldModule::DispatchLifecycleEvent(ELifecyclePhase Phase) { if (messageAuthor == botUsername && messageAuthorDiscriminator == botDiscriminator) return; - AsyncTask(ENamedThreads::GameThread, [=]() { SendMessageToGame(messageContent, messageAuthor); }); + AsyncTask(ENamedThreads::GameThread, [this, messageContent, messageAuthor]() { SendMessageToGame(messageContent, messageAuthor); }); }); bot->on_slashcommand([](auto event) { @@ -59,7 +59,7 @@ void UFicsitChatWorldModule::DispatchLifecycleEvent(ELifecyclePhase Phase) { } }); - bot->start(true); + bot->start(dpp::st_return); } bool UFicsitChatWorldModule::ValidateBotToken(FString botToken) { @@ -82,11 +82,11 @@ void UFicsitChatWorldModule::SendMessageToGame(FString messageContent, FString m FFicsitChat_ConfigStruct config = FFicsitChat_ConfigStruct::GetActiveConfig(GetWorld()); FChatMessageStruct chatMessageStruct{}; - chatMessageStruct.MessageString = messageContent; + chatMessageStruct.MessageText = FText::FromString(messageContent); chatMessageStruct.MessageType = EFGChatMessageType::CMT_PlayerMessage; chatMessageStruct.ServerTimeStamp = GetWorld()->TimeSeconds; - chatMessageStruct.CachedPlayerName = messageAuthor; - chatMessageStruct.CachedColor = FLinearColor(config.ChatMessageColor.Red, config.ChatMessageColor.Green, config.ChatMessageColor.Blue); + chatMessageStruct.MessageSender = FText::FromString(messageAuthor); + chatMessageStruct.MessageSenderColor = FLinearColor(config.ChatMessageColor.Red, config.ChatMessageColor.Green, config.ChatMessageColor.Blue); AFGChatManager *chatManager = AFGChatManager::Get(GetWorld()); chatManager->AddChatMessageToReceived(chatMessageStruct); diff --git a/Source/ThirdParty/DPPLibrary/DPPLibrary.Build.cs b/Source/ThirdParty/DPPLibrary/DPPLibrary.Build.cs index ca2a1ce..acec324 100644 --- a/Source/ThirdParty/DPPLibrary/DPPLibrary.Build.cs +++ b/Source/ThirdParty/DPPLibrary/DPPLibrary.Build.cs @@ -1,8 +1,4 @@ -using System; using System.IO; -using System.Runtime.InteropServices; -using System.Text; -using EpicGames.Core; using UnrealBuildTool; public class DPPLibrary : ModuleRules @@ -10,26 +6,35 @@ public class DPPLibrary : ModuleRules public DPPLibrary(ReadOnlyTargetRules Target) : base(Target) { Type = ModuleType.External; - - var platformName = Target.Platform.ToString(); - var libFolder = Path.Combine(ModuleDirectory, "lib", platformName); - - // Include headers - PublicIncludePaths.Add(Path.Combine(ModuleDirectory, "include")); - - // Library file + + // This is equivalent to setting C++ Language Standard in Visual Studio (Image 3) + CppStandard = CppStandardVersion.Cpp20; + if (Target.Platform == UnrealTargetPlatform.Win64) { - PublicAdditionalLibraries.Add(Path.Combine(libFolder, "dpp.lib")); + // Path to the DPP library - relative to this module directory + // Users should extract libdpp-10.1.4-win64 to Source/ThirdParty/DPPLibrary/ + string DPPPath = Path.Combine(ModuleDirectory, "libdpp-10.1.4-win64"); + + // This is equivalent to "Include Directories" in Visual Studio (Image 1) + PublicIncludePaths.Add(Path.Combine(DPPPath, "include", "dpp-10.1")); + + // This is equivalent to "Library Directories" in Visual Studio (Image 2) + string LibPath = Path.Combine(DPPPath, "lib", "dpp-10.1"); + + // This is equivalent to "Additional Dependencies" (dpp.lib) in Visual Studio (Image 4) + PublicAdditionalLibraries.Add(Path.Combine(LibPath, "dpp.lib")); + + // Runtime dependencies - copy DLLs to mod's Binaries folder + // Don't use PublicDelayLoadDLLs - it requires DLLs in Windows search path + string BinPath = Path.Combine(DPPPath, "bin"); + + // Stage DLLs to the mod's Binaries/Win64 folder + RuntimeDependencies.Add("$(PluginDir)/Binaries/Win64/dpp.dll", Path.Combine(BinPath, "dpp.dll")); + RuntimeDependencies.Add("$(PluginDir)/Binaries/Win64/libcrypto-1_1-x64.dll", Path.Combine(BinPath, "libcrypto-1_1-x64.dll")); + RuntimeDependencies.Add("$(PluginDir)/Binaries/Win64/libssl-1_1-x64.dll", Path.Combine(BinPath, "libssl-1_1-x64.dll")); + RuntimeDependencies.Add("$(PluginDir)/Binaries/Win64/opus.dll", Path.Combine(BinPath, "opus.dll")); + RuntimeDependencies.Add("$(PluginDir)/Binaries/Win64/zlib1.dll", Path.Combine(BinPath, "zlib1.dll")); } - else if (Target.Platform == UnrealTargetPlatform.Linux) - { - // TODO: Linux support, need to find a DPP build for Linux - // PublicAdditionalLibraries.Add(Path.Combine(libFolder, "libdpp.a")); - } - - // DLLs - RuntimeDependencies.Add("$(BinaryOutputDir)", Path.Combine(libFolder, "*.dll")); // Windows -// RuntimeDependencies.Add("$(BinaryOutputDir)", Path.Combine(libFolder, "*.so")); // TODO: Linux } } diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/appcommand.h b/Source/ThirdParty/DPPLibrary/include/dpp/appcommand.h deleted file mode 100644 index e0fd52c..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/appcommand.h +++ /dev/null @@ -1,1222 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Discord limits the maximum number of replies to an autocomplete interaction to 25. - * This value represents that maximum. interaction_response::add_autocomplete_choice does not allow - * adding more than this number of elements to the vector. - */ -#ifndef AUTOCOMPLETE_MAX_CHOICES - #define AUTOCOMPLETE_MAX_CHOICES 25 -#endif - -/** - * @brief Represents command option types. - * These are the possible parameter value types. - */ -enum command_option_type : uint8_t { - /** A sub-command */ - co_sub_command = 1, - /** A sub-command group */ - co_sub_command_group = 2, - /** A string value */ - co_string = 3, - /** An integer value */ - co_integer = 4, - /** A boolean value */ - co_boolean = 5, - /** A user snowflake id */ - co_user = 6, - /** A channel snowflake id. Includes all channel types and categories */ - co_channel = 7, - /** A role snowflake id */ - co_role = 8, - /** A mentionable. Includes users and roles */ - co_mentionable = 9, - /** Any double between -2^53 and 2^53 */ - co_number = 10, - /** File attachment type */ - co_attachment = 11, -}; - -/** - * @brief This type is a variant that can hold any of the potential - * native data types represented by the enum dpp::command_option_type. - * It is used in interactions. - * - * std::monostate indicates an invalid parameter value, e.g. an unfilled optional parameter. - * std::int64_t will be for all integer options, double for decimal numbers and dpp::snowflake for anything ID related. - * - * You can retrieve them with std::get(). - */ -typedef std::variant command_value; - -/** - * @brief This struct represents choices in a multiple choice option - * for a command parameter. - * It has both a string name, and a value parameter which is a variant, - * meaning it can hold different potential types (see dpp::command_value) - * that you can retrieve with std::get(). - */ -struct DPP_EXPORT command_option_choice : public json_interface { - std::string name; //!< Option name (1-32 chars) - command_value value; //!< Option value - std::map name_localizations; //!< Localisations of command option name - - /** - * @brief Construct a new command option choice object - */ - command_option_choice() = default; - - virtual ~command_option_choice() = default; - - /** - * @brief Add a localisation for this command option choice - * @see https://discord.com/developers/docs/reference#locales - * @param language Name of language, see the list of locales linked to above. - * @param _name name of command option choice in the specified language - * @return command_option_choice& reference to self for fluent chaining - */ - command_option_choice& add_localization(const std::string& language, const std::string& _name); - - /** - * @brief Construct a new command option choice object - * - * @param n name to initialise with - * @param v value to initialise with - */ - command_option_choice(const std::string &n, command_value v); - - /** - * @brief Fill object properties from JSON - * - * @param j JSON to fill from - * @return command_option_choice& Reference to self - */ - command_option_choice& fill_from_json(nlohmann::json* j); -}; - -/** - * @brief helper function to serialize a command_option_choice to json - * - * @see https://github.com/nlohmann/json#arbitrary-types-conversions - * - * @param j output json object - * @param choice command_option_choice to be serialized - */ -void to_json(nlohmann::json& j, const command_option_choice& choice); - -/** - * @brief A minimum or maximum value for co_number and co_integer dpp::command_option types - */ -typedef std::variant command_option_range; - -/** - * @brief Each command option is a command line parameter. - * It can have a type (see dpp::command_option_type), a name, - * a description, can be required or optional, and can have - * zero or more choices (for multiple choice), plus options. - * Adding options acts like sub-commands and can contain more - * options. - */ -struct DPP_EXPORT command_option : public json_interface { - command_option_type type; //!< Option type (what type of value is accepted) - std::string name; //!< Option name (1-32 chars) - std::string description; //!< Option description (1-100 chars) - bool required; //!< True if this is a mandatory parameter - bool focused; //!< True if the user is typing in this field, when sent via autocomplete - command_value value; //!< Set only by autocomplete went sent as part of an interaction - std::vector choices; //!< List of choices for multiple choice command - bool autocomplete; //!< True if this option supports auto completion - std::vector options; //!< Sub-commands - std::vector channel_types; //!< Allowed channel types for channel snowflake id options - command_option_range min_value; //!< Minimum value allowed, for co_number and co_integer types only - command_option_range max_value; //!< Maximum value allowed, for co_number and co_integer types only - std::map name_localizations; //!< Localisations of command name - std::map description_localizations; //!< Localisations of command description - - - /** - * @brief Construct a new command option object - */ - command_option() = default; - - /** - * @brief Destroy the command option object - */ - virtual ~command_option() = default; - - /** - * @brief Add a localisation for this slash command option - * @see https://discord.com/developers/docs/reference#locales - * @param language Name of language, see the list of locales linked to above. - * @param _name name of slash command option in the specified language - * @param _description description of slash command option in the specified language - * @return command_option& reference to self for fluent chaining - */ - command_option& add_localization(const std::string& language, const std::string& _name, const std::string& _description); - - /** - * @brief Construct a new command option object - * - * @param t Option type - * @param name Option name - * @param description Option description - * @param required True if this is a mandatory parameter - */ - command_option(command_option_type t, const std::string &name, const std::string &description, bool required = false); - - /** - * @brief Add a multiple choice option - * - * @param o choice to add - * @return command_option& returns a reference to self for chaining of calls - * @throw dpp::exception command_option is an autocomplete, so choices cannot be added - */ - command_option& add_choice(const command_option_choice &o); - - /** - * @brief Set the minimum numeric value of the option. - * Only valid if the type is co_number or co_integer. - * @param min_v Minimum value - * @return command_option& return a reference to sef for chaining of calls - */ - command_option& set_min_value(command_option_range min_v); - - /** - * @brief Set the maximum numeric value of the option. - * Only valid if the type is co_number or co_integer. - * @param max_v Maximum value - * @return command_option& return a reference to sef for chaining of calls - */ - command_option& set_max_value(command_option_range max_v); - - /** - * @brief Set the minimum string length of the option. - * Only valid if the type is co_string - * @param min_v Minimum value - * @return command_option& return a reference to sef for chaining of calls - */ - command_option& set_min_length(command_option_range min_v); - - /** - * @brief Set the maximum string length of the option. - * Only valid if the type is co_string - * @param max_v Maximum value - * @return command_option& return a reference to sef for chaining of calls - */ - command_option& set_max_length(command_option_range max_v); - - /** - * @brief Add a sub-command option - * - * @param o Sub-command option to add - * @return command_option& return a reference to self for chaining of calls - */ - command_option& add_option(const command_option &o); - - /** - * @brief Add channel type for option (only for co_channel type options) - * - * @param ch type to set - * @return command_option& return a reference to self for chaining of calls - */ - command_option& add_channel_type(const channel_type ch); - - /** - * @brief Set the auto complete state - * - * @param autocomp True to enable auto completion for this option - * @return command_option& return a reference to self for chaining of calls - * @throw dpp::exception You attempted to enable auto complete on a command_option that has choices added to it - */ - command_option& set_auto_complete(bool autocomp); - - /** - * @brief Fill object properties from JSON. Fills options recursively. - * - * @param j JSON to fill from - * @return command_option& Reference to self - */ - command_option& fill_from_json(nlohmann::json* j); -}; - -/** - * @brief helper function to serialize a command_option to json - * - * @see https://github.com/nlohmann/json#arbitrary-types-conversions - * - * @param j output json object - * @param opt command_option to be serialized - */ -void to_json(nlohmann::json& j, const command_option& opt); - -/** - * @brief Response types when responding to an interaction within on_interaction_create. - */ -enum interaction_response_type { - ir_pong = 1, //!< Acknowledge a Ping - ir_channel_message_with_source = 4, //!< respond to an interaction with a message - ir_deferred_channel_message_with_source = 5, //!< Acknowledge an interaction and edit a response later, the user sees a loading state - ir_deferred_update_message = 6, //!< for components, acknowledge an interaction and edit the original message later; the user does not see a loading state - ir_update_message = 7, //!< for components, edit the message the component was attached to - ir_autocomplete_reply = 8, //!< Reply to autocomplete interaction. Be sure to do this within 500ms of the interaction! - ir_modal_dialog = 9, //!< A modal dialog box -}; - -/** - * @brief A response to an interaction, used to reply to a command and initiate - * a message, which can be hidden from others (ephemeral) or visible to all. - * - * The dpp::interaction_response object wraps a dpp::message object. To set the - * message as 'ephemeral' (e.g. only the command issuer can see it) you should - * add the dpp::m_ephemeral flag to the dpp::message::flags field. e.g.: - * - * `mymessage.flags |= dpp::m_ephemeral;` - */ -struct DPP_EXPORT interaction_response : public json_interface { - - /** - * @brief Response type from dpp::interaction_response_type. - * Should be one of ir_pong, ir_channel_message_with_source, - * or ir_deferred_channel_message_with_source. - */ - interaction_response_type type; - - /** - * @brief A message object. This pointer is always valid - * while the containing interaction_response exists. - */ - struct message* msg; - - /** - * @brief Array of up to 25 autocomplete choices - */ - std::vector autocomplete_choices; - - /** - * @brief Construct a new interaction response object - */ - interaction_response(); - - /** - * @brief Construct a new interaction response object - * - * @param t Type of reply - * @param m Message to reply with - */ - interaction_response(interaction_response_type t, const struct message& m); - - /** - * @brief Construct a new interaction response object - * - * @param t Type of reply - */ - interaction_response(interaction_response_type t); - - /** - * @brief Fill object properties from JSON - * - * @param j JSON to fill from - * @return interaction_response& Reference to self - */ - interaction_response& fill_from_json(nlohmann::json* j); - - /** - * @brief Build a json string for this object - * - * @return std::string JSON string - */ - virtual std::string build_json(bool with_id = false) const; - - /** - * @brief Add a command option choice - * - * @param achoice command option choice to add - * @return interaction_response& Reference to self - */ - interaction_response& add_autocomplete_choice(const command_option_choice& achoice); - - /** - * @brief Destroy the interaction response object - */ - virtual ~interaction_response(); - -}; - -/** - * @brief Represents a modal dialog box response to an interaction. - * - * A dialog box is a modal popup which appears to the user instead of a message. One or more - * components are displayed on a form (the same component structure as within a dpp::message). - * When the user submits the form an on_form_submit event is dispatched to any listeners. - */ -struct DPP_EXPORT interaction_modal_response : public interaction_response, public json_interface { -private: - size_t current_row; -public: - /** - * @brief Custom ID for the modal form - */ - std::string custom_id; - - /** - * @brief Title of the modal form box - */ - std::string title; - - /** - * @brief List of components. All components must be placed within - * an action row, each outer vector is the action row. - */ - std::vector> components; - - /** - * @brief Construct a new interaction modal response object - */ - interaction_modal_response(); - - /** - * @brief Construct a new interaction modal response object - * - * @param _custom_id Custom ID of the modal form - * @param _title Title of the modal form. It will be truncated to the maximum length of 45 UTF-8 characters. - * @param _components Components to add to the modal form - */ - interaction_modal_response(const std::string& _custom_id, const std::string& _title, const std::vector _components = {}); - - /** - * @brief Set the custom id - * - * @param _custom_id custom id to set - * @return interaction_modal_response& Reference to self - */ - interaction_modal_response& set_custom_id(const std::string& _custom_id); - - /** - * @brief Set the title - * - * @param _title title to set - * @return interaction_modal_response& Reference to self - */ - interaction_modal_response& set_title(const std::string& _title); - - /** - * @brief Add a component to an interaction modal response - * - * @param c component to add - * @return interaction_modal_response& Reference to self - */ - interaction_modal_response& add_component(const component& c); - - /** - * @brief Add a new row to the interaction modal response. - * @note A modal response can have a maximum of five rows. - * @throw dpp::logic_exception if more than five rows are attempted to be added - * @return interaction_modal_response& Reference to self - */ - interaction_modal_response& add_row(); - - /** - * @brief Fill object properties from JSON - * - * @param j JSON to fill from - * @return interaction_response& Reference to self - */ - interaction_modal_response& fill_from_json(nlohmann::json* j); - - /** - * @brief Build a json string for this object - * @param with_id include id in json output - * - * @return std::string JSON string - */ - std::string build_json(bool with_id = false) const; - - /** - * @brief Destroy the interaction modal response object - */ - virtual ~interaction_modal_response() = default; -}; - -/** - * @brief Resolved snowflake ids to users, guild members, roles and channels. - */ -struct DPP_EXPORT command_resolved { - /** - * @brief Resolved users - */ - std::map users; - /** - * @brief Resolved guild members - */ - std::map members; - /** - * @brief Resolved total guild member permissions in the channel, including overwrites - */ - std::map member_permissions; - /** - * @brief Resolved roles - */ - std::map roles; - /** - * @brief Resolved channels - */ - std::map channels; - /** - * @brief Resolved messages - */ - std::map messages; - /** - * @brief Resolved attachments - */ - std::map attachments; -}; - -/** - * @brief Values in the command interaction. - * These are the values specified by the user when actually issuing - * the command on a channel or in DM. - */ -struct DPP_EXPORT command_data_option { - std::string name; //!< the name of the parameter - command_option_type type; //!< value of ApplicationCommandOptionType - command_value value; //!< Optional: the value of the pair - std::vector options; //!< Optional: present if this option is a group or subcommand - bool focused; //!< Optional: true if this option is the currently focused option for autocomplete - - /** - * @brief Check if the value variant holds std::monostate and options vector is empty (i.e. the option wasn't supplied) - * @return bool true, if value variant holds std::monostate and options vector is empty - */ - bool empty() { - return std::holds_alternative(value) && options.empty(); - } - - /** - * @brief Get an option value by index - * - * @tparam Type to get from the parameter - * @param index index number of parameter - * @return T returned type - */ - template T& get_value(size_t index) { - return std::get(options.at(index).value); - } -}; - -/** - * @brief helper function to deserialize a command_data_option from json - * - * @see https://github.com/nlohmann/json#arbitrary-types-conversions - * - * @param j output json object - * @param cdo command_data_option to be deserialized - */ -void from_json(const nlohmann::json& j, command_data_option& cdo); - -/** Types of interaction in the dpp::interaction class - */ -enum interaction_type { - it_ping = 1, //!< ping - it_application_command = 2, //!< application command (slash command) - it_component_button = 3, //!< button click or select menu chosen (component interaction) - it_autocomplete = 4, //!< Autocomplete interaction - it_modal_submit = 5, //!< Modal form submission -}; - -/** - * @brief Right-click context menu types - */ -enum slashcommand_contextmenu_type { - ctxm_none = 0, //!< Undefined context menu type - ctxm_chat_input = 1, //!< DEFAULT, these are the slash commands you're used to - ctxm_user = 2, //!< Add command to user context menu - ctxm_message = 3 //!< Add command to message context menu -}; - -/** - * @brief Details of a command within an interaction. - * This subobject represents the application command associated - * with the interaction. - */ -struct DPP_EXPORT command_interaction { - snowflake id; //!< the ID of the invoked command - std::string name; //!< the name of the invoked command - std::vector options; //!< Optional: the params + values from the user - slashcommand_contextmenu_type type; //!< type of the command interaction - dpp::snowflake target_id; //!< Non-zero target ID for context menu actions. e.g. user id or message id whom clicked or tapped with the context menu https://discord.com/developers/docs/interactions/application-commands#user-commands - - /** - * @brief Get an option value by index - * - * @tparam Type to get from the parameter - * @param index index number of parameter - * @return T returned type - */ - template T& get_value(size_t index) { - return std::get(options.at(index).value); - } - - /** - * @brief Return a ping/mention for the slash command - * - * @return std::string mention. e.g. `` - * @note If you want a mention for a subcommand or subcommand group, you can use dpp::utility::slashcommand_mention - */ - std::string get_mention() const; -}; - -/** - * @brief helper function to deserialize a command_interaction from json - * - * @see https://github.com/nlohmann/json#arbitrary-types-conversions - * - * @param j output json object - * @param ci command_interaction to be deserialized - */ -void from_json(const nlohmann::json& j, command_interaction& ci); - -/** - * @brief A button click for a button component - */ -struct DPP_EXPORT component_interaction { - /** - * @brief Component type (dpp::component_type) - */ - uint8_t component_type; - /** - * @brief Custom ID set when created - */ - std::string custom_id; - /** - * @brief Possible values for a drop down list - */ - std::vector values; -}; - -/** - * @brief An auto complete interaction - */ -struct DPP_EXPORT autocomplete_interaction : public command_interaction { -}; - -/** - * @brief helper function to deserialize a component_interaction from json - * - * @see https://github.com/nlohmann/json#arbitrary-types-conversions - * - * @param j output json object - * @param bi button_interaction to be deserialized - */ -void from_json(const nlohmann::json& j, component_interaction& bi); - -/** - * @brief helper function to deserialize an autocomplete_interaction from json - * - * @see https://github.com/nlohmann/json#arbitrary-types-conversions - * - * @param j output json object - * @param ai autocomplete_interaction to be deserialized - */ -void from_json(const nlohmann::json& j, autocomplete_interaction& ai); - -/** - * @brief An interaction represents a user running a command and arrives - * via the dpp::cluster::on_interaction_create event. This is further split - * into the events on_form_submit, on_slashcommand, on_user_context_menu, - * on_button_click, on_select_menu, etc. - */ -class DPP_EXPORT interaction : public managed, public json_interface { - - /** - * @brief Get a resolved object from the resolved set - * - * @tparam T type of object to retrieve - * @tparam C container defintion for resolved container - * @param id Snowflake ID - * @param resolved_set container for the type - * @return const T& retrieved type - * @throws dpp::logic_exception on object not found in resolved set - */ - template const T& get_resolved(snowflake id, const C& resolved_set) const { - auto i = resolved_set.find(id); - if (i == resolved_set.end()) { - throw dpp::logic_exception("ID not found in resolved properties of application command"); - } - return i->second; - } - -public: - snowflake application_id; //!< id of the application this interaction is for - uint8_t type; //!< the type of interaction (dpp::interaction_type) - std::variant data; //!< Optional: the command data payload - snowflake guild_id; //!< Optional: the guild it was sent from - snowflake channel_id; //!< Optional: the channel it was sent from - snowflake message_id; //!< Originating message id for context menu actions - permission app_permissions; //!< Permissions of the bot in the channel/guild where this command was issued - message msg; //!< Originating message for context menu actions - guild_member member; //!< Optional: guild member data for the invoking user, including permissions - user usr; //!< User object for the invoking user - std::string token; //!< a continuation token for responding to the interaction - uint8_t version; //!< read-only property, always 1 - command_resolved resolved; //!< Resolved user/role etc - std::string locale; //!< User's locale (language) - std::string guild_locale; //!< Guild's locale (language) - for guild interactions only - cache_policy_t cache_policy; //!< Cache policy from cluster - - /** - * @brief Construct a new interaction object - */ - interaction(); - - /** - * @brief Destroy the interaction object - */ - virtual ~interaction() = default; - - /** - * @brief Get a user associated with the slash command from the resolved list. - * The resolved list contains associated structures for this command and does not - * use the cache or require any extra API calls. - * - * @param id User snowflake ID to find - * @return const dpp::user& user - * @throws dpp::logic_exception on object not found in resolved set - */ - const dpp::user& get_resolved_user(snowflake id) const; - - /** - * @brief Get the channel this command originated on - * - * @return const dpp::channel& channel - * @throws dpp::logic_exception Command originated from a DM or channel not in cache - */ - const dpp::channel& get_channel() const; - - /** - * @brief Get the guild this command originated on - * - * @return const dpp::guild& guild - * @throws dpp::logic_exception Command originated from a DM or guild not in cache - */ - const dpp::guild& get_guild() const; - - /** - * @brief Get the user who issued this command - * - * @return const dpp::user& user - */ - const dpp::user& get_issuing_user() const; - - /** - * @brief Get the message this action refers to if it is a context menu command - * - * @return const dpp::message& context menu message - */ - const dpp::message& get_context_message() const; - - /** - * @brief Get a role associated with the slash command from the resolved list. - * The resolved list contains associated structures for this command and does not - * use the cache or require any extra API calls. - * - * @param id Role snowflake ID to find - * @return const dpp::role& role - * @throws dpp::logic_exception on object not found in resolved set - */ - const dpp::role& get_resolved_role(snowflake id) const; - - /** - * @brief Get a channel associated with the slash command from the resolved list. - * The resolved list contains associated structures for this command and does not - * use the cache or require any extra API calls. - * - * @param id Channel snowflake ID to find - * @return const dpp::channel& channel - * @throws dpp::logic_exception on object not found in resolved set - */ - const dpp::channel& get_resolved_channel(snowflake id) const; - - /** - * @brief Get a guild member associated with the slash command from the resolved list. - * The resolved list contains associated structures for this command and does not - * use the cache or require any extra API calls. - * - * @param id User snowflake ID to find - * @return const dpp::guild_member& guild member - * @throws dpp::logic_exception on object not found in resolved set - */ - const dpp::guild_member& get_resolved_member(snowflake id) const; - - /** - * @brief Get a permission associated with the slash command from the resolved list. - * The resolved list contains associated structures for this command and does not - * use the cache or require any extra API calls. - * - * @param id User snowflake ID to find - * @return const dpp::permission& permissions for the user including overrides on - * the channel where the command was issued. - * @throws dpp::logic_exception on object not found in resolved set - */ - const dpp::permission& get_resolved_permission(snowflake id) const; - - /** - * @brief Get a message associated with the slash command from the resolved list. - * The resolved list contains associated structures for this command and does not - * use the cache or require any extra API calls. - * - * @param id Message snowflake ID to find - * @return const dpp::message& message - * @throws dpp::logic_exception on object not found in resolved set - */ - const dpp::message& get_resolved_message(snowflake id) const; - - /** - * @brief Get an uploaded attachment associated with the slash command from the resolved list. - * The resolved list contains associated structures for this command and does not - * use the cache or require any extra API calls. - * - * @param id Attachment snowflake ID to find - * @return const dpp::attachment& file attachment - * @throws dpp::logic_exception on object not found in resolved set - */ - const dpp::attachment& get_resolved_attachment(snowflake id) const; - - /** - * @brief Get the command interaction object - * - * @throw dpp::logic_exception if the interaction is not for a command - * - * @return command_interaction object - */ - command_interaction get_command_interaction() const; - - /** - * @brief Get the component interaction object - * - * @throw dpp::logic_exception if the interaction is not for a component - * - * @return component_interaction object - */ - component_interaction get_component_interaction() const; - - /** - * @brief Get the autocomplete interaction object - * - * @throw dpp::logic_exception if the interaction is not for an autocomplete - * - * @return autocomplete_interaction object - */ - autocomplete_interaction get_autocomplete_interaction() const; - - /** - * @brief Get the command name for a command interaction - * - * @return std::string command interaction, or empty string if the interaction - * is not for a command. - */ - std::string get_command_name() const; - - /** - * @brief Fill object properties from JSON - * - * @param j JSON to fill from - * @return interaction& Reference to self - */ - interaction& fill_from_json(nlohmann::json* j); - - /** - * @brief Build a json string for this object - * - * @param with_id True if to include the ID in the JSON - * @return std::string JSON string - */ - std::string build_json(bool with_id = false) const; -}; - -/** - * @brief helper function to deserialize an interaction from json - * - * @see https://github.com/nlohmann/json#arbitrary-types-conversions - * - * @param j output json object - * @param i interaction to be deserialized - */ -void from_json(const nlohmann::json& j, interaction& i); - -/** - * @brief type of permission in the dpp::command_permission class - */ -enum command_permission_type { - /** - * @brief Role permission - * - */ - cpt_role = 1, - /** - * @brief User permission - * - */ - cpt_user = 2, -}; - -/** - * @brief Application command permissions allow you to enable or - * disable commands for specific users or roles within a guild - */ -class DPP_EXPORT command_permission : public json_interface { -public: - snowflake id; //!< the ID of the role or user - command_permission_type type; //!< the type of permission - bool permission; //!< true to allow, false, to disallow - - /** - * @brief Construct a new command permission object - */ - command_permission() = default; - - virtual ~command_permission() = default; - - /** - * @brief Construct a new command permission object - * - * @param id The ID of the role or user - * @param t The permission type - * @param permission True to allow, false, to disallow - */ - command_permission(snowflake id, const command_permission_type t, bool permission); - - /** - * @brief Fill object properties from JSON - * - * @param j JSON to fill from - * @return command_permission& Reference to self - */ - command_permission &fill_from_json(nlohmann::json *j); -}; - -/** - * @brief helper function to serialize a command_permission to json - * - * @see https://github.com/nlohmann/json#arbitrary-types-conversions - * - * @param j output json object - * @param cp command_permission to be serialized - */ -void to_json(nlohmann::json& j, const command_permission& cp); - -/** - * @brief Returned when fetching the permissions for a command in a guild. - */ -class DPP_EXPORT guild_command_permissions : public json_interface { -public: - snowflake id; //!< the id of the command - snowflake application_id; //!< the id of the application the command belongs to - snowflake guild_id; //!< the id of the guild - std::vector permissions; //!< the permissions for the command in the guild - - /** - * @brief Construct a new guild command permissions object - */ - guild_command_permissions(); - - virtual ~guild_command_permissions() = default; - - /** - * @brief Fill object properties from JSON - * - * @param j JSON to fill from - * @return guild_command_permissions& Reference to self - */ - guild_command_permissions &fill_from_json(nlohmann::json *j); - -}; - -/** - * @brief helper function to serialize a guild_command_permissions to json - * - * @see https://github.com/nlohmann/json#arbitrary-types-conversions - * - * @param j output json object - * @param gcp guild_command_permissions to be serialized - */ -void to_json(nlohmann::json& j, const guild_command_permissions& gcp); - -/** - * @brief Represents an application command, created by your bot - * either globally, or on a guild. - */ -class DPP_EXPORT slashcommand : public managed, public json_interface { -public: - /** - * @brief Application id (usually matches your bots id) - */ - snowflake application_id; - - /** - * @brief Context menu type, defaults to dpp::ctxm_chat_input - */ - slashcommand_contextmenu_type type; - - /** - * @brief Command name (1-32 chars) - */ - std::string name; - - /** - * @brief Command description (1-100 chars) - */ - std::string description; - - /** - * @brief Command options (parameters) - */ - std::vector options; - - /** - * @brief Whether the command is enabled by default when the app is added to a guild. - * This has no effect as the default_member_permissions value is used instead. - * @deprecated Discord discourage use of this value and instead you should use slashcommand::default_member_permissions. - */ - bool default_permission; - - /** - * @brief command permissions - * @deprecated Discord discourage use of this value and instead you should use default_member_permissions. - */ - std::vector permissions; - - /** - * @brief autoincrementing version identifier updated during substantial record changes - */ - snowflake version; - - /** - * @brief Localisations of command name - */ - std::map name_localizations; - - /** - * @brief Localisations of command description - */ - std::map description_localizations; - - /** - * @brief The default permissions of this command on a guild. - * D++ defaults this to dpp::p_use_application_commands. - * @note You can set it to 0 to disable the command for everyone except admins by default - */ - permission default_member_permissions; - - /** - * @brief True if this command should be allowed in a DM - * D++ defaults this to false. Cannot be set to true in a guild - * command, only a global command. - */ - bool dm_permission; - - /** - * @brief Indicates whether the command is [age-restricted](https://discord.com/developers/docs/interactions/application-commands#agerestricted-commands). - * Defaults to false - */ - bool nsfw; - - /** - * @brief Construct a new slashcommand object - */ - slashcommand(); - - /** - * @brief Construct a new slashcommand object - * - * @param _name Command name - * @param _description Command description - * @param _application_id Application id (usually the bot's user id) - */ - slashcommand(const std::string &_name, const std::string &_description, const dpp::snowflake _application_id); - - /** - * @brief Destroy the slashcommand object - */ - virtual ~slashcommand(); - - /** - * @brief Add a localisation for this slash command - * @see https://discord.com/developers/docs/reference#locales - * @param language Name of language, see the list of locales linked to above. - * @param _name name of slash command in the specified language - * @param _description description of slash command in the specified language - * @return slashcommand& reference to self for fluent chaining - */ - slashcommand& add_localization(const std::string& language, const std::string& _name, const std::string& _description); - - /** - * @brief Set the dm permission for the command - * - * @param dm true to allow this command in dms - * @return slashcommand& reference to self for chaining of calls - */ - slashcommand& set_dm_permission(bool dm); - - /** - * @brief Set whether the command should be age-restricted or not - * - * @param is_nsfw true if the command should be age-restricted - * @return slashcommand& reference to self for chaining of calls - */ - slashcommand& set_nsfw(bool is_nsfw); - - /** - * @brief Set the default permissions of the slash command - * - * @param defaults default permissions to set. This is a permission bitmask of bits from dpp::permissions - * @note You can set it to 0 to disable the command for everyone except admins by default - * - * @return slashcommand& reference to self for chaining of calls - */ - slashcommand& set_default_permissions(uint64_t defaults); - - /** - * @brief Add an option (parameter) - * - * @param o option (parameter) to add - * @return slashcommand& reference to self for chaining of calls - */ - slashcommand& add_option(const command_option &o); - - /** - * @brief Set the type of the slash command (only for context menu entries) - * - * @param _type Type of context menu entry this command represents - * @note If the type is dpp::ctxm_chat_input, the command name will be set to lowercase. - * @return slashcommand& reference to self for chaining of calls - */ - slashcommand& set_type(slashcommand_contextmenu_type _type); - - /** - * @brief Set the name of the command - * - * @param n name of command - * @note The maximum length of a command name is 32 UTF-8 codepoints. - * If your command name is longer than this, it will be truncated. - * The command name will be set to lowercase when the type is the default dpp::ctxm_chat_input. - * @return slashcommand& reference to self for chaining of calls - */ - slashcommand& set_name(const std::string &n); - - /** - * @brief Set the description of the command - * - * @param d description - * @note The maximum length of a command description is 100 UTF-8 codepoints. - * If your command description is longer than this, it will be truncated. - * @return slashcommand& reference to self for chaining of calls - */ - slashcommand& set_description(const std::string &d); - - /** - * @brief Set the application id of the command - * - * @param i application id - * @return slashcommand& reference to self for chaining of calls - */ - slashcommand& set_application_id(snowflake i); - - /** - * @brief Adds a permission to the command - * - * @param p permission to add - * @return slashcommand& reference to self for chaining of calls - * @deprecated Discord discourage use of this value and instead you should use default_member_permissions. - */ - slashcommand& add_permission(const command_permission& p); - - /** - * @brief Disable default permissions, command will be unusable unless - * permissions are overridden with add_permission and - * dpp::guild_command_edit_permissions - * - * @return slashcommand& reference to self for chaining of calls - * @deprecated Discord discourage use of this value and instead you should use default_member_permissions. - */ - slashcommand& disable_default_permissions(); - - /** - * @brief Return a ping/mention for the slash command - * - * @return std::string mention. e.g. `` - * @note If you want a mention for a subcommand or subcommand group, you can use dpp::utility::slashcommand_mention - */ - std::string get_mention() const; - - /** - * @brief Fill object properties from JSON - * - * @param j JSON to fill from - * @return slashcommand& Reference to self - */ - slashcommand& fill_from_json(nlohmann::json* j); - - /** - * @brief Build a json string for this object - * - * @param with_id True if to include the ID in the JSON - * @return std::string JSON string - */ - std::string build_json(bool with_id = false) const; -}; - -/** - * @brief helper function to serialize a slashcommand to json - * - * @see https://github.com/nlohmann/json#arbitrary-types-conversions - * - * @param j output json object - * @param cmd slashcommand to be serialized - */ -void to_json(nlohmann::json& j, const slashcommand& cmd); - -/** - * @brief A group of application slash commands - */ -typedef std::unordered_map slashcommand_map; - -/** - * @brief A group of guild command permissions - */ -typedef std::unordered_map guild_command_permissions_map; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/application.h b/Source/ThirdParty/DPPLibrary/include/dpp/application.h deleted file mode 100644 index 7c32c6d..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/application.h +++ /dev/null @@ -1,166 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief status of a member of a team who maintain a bot/application - */ -enum team_member_status : uint8_t { - /// User was invited to the team - tms_invited = 1, - /// User has accepted membership onto the team - tms_accepted = 2 -}; - -/** - * @brief Flags for a bot or application - */ -enum application_flags : uint32_t { - /// Has gateway presence intent - apf_gateway_presence = (1 << 12), - /// Has gateway presence intent for <100 guilds - apf_gateway_presence_limited = (1 << 13), - /// Has guild members intent - apf_gateway_guild_members = (1 << 14), - /// Has guild members intent for <100 guilds - apf_gateway_guild_members_limited = (1 << 15), - /// Verification is pending - apf_verification_pending_guild_limit = (1 << 16), - /// Embedded - apf_embedded = (1 << 17), - /// Has approval for message content - apf_gateway_message_content = (1 << 18), - /// Has message content, but <100 guilds - apf_gateway_message_content_limited = (1 << 19), - /// Indicates if the app has registered global application commands - apf_application_command_badge = (1 << 23) -}; - -/** - * @brief Represents the settings for the bot/application's in-app authorization link - */ -struct DPP_EXPORT application_install_params { - permission permissions; //!< A bitmask of dpp::permissions to request for the bot role - std::vector scopes; //!< The [scopes](https://discord.com/developers/docs/topics/oauth2#shared-resources-oauth2-scopes) as strings to add the application to the server with -}; - -/** - * @brief Represents a team member on a team who maintain a bot/application - */ -class DPP_EXPORT team_member { -public: - team_member_status membership_state; //!< the user's membership state on the team - std::string permissions; //!< will always be [""] - snowflake team_id; //!< the id of the parent team of which they are a member - user member_user; //!< the avatar, discriminator, id, and username of the user -}; - -/** - * @brief Represents a team of users who maintain a bot/application - */ -class DPP_EXPORT app_team { -public: - utility::iconhash icon; //!< a hash of the image of the team's icon (may be empty) - snowflake id; //!< the unique id of the team - std::vector members; //!< the members of the team - std::string name; //!< the name of the team - snowflake owner_user_id; //!< the user id of the current team owner -}; - -/** - * @brief The application class represents details of a bot application - */ -class DPP_EXPORT application : public managed, public json_interface { -public: - std::string name; //!< the name of the app - utility::iconhash icon; //!< the icon hash of the app (may be empty) - std::string description; //!< the description of the app - std::string rpc_origins; //!< Optional: an array of rpc origin urls, if rpc is enabled - bool bot_public; //!< when false only app owner can join the app's bot to guilds - bool bot_require_code_grant; //!< when true the app's bot will only join upon completion of the full oauth2 code grant flow - std::string terms_of_service_url; //!< Optional: the url of the app's terms of service - std::string privacy_policy_url; //!< Optional: the url of the app's privacy policy - user owner; //!< Optional: partial user object containing info on the owner of the application - std::string summary; //!< if this application is a game sold on Discord, this field will be the summary field for the store page of its primary sku @deprecated Will be removed in v11 - std::string verify_key; //!< the hex encoded key for verification in interactions and the GameSDK's GetTicket - app_team team; //!< if the application belongs to a team, this will be a list of the members of that team (may be empty) - snowflake guild_id; //!< Optional: if this application is a game sold on Discord, this field will be the guild to which it has been linked - snowflake primary_sku_id; //!< Optional: if this application is a game sold on Discord, this field will be the id of the "Game SKU" that is created, if exists - std::string slug; //!< Optional: if this application is a game sold on Discord, this field will be the URL slug that links to the store page - utility::iconhash cover_image; //!< Optional: the application's default rich presence invite cover image hash - uint32_t flags; //!< Optional: the application's public flags - std::vector tags; //!< Up to 5 tags describing the content and functionality of the application - application_install_params install_params; //!< Settings for the application's default in-app authorization link, if enabled - std::string custom_install_url; //!< The application's default custom authorization link, if enabled - std::string role_connections_verification_url; //!< The application's role connection verification entry point, which when configured will render the app as a verification method in the guild role verification configuration - - /** Constructor */ - application(); - - /** Destructor */ - ~application(); - - /** Read class values from json object - * @param j A json object to read from - * @return A reference to self - */ - application& fill_from_json(nlohmann::json* j); - - /** - * @brief Get the application's cover image url if they have one, otherwise returns an empty string - * - * @param size The size of the cover image in pixels. It can be any power of two between 16 and 4096, - * otherwise the default sized cover image is returned. - * @param format The format to use for the avatar. It can be one of `i_webp`, `i_jpg` or `i_png`. - * @return std::string cover image url or an empty string, if required attributes are missing or an invalid format was passed - */ - std::string get_cover_image_url(uint16_t size = 0, const image_type format = i_png) const; - - /** - * @brief Get the application's icon url if they have one, otherwise returns an empty string - * - * @param size The size of the icon in pixels. It can be any power of two between 16 and 4096, - * otherwise the default sized icon is returned. - * @param format The format to use for the avatar. It can be one of `i_webp`, `i_jpg` or `i_png`. - * @return std::string icon url or an empty string, if required attributes are missing or an invalid format was passed - */ - std::string get_icon_url(uint16_t size = 0, const image_type format = i_png) const; -}; - -/** A group of applications. - * This is not currently ever sent by Discord API but the DPP standard setup for - * objects that can be received by REST has the possibility for this, so this exists. - * Don't ever expect to see one at present. - */ -typedef std::unordered_map application_map; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/auditlog.h b/Source/ThirdParty/DPPLibrary/include/dpp/auditlog.h deleted file mode 100644 index 25252a3..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/auditlog.h +++ /dev/null @@ -1,214 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - -#pragma once -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Defines types of audit log entry - */ -enum audit_type { - /// Guild update - aut_guild_update = 1, - /// Channel create - aut_channel_create = 10, - /// Channel update - aut_channel_update = 11, - /// Channel delete - aut_channel_delete = 12, - /// Channel overwrite create - aut_channel_overwrite_create = 13, - /// Channel overwrite update - aut_channel_overwrite_update = 14, - /// Channel overwrite delete - aut_channel_overwrite_delete = 15, - /// Channel member kick - aut_member_kick = 20, - /// Channel member prune - aut_member_prune = 21, - /// Channel member ban add - aut_member_ban_add = 22, - /// Channel member ban remove - aut_member_ban_remove = 23, - /// Guild member update - aut_member_update = 24, - /// Guild member role update - aut_member_role_update = 25, - /// Guild member move - aut_member_move = 26, - /// Guild member voice disconnect - aut_member_disconnect = 27, - /// Guild bot add - aut_bot_add = 28, - /// Guild role create - aut_role_create = 30, - /// Guild role update - aut_role_update = 31, - /// Guild role delete - aut_role_delete = 32, - /// Guild invite create - aut_invite_create = 40, - /// Guild invite update - aut_invite_update = 41, - /// Guild invite delete - aut_invite_delete = 42, - /// Guild webhook create - aut_webhook_create = 50, - /// Guild webhook update - aut_webhook_update = 51, - /// Guild webhook delete - aut_webhook_delete = 52, - /// Guild emoji create - aut_emoji_create = 60, - /// Guild emoji update - aut_emoji_update = 61, - /// Guild emoji delete - aut_emoji_delete = 62, - /// Guild message delete - aut_message_delete = 72, - /// Guild message bulk delete - aut_message_bulk_delete = 73, - /// Guild message pin - aut_message_pin = 74, - /// Guild message unpin - aut_message_unpin = 75, - /// Guild integration create - aut_integration_create = 80, - /// Guild integration update - aut_integration_update = 81, - /// Guild integration delete - aut_integration_delete = 82, - /// Stage instance create - aut_stage_instance_create = 83, - /// Stage instance update - aut_stage_instance_update = 84, - /// stage instance delete - aut_stage_instance_delete = 85, - /// Sticker create - aut_sticker_create = 90, - /// Sticker update - aut_sticker_update = 91, - /// Sticker delete - aut_sticker_delete = 92, - /// Scheduled event creation - aut_guild_scheduled_event_create = 100, - /// Scheduled event update - aut_guild_scheduled_event_update = 101, - /// Scheduled event deletion - aut_guild_scheduled_event_delete = 102, - /// Thread create - aut_thread_create = 110, - /// Thread update - aut_thread_update = 111, - /// Thread delete - aut_thread_delete = 112, - /// Application command permissions update - aut_appcommand_permission_update = 121, - /// Auto moderation rule creation - aut_automod_rule_create = 140, - /// Auto moderation rule update - aut_automod_rule_update = 141, - /// Auto moderation rule deletion - aut_automod_rule_delete = 142, - /// Message was blocked by Auto Moderation - aut_automod_block_message = 143, - /// Message was flagged by Auto Moderation - aut_automod_flag_to_channel = 144, - /// Member was timed out by Auto Moderation - aut_automod_user_communication_disabled = 145, -}; - -/** - * @brief Defines audit log changes - */ -struct DPP_EXPORT audit_change { - /// Optional: Serialised new value of the change, e.g. for nicknames, the new nickname - std::string new_value; - /// Optional: Serialised old value of the change, e.g. for nicknames, the old nickname - std::string old_value; - /** - * The property name that was changed, e.g. `nick` for nickname changes - * @note For dpp::aut_appcommand_permission_update updates the key is the id of the user, channel, role, or a permission constant that was updated instead of an actual property name - */ - std::string key; -}; - -/** - * @brief Extra information for an audit log entry - */ -struct DPP_EXPORT audit_extra { - std::string automod_rule_name; //!< Name of the Auto Moderation rule that was triggered - std::string automod_rule_trigger_type; //!< Trigger type of the Auto Moderation rule that was triggered - std::string delete_member_days; //!< number of days after which inactive members were kicked - std::string members_removed; //!< number of members removed by the prune - snowflake channel_id; //!< channel in which the entities were targeted - snowflake message_id; //!< id of the message that was targeted - std::string count; //!< number of entities that were targeted - snowflake id; //!< id of the overwritten entity - std::string type; //!< type of overwritten entity - "0" for "role" or "1" for "member" - std::string role_name; //!< name of the role if type is "0" (not present if type is "1") - snowflake application_id; //!< ID of the app whose permissions were targeted -}; - -/** - * @brief An individual audit log entry - */ -struct DPP_EXPORT audit_entry { - snowflake id; //!< id of the entry - /** - * ID of the affected entity (webhook, user, role, etc.) (may be empty) - * @note For dpp::audit_type::aut_appcommand_permission_update updates, it's the command ID or the app ID - */ - snowflake target_id; - std::vector changes; //!< Optional: changes made to the target_id - snowflake user_id; //!< the user or app that made the changes (may be empty) - audit_type type; //!< type of action that occurred - std::optional extra; //!< Optional: additional info for certain action types - std::string reason; //!< Optional: the reason for the change (1-512 characters) -}; - -/** - * @brief The auditlog class represents the audit log entries of a guild. - */ -class DPP_EXPORT auditlog : public json_interface { -public: - std::vector entries; //!< Audit log entries - - /** Constructor */ - auditlog() = default; - - /** Destructor */ - virtual ~auditlog() = default; - - /** Read class values from json object - * @param j A json object to read from - * @return A reference to self - */ - auditlog& fill_from_json(nlohmann::json* j); -}; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/automod.h b/Source/ThirdParty/DPPLibrary/include/dpp/automod.h deleted file mode 100644 index c9df1da..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/automod.h +++ /dev/null @@ -1,369 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - -#pragma once -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Possible types of preset filter lists - */ -enum automod_preset_type : uint8_t { - /** - * @brief Strong swearing - */ - amod_preset_profanity = 1, - /** - * @brief Sexual phrases and words - */ - amod_preset_sexual_content = 2, - /** - * @brief Racial and other slurs, hate speech - */ - amod_preset_slurs = 3, -}; - -/** - * @brief Action types to perform on filtering - */ -enum automod_action_type : uint8_t { - /** - * @brief Blocks the message and prevents it from being posted. - * A custom explanation can be specified and shown to members whenever their message is blocked - */ - amod_action_block_message = 1, - /** - * @brief Send an alert to a given channel - */ - amod_action_send_alert = 2, - /** - * @brief timeout the user - * @note Can only be set up for rules with trigger types of dpp::amod_type_keyword and dpp::amod_type_mention_spam - */ - amod_action_timeout = 3, -}; - -/** - * @brief Event types, only message send is currently supported - */ -enum automod_event_type : uint8_t { - /** - * @brief Trigger on message send or edit - */ - amod_message_send = 1, -}; - -/** - * @brief Types of moderation to trigger - */ -enum automod_trigger_type : uint8_t { - /** - * @brief Check if content contains words from a user defined list of keywords - */ - amod_type_keyword = 1, - /** - * @brief Harmful/malware links - * @deprecated Removed by Discord - */ - amod_type_harmful_link = 2, - /** - * @brief Check if content represents generic spam - */ - amod_type_spam = 3, - /** - * @brief Check if content contains words from discord pre-defined wordsets - */ - amod_type_keyword_preset = 4, - /** - * @brief Check if content contains more mentions than allowed - */ - amod_type_mention_spam = 5, -}; - -/** - * @brief Metadata associated with an automod action - */ -struct DPP_EXPORT automod_metadata : public json_interface { - /** - * @brief @brief Substrings which will be searched for in content (Maximum of 1000). - * - * Each keyword can be a phrase which contains multiple words. - * All keywords are case insensitive and can be up to 60 characters. - * - * Wildcard symbols (`*`) can be used to customize how each keyword will be matched. - * - * **Examples for the `*` wildcard symbol:** - * - * Prefix - word must start with the keyword - * - * | keyword | matches | - * |----------|-------------------------------------| - * | cat* | catch, Catapult, CAttLE | - * | the mat* | the matrix | - * - * Suffix - word must end with the keyword - * - * | keyword | matches | - * |----------|--------------------------| - * | *cat | wildcat, copyCat | - * | *the mat | breathe mat | - * - * Anywhere - keyword can appear anywhere in the content - * - * | keyword | matches | - * |-----------|-----------------------------| - * | \*cat* | location, eduCation | - * | \*the mat* | breathe matter | - * - * Whole Word - keyword is a full word or phrase and must be surrounded by whitespace at the beginning and end - * - * | keyword | matches | - * |---------|-------------| - * | cat | Cat | - * | the mat | the mat | - * - */ - std::vector keywords; - - /** - * @brief Regular expression patterns which will be matched against content (Maximum of 10). - * - * Only Rust flavored regex is currently supported, which can be tested in online editors such as [Rustexp](https://rustexp.lpil.uk/). - * Each regex pattern can be up to 260 characters. - */ - std::vector regex_patterns; - - /** - * @brief Preset keyword list types to moderate - * @see automod_preset_type - */ - std::vector presets; - - /** - * @brief Substrings which should not trigger the rule. - * - * Each keyword can be a phrase which contains multiple words. - * All keywords are case insensitive and can be up to 60 characters. - * - * Wildcard symbols (`*`) can be used to customize how each keyword will be matched. - * - * **Examples for the `*` wildcard symbol:** - * - * Prefix - word must start with the keyword - * - * | keyword | matches | - * |----------|-------------------------------------| - * | cat* | catch, Catapult, CAttLE | - * | the mat* | the matrix | - * - * Suffix - word must end with the keyword - * - * | keyword | matches | - * |----------|--------------------------| - * | *cat | wildcat, copyCat | - * | *the mat | breathe mat | - * - * Anywhere - keyword can appear anywhere in the content - * - * | keyword | matches | - * |-----------|-----------------------------| - * | \*cat* | location, eduCation | - * | \*the mat* | breathe matter | - * - * Whole Word - keyword is a full word or phrase and must be surrounded by whitespace at the beginning and end - * - * | keyword | matches | - * |---------|-------------| - * | cat | Cat | - * | the mat | the mat | - * - */ - std::vector allow_list; - - /** - * @brief Total number of unique role and user mentions allowed per message (Maximum of 50) - */ - uint8_t mention_total_limit; - - /** - * @brief Construct a new automod metadata object - */ - automod_metadata(); - - /** - * @brief Destroy the automod metadata object - */ - virtual ~automod_metadata(); - - /** - * @brief Fill object properties from JSON - * - * @param j JSON to fill from - * @return automod_metadata& Reference to self - */ - automod_metadata& fill_from_json(nlohmann::json* j); - - /** - * @brief Build a json string for this object - * - * @return std::string JSON string - */ - virtual std::string build_json(bool with_id = false) const; - -}; - -/** - * @brief Represents an automod action - */ -struct DPP_EXPORT automod_action : public json_interface { - /** - * @brief Type of action to take - */ - automod_action_type type; - - /** - * @brief Channel ID to which user content should be logged, for type dpp::amod_action_send_alert - */ - snowflake channel_id; - - /** - * @brief Additional explanation that will be shown to members whenever their message is blocked. For type dpp::amod_action_block_message - */ - std::string custom_message; - - /** - * @brief Timeout duration in seconds (Maximum of 2419200), for dpp::amod_action_timeout - */ - uint32_t duration_seconds; - - /** - * @brief Construct a new automod action object - */ - automod_action(); - - /** - * @brief Destroy the automod action object - */ - virtual ~automod_action(); - - /** - * @brief Fill object properties from JSON - * - * @param j JSON to fill from - * @return automod_action& Reference to self - */ - automod_action& fill_from_json(nlohmann::json* j); - - /** - * @brief Build a json string for this object - * - * @return std::string JSON string - */ - virtual std::string build_json(bool with_id = false) const; -}; - -/** - * @brief Represents an automod rule - */ -class DPP_EXPORT automod_rule : public managed, public json_interface { -public: - /** - * @brief the id of this rule - */ - snowflake id; - /** - * @brief the guild which this rule belongs to - */ - snowflake guild_id; - /** - * @brief the rule name - */ - std::string name; - /** - * @brief The user which first created this rule - */ - snowflake creator_id; - /** - * @brief The rule event type - */ - automod_event_type event_type; - /** - * @brief The rule trigger type - */ - automod_trigger_type trigger_type; - /** - * @brief The rule trigger metadata - */ - automod_metadata trigger_metadata; - /** - * @brief the actions which will execute when the rule is triggered - */ - std::vector actions; - /** - * @brief Whether the rule is enabled - */ - bool enabled; - /** - * @brief the role ids that should not be affected by the rule (Maximum of 20) - */ - std::vector exempt_roles; - /** - * @brief the channel ids that should not be affected by the rule (Maximum of 50) - */ - std::vector exempt_channels; - - /** - * @brief Construct a new automod rule object - */ - automod_rule(); - - /** - * @brief Destroy the automod rule object - */ - virtual ~automod_rule(); - - /** - * @brief Fill object properties from JSON - * - * @param j JSON to fill from - * @return automod_rule& Reference to self - */ - automod_rule& fill_from_json(nlohmann::json* j); - - /** - * @brief Build a json string for this object - * - * @return std::string JSON string - */ - virtual std::string build_json(bool with_id = false) const; -}; - -/** A group of automod rules. - */ -typedef std::unordered_map automod_rule_map; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/ban.h b/Source/ThirdParty/DPPLibrary/include/dpp/ban.h deleted file mode 100644 index f911884..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/ban.h +++ /dev/null @@ -1,67 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - -#pragma once -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief The ban class represents a ban on a guild. - * - */ -class DPP_EXPORT ban : public json_interface { -public: - /** The ban reason */ - std::string reason; - /** User ID the ban applies to */ - snowflake user_id; - - /** Constructor */ - ban(); - - /** Destructor */ - virtual ~ban() = default; - - /** Read class values from json object - * @param j A json object to read from - * @return A reference to self - */ - ban& fill_from_json(nlohmann::json* j); - - /** - * @brief Build json representation of a ban - * @param with_id Include ID in json - * - * @return std::string stringified json - */ - std::string build_json(bool with_id = false) const; -}; - -/** A group of bans - */ -typedef std::unordered_map ban_map; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/cache.h b/Source/ThirdParty/DPPLibrary/include/dpp/cache.h deleted file mode 100644 index 795186e..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/cache.h +++ /dev/null @@ -1,272 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - -#pragma once -#include -#include -#include -#include -#include -#include - -namespace dpp { - -extern DPP_EXPORT std::unordered_map deletion_queue; -extern DPP_EXPORT std::mutex deletion_mutex; - -/** forward declaration */ -class guild_member; - -/** - * @brief A cache object maintains a cache of dpp::managed objects. - * - * This is for example users, channels or guilds. You may instantiate - * your own caches, to contain any type derived from dpp::managed including - * your own types. - * - * @note This class is critical to the operation of the library and therefore - * designed with thread safety in mind. - * @tparam T class type to store, which should be derived from dpp::managed. - */ -template class cache { -private: - /** - * @brief Mutex to protect the cache - * - * This is a shared mutex so reading is cheap. - */ - std::shared_mutex cache_mutex; - - /** - * @brief Container of pointers to cached items - */ - std::unordered_map* cache_map; -public: - - /** - * @brief Construct a new cache object. - * - * Caches must contain classes derived from dpp::managed. - */ - cache() { - cache_map = new std::unordered_map; - } - - /** - * @brief Destroy the cache object - * - * @note This does not delete objects stored in the cache. - */ - ~cache() { - std::unique_lock l(cache_mutex); - delete cache_map; - } - - /** - * @brief Store an object in the cache. Passing a nullptr will have no effect. - * - * The object must be derived from dpp::managed and should be allocated on the heap. - * Generally this is done via `new`. Once stored in the cache the lifetime of the stored - * object is managed by the cache class unless the cache is deleted (at which point responsibility - * for deleting the object returns to its allocator). Objects stored are removed when the - * cache::remove() method is called by placing them into a garbage collection queue for deletion - * within the next 60 seconds, which are then deleted in bulk for efficiency and to aid thread - * safety. - * - * @note Adding an object to the cache with an ID which already exists replaces that entry. - * The previously entered cache item is inserted into the garbage collection queue for deletion - * similarly to if cache::remove() was called first. - * - * @param object object to store. Storing a pointer to the cache relinquishes ownership to the cache object. - */ - void store(T* object) { - if (!object) { - return; - } - std::unique_lock l(cache_mutex); - auto existing = cache_map->find(object->id); - if (existing == cache_map->end()) { - (*cache_map)[object->id] = object; - } else if (object != existing->second) { - /* Flag old pointer for deletion and replace */ - std::lock_guard delete_lock(deletion_mutex); - deletion_queue[existing->second] = time(NULL); - (*cache_map)[object->id] = object; - } - } - - /** - * @brief Remove an object from the cache. - * - * @note The cache class takes ownership of the pointer, and calling this method will - * cause deletion of the object within the next 60 seconds by means of a garbage - * collection queue. This queue aids in efficiency by freeing memory in bulk, and - * assists in thread safety by ensuring that all deletions can be locked and freed - * at the same time. - * - * @param object object to remove. Passing a nullptr will have no effect. - */ - void remove(T* object) { - if (!object) { - return; - } - std::unique_lock l(cache_mutex); - std::lock_guard delete_lock(deletion_mutex); - auto existing = cache_map->find(object->id); - if (existing != cache_map->end()) { - cache_map->erase(existing); - deletion_queue[object] = time(NULL); - } - } - - /** - * @brief Find an object in the cache by id. - * - * The cache is searched for the object. All dpp::managed objects have a snowflake id - * (this is the only field dpp::managed actually has). - * - * @warning Do not hang onto objects returned by cache::find() indefinitely. They may be - * deleted at a later date if cache::remove() is called. If persistence is required, - * take a copy of the object after checking its pointer is non-null. - * - * @param id Object snowflake id to find - * @return Found object or nullptr if the object with this id does not exist. - */ - T* find(snowflake id) { - std::shared_lock l(cache_mutex); - auto r = cache_map->find(id); - if (r != cache_map->end()) { - return r->second; - } - return nullptr; - } - - /** - * @brief Return a count of the number of items in the cache. - * - * This is used by the library e.g. to count guilds, users, and roles - * stored within caches. - * get - * @return uint64_t count of items in the cache - */ - uint64_t count() { - std::shared_lock l(cache_mutex); - return cache_map->size(); - } - - /** - * @brief Return the cache's locking mutex. - * - * Use this whenever you manipulate or iterate raw elements in the cache! - * - * @note If you are only reading from the cache's container, wrap this - * mutex in `std::shared_lock`, else wrap it in a `std::unique_lock`. - * Shared locks will allow for multiple readers whilst blocking writers, - * and unique locks will allow only one writer whilst blocking readers - * and writers. - * - * **Example:** - * - * ```cpp - * dpp::cache* c = dpp::get_guild_cache(); - * std::unordered_map& gc = c->get_container(); - * std::shared_lock l(c->get_mutex()); // MUST LOCK HERE - * for (auto g = gc.begin(); g != gc.end(); ++g) { - * dpp::guild* gp = (dpp::guild*)g->second; - * // Do something here with the guild* in 'gp' - * } - * ``` - * - * @return The mutex used to protect the container - */ - std::shared_mutex& get_mutex() { - return this->cache_mutex; - } - - /** - * @brief Get the container unordered map - * - * @warning Be sure to use cache::get_mutex() correctly if you - * manipulate or iterate the map returned by this method! If you do - * not, this is not thread safe and will cause crashes! - * - * @see cache::get_mutex - * - * @return A reference to the cache's container map - */ - auto & get_container() { - return *(this->cache_map); - } - - /** - * @brief "Rehash" a cache by reallocating the map and copying - * all elements into the new one. - * - * Over a long running timeframe, unordered maps can grow in size - * due to bucket allocation, this function frees that unused memory - * to keep the maps in control over time. If this is an issue which - * is apparent with your use of dpp::cache objects, you should periodically - * call this method. - * - * @warning May be time consuming! This function is O(n) in relation to the - * number of cached entries. - */ - void rehash() { - std::unique_lock l(cache_mutex); - std::unordered_map* n = new std::unordered_map; - n->reserve(cache_map->size()); - for (auto t = cache_map->begin(); t != cache_map->end(); ++t) { - n->insert(*t); - } - delete cache_map; - cache_map = n; - } - - /** - * @brief Get "real" size in RAM of the cached objects - * - * This does not include metadata used to maintain the unordered map itself. - * - * @return size_t size of cache in bytes - */ - size_t bytes() { - std::shared_lock l(cache_mutex); - return sizeof(this) + (cache_map->bucket_count() * sizeof(size_t)); - } - -}; - -/** Run garbage collection across all caches removing deleted items - * that have been deleted over 60 seconds ago. - */ -void DPP_EXPORT garbage_collection(); - -#define cache_decl(type, setter, getter, counter) /** Find an object in the cache by id. @return type* Pointer to the object or nullptr when it's not found */ DPP_EXPORT class type * setter (snowflake id); DPP_EXPORT cache * getter (); /** Get the amount of cached type objects. */ DPP_EXPORT uint64_t counter (); - -/* Declare major caches */ -cache_decl(user, find_user, get_user_cache, get_user_count); -cache_decl(guild, find_guild, get_guild_cache, get_guild_count); -cache_decl(role, find_role, get_role_cache, get_role_count); -cache_decl(channel, find_channel, get_channel_cache, get_channel_count); -cache_decl(emoji, find_emoji, get_emoji_cache, get_emoji_count); - -}; - diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/channel.h b/Source/ThirdParty/DPPLibrary/include/dpp/channel.h deleted file mode 100644 index 2b6bf6b..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/channel.h +++ /dev/null @@ -1,813 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** @brief Flag integers as received from and sent to discord */ -enum channel_type : uint8_t { - CHANNEL_TEXT = 0, //!< a text channel within a server - DM = 1, //!< a direct message between users - CHANNEL_VOICE = 2, //!< a voice channel within a server - /** - * @brief a direct message between multiple users - * @deprecated this channel type was intended to be used with the now deprecated GameBridge SDK. Existing group dms with bots will continue to function, but newly created channels will be unusable - */ - GROUP_DM = 3, - CHANNEL_CATEGORY = 4, //!< an organizational category that contains up to 50 channels - CHANNEL_ANNOUNCEMENT = 5, //!< a channel that users can follow and crosspost into their own server - /** - * @brief a channel in which game developers can sell their game on Discord - * @deprecated store channels are deprecated by Discord - */ - CHANNEL_STORE = 6, - CHANNEL_ANNOUNCEMENT_THREAD = 10, //!< a temporary sub-channel within a GUILD_ANNOUNCEMENT channel - CHANNEL_PUBLIC_THREAD = 11, //!< a temporary sub-channel within a GUILD_TEXT or GUILD_FORUM channel - CHANNEL_PRIVATE_THREAD = 12, //!< a temporary sub-channel within a GUILD_TEXT channel that is only viewable by those invited and those with the MANAGE_THREADS permission - CHANNEL_STAGE = 13, //!< a "stage" channel, like a voice channel with one authorised speaker - CHANNEL_DIRECTORY = 14, //!< the channel in a [hub](https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ) containing the listed servers - CHANNEL_FORUM = 15 //!< forum channel that can only contain threads -}; - -/** @brief Our flags as stored in the object - * @note The bottom four bits of this flag are reserved to contain the channel_type values - * listed above as provided by Discord. If discord add another value > 15, we will have to - * shuffle these values upwards by one bit. - */ -enum channel_flags : uint16_t { - /// NSFW Gated Channel - c_nsfw = 0b0000000000010000, - /// Video quality forced to 720p - c_video_quality_720p = 0b0000000000100000, - /// Lock permissions (only used when updating channel positions) - c_lock_permissions = 0b0000000001000000, - /// Thread is pinned to the top of its parent forum channel - c_pinned_thread = 0b0000000010000000, - /// Whether a tag is required to be specified when creating a thread in a forum channel. Tags are specified in the thread::applied_tags field. - c_require_tag = 0b0000000100000000, - /* Note that the 9th and 10th bit are used for the forum layout type */ -}; - -/** - * @brief The flags in discord channel's raw "flags" field. We use these for serialisation only, right now. Might be better to create a new field than to make the existing channel::flags from uint8_t to uint16_t, if discord adds more flags in future. - */ -enum discord_channel_flags : uint8_t { - /// Thread is pinned to the top of its parent forum channel - dc_pinned_thread = 1 << 1, - /// Whether a tag is required to be specified when creating a thread in a forum channel. Tags are specified in the thread::applied_tags field. - dc_require_tag = 1 << 4, -}; - -/** - * @brief Types for sort posts in a forum channel - */ -enum default_forum_sort_order_t : uint8_t { - /// Sort forum posts by activity (default) - so_latest_activity = 0, - /// Sort forum posts by creation time (from most recent to oldest) - so_creation_date = 1, -}; - -/** - * @brief Types of forum layout views that indicates how the threads in a forum channel will be displayed for users by default - */ -enum forum_layout_type : uint8_t { - fl_not_set = 0, //!< No default has been set for the forum channel - fl_list_view = 1, //!< Display posts as a list - fl_gallery_view = 2, //!< Display posts as a collection of tiles -}; - -/** - * @brief channel permission overwrite types - */ -enum overwrite_type : uint8_t { - /// Role - ot_role = 0, - /// Member - ot_member = 1 -}; - -/** - * @brief Channel permission overwrites - */ -struct DPP_EXPORT permission_overwrite { - /// ID of the role or the member - snowflake id; - /// Bitmask of allowed permissions - permission allow; - /// Bitmask of denied permissions - permission deny; - /// Type of overwrite. See dpp::overwrite_type - uint8_t type; - - /** - * @brief Construct a new permission_overwrite object - */ - permission_overwrite(); - - /** - * @brief Construct a new permission_overwrite object - * @param id ID of the role or the member to create the overwrite for - * @param allow Bitmask of allowed permissions (refer to enum dpp::permissions) for this user/role in this channel - * @param deny Bitmask of denied permissions (refer to enum dpp::permissions) for this user/role in this channel - * @param type Type of overwrite - */ - permission_overwrite(snowflake id, uint64_t allow, uint64_t deny, overwrite_type type); -}; - - -/** - * @brief metadata for threads - */ -struct DPP_EXPORT thread_metadata { - /// Timestamp when the thread's archive status was last changed, used for calculating recent activity - time_t archive_timestamp; - /// The duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 - uint16_t auto_archive_duration; - /// Whether a thread is archived - bool archived; - /// Whether a thread is locked. When a thread is locked, only users with `MANAGE_THREADS` can unarchive it - bool locked; - /// Whether non-moderators can add other non-moderators. Only for private threads - bool invitable; -}; - -/** - * @brief Auto archive duration of threads which will stop showing in the channel list after the specified period of inactivity. - * Defined as an enum to fit into 1 byte. Internally it'll be translated to minutes to match the API - */ -enum auto_archive_duration_t : uint8_t { - /// Auto archive duration of 1 hour. (60 minutes) - arc_1_hour = 1, - /// Auto archive duration of 1 day. (1440 minutes) - arc_1_day = 2, - /// Auto archive duration of 3 days. (4320 minutes) - arc_3_days = 3, - /// Auto archive duration of 1 week. (10080 minutes) - arc_1_week = 4, -}; - -/** - * @brief represents membership of a user with a thread - */ -struct DPP_EXPORT thread_member -{ - /// ID of the thread member is part of - snowflake thread_id; - /// ID of the member - snowflake user_id; - /// The time when user last joined the thread - time_t joined; - /// Any user-thread settings, currently only used for notifications - uint32_t flags; - - /** - * @brief Read struct values from a json object - * @param j json to read values from - * @return A reference to self - */ - thread_member& fill_from_json(nlohmann::json* j); -}; - -/** - * @brief Represents a tag that is able to be applied to a thread in a forum channel - */ -struct DPP_EXPORT forum_tag : public managed { - /** The name of the tag (0-20 characters) */ - std::string name; - /** The emoji of the tag. Contains either nothing, the id of a guild's custom emoji or the unicode character of the emoji */ - std::variant emoji; - /** Whether this tag can only be added to or removed from threads by a member with the `MANAGE_THREADS` permission */ - bool moderated; - - /** Constructor */ - forum_tag(); - - /** - * @brief Constructor - * - * @param name The name of the tag. It will be truncated to the maximum length of 20 UTF-8 characters. - */ - forum_tag(const std::string& name); - - /** Destructor */ - virtual ~forum_tag(); - - /** - * @brief Read struct values from a json object - * @param j json to read values from - * @return A reference to self - */ - forum_tag& fill_from_json(nlohmann::json* j); - - /** - * @brief Build json for this forum_tag object - * - * @param with_id include the ID in the json - * @return std::string JSON string - */ - std::string build_json(bool with_id = false) const; - - /** - * @brief Set name of this forum_tag object - * - * @param name Name to set - * @return Reference to self, so these method calls may be chained - * - * @note name will be truncated to 20 chars, if longer - */ - forum_tag& set_name(const std::string& name); -}; - -/** @brief A group of thread member objects*/ -typedef std::unordered_map thread_member_map; - -/** - * @brief A definition of a discord channel. - * There are one of these for every channel type except threads. Threads are - * special snowflakes. Get it? A Discord pun. Hahaha. .... I'll get my coat. - */ -class DPP_EXPORT channel : public managed, public json_interface { -public: - /** Channel name (1-100 characters) */ - std::string name; - - /** Channel topic (0-4096 characters for forum channels, 0-1024 characters for all others) */ - std::string topic; - - /** - * @brief Voice region if set for voice channel, otherwise empty string - */ - std::string rtc_region; - - /** DM recipients */ - std::vector recipients; - - /** Permission overwrites to apply to base permissions */ - std::vector permission_overwrites; - - /** A set of tags that can be used in a forum channel */ - std::vector available_tags; - - /** - * @brief The emoji to show as the default reaction button on a forum post. - * Contains either nothing, the id of a guild's custom emoji or the unicode character of the emoji - */ - std::variant default_reaction; - - /** - * @brief Channel icon (for group DMs) - */ - utility::iconhash icon; - - /** User ID of the creator for group DMs or threads */ - snowflake owner_id; - - /** Parent ID (for guild channels: id of the parent category, for threads: id of the text channel this thread was created) */ - snowflake parent_id; - - /** Guild id of the guild that owns the channel */ - snowflake guild_id; - - /** ID of last message to be sent to the channel (may not point to an existing or valid message or thread) */ - snowflake last_message_id; - - /** Timestamp of last pinned message */ - time_t last_pin_timestamp; - - /** - * @brief This is only filled when the channel is part of the `resolved` set - * sent within an interaction. Any other time it contains zero. When filled, - * it contains the calculated permission bitmask of the user issuing the command - * within this channel. - */ - permission permissions; - - /** Sorting position, lower number means higher up the list */ - uint16_t position; - - /** the bitrate (in kilobits) of the voice channel */ - uint16_t bitrate; - - /** amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages or manage_channel, are unaffected*/ - uint16_t rate_limit_per_user; - - /** The initial `rate_limit_per_user` to set on newly created threads in a channel. This field is copied to the thread at creation time and does not live update */ - uint16_t default_thread_rate_limit_per_user; - - /** - * @brief Default duration, copied onto newly created threads. Used by the clients, not the API. - * Threads will stop showing in the channel list after the specified period of inactivity. Defaults to dpp::arc_1_day - */ - auto_archive_duration_t default_auto_archive_duration; - - /** the default sort order type used to order posts in forum channels */ - default_forum_sort_order_t default_sort_order; - - /** Flags bitmap (dpp::channel_flags) */ - uint16_t flags; - - /** Maximum user limit for voice channels (0-99) */ - uint8_t user_limit; - - /** Constructor */ - channel(); - - /** Destructor */ - virtual ~channel(); - - /** - * @brief Create a mentionable channel. - * @param id The ID of the channel. - * @return std::string The formatted mention of the channel. - */ - static std::string get_mention(const snowflake& id); - - /** Read class values from json object - * @param j A json object to read from - * @return A reference to self - */ - channel& fill_from_json(nlohmann::json* j); - - /** - * @brief Build json for this channel object - * - * @param with_id include the ID in the json - * @return std::string JSON string - */ - virtual std::string build_json(bool with_id = false) const; - - /** - * @brief Set name of this channel object - * - * @param name Name to set - * @return Reference to self, so these method calls may be chained - * - * @note name will be truncated to 100 chars, if longer - * @throw dpp::length_exception if length < 1 - */ - channel& set_name(const std::string& name); - - /** - * @brief Set topic of this channel object - * - * @param topic Topic to set - * @return Reference to self, so these method calls may be chained - * - * @note topic will be truncated to 1024 chars, if longer - */ - channel& set_topic(const std::string& topic); - - /** - * @brief Set type of this channel object - * - * @param type Channel type to set - * @return Reference to self, so these method calls may be chained - */ - channel& set_type(channel_type type); - - /** - * @brief Set the default forum layout type for the forum channel - * - * @param layout_type The layout type - * @return Reference to self, so these method calls may be chained - */ - channel& set_default_forum_layout(forum_layout_type layout_type); - - /** - * @brief Set the default forum sort order for the forum channel - * - * @param sort_order The sort order - * @return Reference to self, so these method calls may be chained - */ - channel& set_default_sort_order(default_forum_sort_order_t sort_order); - - /** - * @brief Set flags for this channel object - * - * @param flags Flag bitmask to set from dpp::channel_flags - * @return Reference to self, so these method calls may be chained - */ - channel& set_flags(const uint16_t flags); - - /** - * @brief Add (bitwise OR) a flag to this channel object - * - * @param flag Flag bit to add from dpp::channel_flags - * @return Reference to self, so these method calls may be chained - */ - channel& add_flag(const channel_flags flag); - - /** - * @brief Remove (bitwise NOT AND) a flag from this channel object - * - * @param flag Flag bit to remove from dpp::channel_flags - * @return Reference to self, so these method calls may be chained - */ - channel& remove_flag(const channel_flags flag); - - /** - * @brief Set position of this channel object - * - * @param position Position to set - * @return Reference to self, so these method calls may be chained - */ - channel& set_position(const uint16_t position); - - /** - * @brief Set guild_id of this channel object - * - * @param guild_id Guild ID to set - * @return Reference to self, so these method calls may be chained - */ - channel& set_guild_id(const snowflake guild_id); - - /** - * @brief Set parent_id of this channel object - * - * @param parent_id Parent ID to set - * @return Reference to self, so these method calls may be chained - */ - channel& set_parent_id(const snowflake parent_id); - - /** - * @brief Set user_limit of this channel object - * - * @param user_limit Limit to set - * @return Reference to self, so these method calls may be chained - */ - channel& set_user_limit(const uint8_t user_limit); - - /** - * @brief Set bitrate of this channel object - * - * @param bitrate Bitrate to set (in kilobits) - * @return Reference to self, so these method calls may be chained - */ - channel& set_bitrate(const uint16_t bitrate); - - /** - * @brief Set nsfw property of this channel object - * - * @param is_nsfw true, if channel is nsfw - * @return Reference to self, so these method calls may be chained - */ - channel& set_nsfw(const bool is_nsfw); - - /** - * @brief Set lock permissions property of this channel object - * Used only with the reorder channels method - * - * @param is_lock_permissions true, if we are to inherit permissions from the category - * @return Reference to self, so these method calls may be chained - */ - channel& set_lock_permissions(const bool is_lock_permissions); - - /** - * @brief Set rate_limit_per_user of this channel object - * - * @param rate_limit_per_user rate_limit_per_user (slowmode in sec) to set - * @return Reference to self, so these method calls may be chained - */ - channel& set_rate_limit_per_user(const uint16_t rate_limit_per_user); - - /** - * @brief Add a permission_overwrite to this channel object - * - * @param id ID of the role or the member you want to add overwrite for - * @param type type of overwrite - * @param allowed_permissions bitmask of allowed permissions (refer to enum dpp::permissions) for this user/role in this channel - * @param denied_permissions bitmask of denied permissions (refer to enum dpp::permissions) for this user/role in this channel - * - * @return Reference to self, so these method calls may be chained - */ - channel& add_permission_overwrite(const snowflake id, const overwrite_type type, const uint64_t allowed_permissions, const uint64_t denied_permissions); - - /** - * @brief Get the channel type - * - * @return channel_type Channel type - */ - channel_type get_type() const; - - /** - * @brief Get the default forum layout type used to display posts in forum channels - * - * @return forum_layout_types Forum layout type - */ - forum_layout_type get_default_forum_layout() const; - - /** - * @brief Get the mention ping for the channel - * - * @return std::string mention - */ - std::string get_mention() const; - - /** - * @brief Get the overall permissions for a member in this channel, including channel overwrites, role permissions and admin privileges. - * - * @param user The user to resolve the permissions for - * @return permission Permission overwrites for the member. Made of bits in dpp::permissions. - * @note Requires role cache to be enabled (it's enabled by default). - * - * @note This is an alias for guild::permission_overwrites and searches for the guild in the cache, - * so consider using guild::permission_overwrites if you already have the guild object. - * - * @warning The method will search for the guild member in the cache by the users id. - * If the guild member is not in cache, the method will always return 0. - */ - permission get_user_permissions(const class user* user) const; - - /** - * @brief Get the overall permissions for a member in this channel, including channel overwrites, role permissions and admin privileges. - * - * @param member The member to resolve the permissions for - * @return permission Permission overwrites for the member. Made of bits in dpp::permissions. - * @note Requires role cache to be enabled (it's enabled by default). - * - * @note This is an alias for guild::permission_overwrites and searches for the guild in the cache, - * so consider using guild::permission_overwrites if you already have the guild object. - */ - permission get_user_permissions(const class guild_member &member) const; - - /** - * @brief Return a map of members on the channel, built from the guild's - * member list based on which members have the VIEW_CHANNEL permission. - * Does not return reliable information for voice channels, use - * dpp::channel::get_voice_members() instead for this. - * @return A map of guild members keyed by user id. - * @note If the guild this channel belongs to is not in the cache, the function will always return 0. - */ - std::map get_members(); - - /** - * @brief Get a map of members in this channel, if it is a voice channel. - * The map is keyed by snowflake id of the user. - * - * @return std::map The voice members of the channel - */ - std::map get_voice_members(); - - /** - * @brief Get the channel's icon url (if its a group DM), otherwise returns an empty string - * - * @param size The size of the icon in pixels. It can be any power of two between 16 and 4096, - * otherwise the default sized icon is returned. - * @param format The format to use for the avatar. It can be one of `i_webp`, `i_jpg` or `i_png`. - * @return std::string icon url or an empty string, if required attributes are missing or an invalid format was passed - */ - std::string get_icon_url(uint16_t size = 0, const image_type format = i_png) const; - - /** - * @brief Returns true if the channel is NSFW gated - * - * @return true if NSFW - */ - bool is_nsfw() const; - - /** - * @brief Returns true if the permissions are to be synced with the category it is in. - * Used only and set manually when using the reorder channels method. - * - * @return true if keeping permissions - */ - bool is_locked_permissions() const; - - /** - * @brief Returns true if the channel is a text channel - * - * @return true if text channel - */ - bool is_text_channel() const; - - /** - * @brief Returns true if the channel is a DM - * - * @return true if is a DM - */ - bool is_dm() const; - - /** - * @brief Returns true if the channel is a voice channel - * - * @return true if voice channel - */ - bool is_voice_channel() const; - - /** - * @brief Returns true if the channel is a group DM channel - * - * @return true if group DM - */ - bool is_group_dm() const; - - /** - * @brief Returns true if the channel is a category - * - * @return true if a category - */ - bool is_category() const; - - /** - * @brief Returns true if the channel is a forum - * - * @return true if a forum - */ - bool is_forum() const; - - /** - * @brief Returns true if the channel is an announcement channel - * - * @return true if announcement channel - */ - bool is_news_channel() const; - - /** - * @brief Returns true if the channel is a store channel - * @deprecated store channels are deprecated by Discord - * - * @return true if store channel - */ - bool is_store_channel() const; - - /** - * @brief Returns true if the channel is a stage channel - * - * @return true if stage channel - */ - bool is_stage_channel() const; - - /** - * @brief Returns true if video quality is auto - * - * @return true if video quality is auto - */ - bool is_video_auto() const; - - /** - * @brief Returns true if video quality is 720p - * - * @return true if video quality is 720p - */ - bool is_video_720p() const; - - /** - * @brief Returns true if channel is a pinned thread in forum - * - * @return true, if channel is a pinned thread in forum - */ - bool is_pinned_thread() const; - - /** - * @brief Returns true if a tag is required to be specified when creating a thread in a forum channel - * - * @return true, if a tag is required to be specified when creating a thread in a forum channel - */ - bool is_tag_required() const; - -}; - -/** @brief A definition of a discord thread. - * A thread is a superset of a channel. Not to be confused with `std::thread`! - */ -class DPP_EXPORT thread : public channel { -public: - /** - * @brief Thread member of current user if joined to the thread. - * Note this is only set by certain api calls otherwise contains default data - */ - thread_member member; - - /** Thread metadata (threads) */ - thread_metadata metadata; - - /** Created message. Only filled within the cluster::thread_create_in_forum() method */ - message msg; - - /** - * A list of dpp::forum_tag IDs that have been applied to a thread in a forum channel - */ - std::vector applied_tags; - - /** - * @brief Number of messages ever sent in the thread. - * It's similar to thread::message_count on message creation, but will not decrement the number when a message is deleted - */ - uint32_t total_messages_sent; - - /** - * @brief Number of messages (not including the initial message or deleted messages) of the thread. - * For threads created before July 1, 2022, the message count is inaccurate when it's greater than 50. - */ - uint8_t message_count; - - /** Approximate count of members in a thread (stops counting at 50) */ - uint8_t member_count; - - /** - * @brief Construct a new thread object - */ - thread(); - - /** - * @brief Returns true if the thread is within an announcement channel - * - * @return true if announcement thread - */ - bool is_news_thread() const; - - /** - * @brief Returns true if the channel is a public thread - * - * @return true if public thread - */ - bool is_public_thread() const; - - /** - * @brief Returns true if the channel is a private thread - * - * @return true if private thread - */ - bool is_private_thread() const; - - /** Read class values from json object - * @param j A json object to read from - * @return A reference to self - */ - thread& fill_from_json(nlohmann::json* j); - - /** - * @brief Destroy the thread object - */ - virtual ~thread(); - - /** - * @brief Build json for this thread object - * - * @param with_id include the ID in the json - * @return std::string JSON string - */ - std::string build_json(bool with_id = false) const; - -}; - - -/** - * @brief Serialize a thread_metadata object to json - * - * @param j JSON object to serialize to - * @param tmdata object to serialize - */ -void to_json(nlohmann::json& j, const thread_metadata& tmdata); - -/** - * @brief Serialize a permission_overwrite object to json - * - * @param j JSON object to serialize to - * @param po object to serialize - */ -void to_json(nlohmann::json& j, const permission_overwrite& po); - -/** - * @brief A group of channels - */ -typedef std::unordered_map channel_map; - -/** - * @brief A group of threads - */ -typedef std::unordered_map thread_map; - -}; - diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/cluster.h b/Source/ThirdParty/DPPLibrary/include/dpp/cluster.h deleted file mode 100644 index 58e0455..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/cluster.h +++ /dev/null @@ -1,3360 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - - -namespace dpp { - -using json = nlohmann::json; - -/** - * @brief Types of startup for cluster::start() - */ -enum start_type : bool { - /** - * @brief Wait forever on a condition variable. - * The cluster will spawn threads for each shard - * and start() will not return in normal operation. - */ - st_wait = false, - - /** - * @brief Return immediately after starting shard threads. - * If you set the parameter of cluster::start() to - * this value, you will have to manage the lifetime - * and scope of your cluster object yourself. Taking it - * out of scope or deleting its pointer will terminate - * the bot. - */ - st_return = true, -}; - -/** @brief The cluster class represents a group of shards and a command queue for sending and - * receiving commands from discord via HTTP. You should usually instantiate a cluster object - * at the very least to make use of the library. - */ -class DPP_EXPORT cluster { - - friend class discord_client; - friend class discord_voice_client; - - /** - * @brief default gateway for connecting the websocket. - */ - std::string default_gateway; - - /** - * @brief queue system for commands sent to Discord, and any replies - */ - request_queue* rest; - - /** - * @brief queue system for arbitrary HTTP requests sent by the user to sites other than Discord - */ - request_queue* raw_rest; - - /** - * @brief True if to use compression on shards - */ - bool compressed; - - /** - * @brief Lock to prevent concurrent access to dm_channels - */ - std::mutex dm_list_lock; - - /** - * @brief Start time of cluster - */ - time_t start_time; - - /** - * @brief Active DM channels for the bot - */ - std::unordered_map dm_channels; - - /** - * @brief Active shards on this cluster. Shard IDs may have gaps between if there - * are multiple clusters. - */ - shard_list shards; - - /** - * @brief List of all active registered timers - */ - timer_reg_t timer_list; - - /** - * @brief List of timers by time - */ - timer_next_t next_timer; - - /** - * @brief Tick active timers - */ - void tick_timers(); - - /** - * @brief Reschedule a timer for its next tick - * - * @param t Timer to reschedule - */ - void timer_reschedule(timer_t* t); -public: - /** - * @brief Current bot token for all shards on this cluster and all commands sent via HTTP - */ - std::string token; - - /** - * @brief Last time the bot sent an IDENTIFY - */ - time_t last_identify; - - /** - * @brief Current bitmask of gateway intents - */ - uint32_t intents; - - /** - * @brief Total number of shards across all clusters - */ - uint32_t numshards; - - /** - * @brief ID of this cluster, between 0 and MAXCLUSTERS-1 inclusive - */ - uint32_t cluster_id; - - /** - * @brief Total number of clusters that are active - */ - uint32_t maxclusters; - - /** - * @brief REST latency (HTTPS ping) in seconds - */ - double rest_ping; - - /** - * @brief The details of the bot user. This is assumed to be identical across all shards - * in the cluster. Each connecting shard updates this information. - */ - dpp::user me; - - /** - * @brief Current cache policy for the cluster - */ - cache_policy_t cache_policy; - - /** - * @brief Websocket mode for all shards in the cluster, either ws_json or ws_etf. - * Production bots should use ETF, while development bots should use JSON. - */ - websocket_protocol_t ws_mode; - - /** - * @brief Condition variable notified when the cluster is terminating. - */ - std::condition_variable terminating; - - /** - * @brief Constructor for creating a cluster. All but the token are optional. - * @param token The bot token to use for all HTTP commands and websocket connections - * @param intents A bitmask of dpd::intents values for all shards on this cluster. This is required to be sent for all bots with over 100 servers. - * @param shards The total number of shards on this bot. If there are multiple clusters, then (shards / clusters) actual shards will run on this cluster. - * If you omit this value, the library will attempt to query the Discord API for the correct number of shards to start. - * @param cluster_id The ID of this cluster, should be between 0 and MAXCLUSTERS-1 - * @param maxclusters The total number of clusters that are active, which may be on separate processes or even separate machines. - * @param compressed Whether or not to use compression for shards on this cluster. Saves a ton of bandwidth at the cost of some CPU - * @param policy Set the user caching policy for the cluster, either lazy (only cache users/members when they message the bot) or aggressive (request whole member lists on seeing new guilds too) - * @param request_threads The number of threads to allocate for making HTTP requests to Discord. This defaults to 12. You can increase this at runtime via the object returned from get_rest(). - * @param request_threads_raw The number of threads to allocate for making HTTP requests to sites outside of Discord. This defaults to 1. You can increase this at runtime via the object returned from get_raw_rest(). - * @throw dpp::exception Thrown on windows, if WinSock fails to initialise, or on any other system if a dpp::request_queue fails to construct - */ - cluster(const std::string& token, uint32_t intents = i_default_intents, uint32_t shards = 0, uint32_t cluster_id = 0, uint32_t maxclusters = 1, bool compressed = true, cache_policy_t policy = { cp_aggressive, cp_aggressive, cp_aggressive }, uint32_t request_threads = 12, uint32_t request_threads_raw = 1); - - /** - * @brief dpp::cluster is non-copyable - */ - cluster(const cluster&) = delete; - - /** - * @brief dpp::cluster is non-moveable - */ - cluster(const cluster&&) = delete; - - /** - * @brief Destroy the cluster object - */ - virtual ~cluster(); - - /** - * @brief End cluster execution without destructing it. - * To restart the cluster, call cluster::start() again. - */ - void shutdown(); - - /** - * @brief Get the rest_queue object which handles HTTPS requests to Discord - * @return request_queue* pointer to request_queue object - */ - request_queue* get_rest(); - - /** - * @brief Get the raw rest_queue object which handles all HTTP(S) requests that are not directed at Discord - * @return request_queue* pointer to request_queue object - */ - request_queue* get_raw_rest(); - - /** - * @brief Set the websocket protocol for all shards on this cluster. - * You should call this method before cluster::start. - * Generally ws_etf is faster, but provides less facilities for debugging should something - * go wrong. It is recommended to use ETF in production and JSON in development. - * - * @param mode websocket protocol to use, either ws_json or ws_etf. - * @return cluster& Reference to self for chaining. - */ - cluster& set_websocket_protocol(websocket_protocol_t mode); - - /** - * @brief Set the audit log reason for the next REST call to be made. - * This is set per-thread, so you must ensure that if you call this method, your request that - * is associated with the reason happens on the same thread where you set the reason. - * Once the next call is made, the audit log reason is cleared for this thread automatically. - * - * Example: - * ``` - * bot.set_audit_reason("Too much abusive content") - * .channel_delete(my_channel_id); - * ``` - * - * @param reason The reason to set for the next REST call on this thread - * @return cluster& Reference to self for chaining. - */ - cluster& set_audit_reason(const std::string &reason); - - /** - * @brief Clear the audit log reason for the next REST call to be made. - * This is set per-thread, so you must ensure that if you call this method, your request that - * is associated with the reason happens on the same thread where you set the reason. - * Once the next call is made, the audit log reason is cleared for this thread automatically. - * - * Example: - * ``` - * bot.set_audit_reason("Won't be sent") - * .clear_audit_reason() - * .channel_delete(my_channel_id); - * ``` - * - * @return cluster& Reference to self for chaining. - */ - cluster& clear_audit_reason(); - - /** - * @brief Get the audit reason set for the next REST call to be made on this thread. - * This is set per-thread, so you must ensure that if you call this method, your request that - * is associated with the reason happens on the same thread where you set the reason. - * Once the next call is made, the audit log reason is cleared for this thread automatically. - * - * @note This method call clears the audit reason when it returns it. - * - * @return std::string The audit reason to be used. - * - */ - std::string get_audit_reason(); - - /** - * @brief Sets the address of the default gateway, for connecting the websockets. - * - * @return cluster& Reference to self for chaining. - */ - cluster& set_default_gateway(std::string& default_gateway); - - /** - * @brief Log a message to whatever log the user is using. - * The logged message is passed up the chain to the on_log event in user code which can then do whatever - * it wants to do with it. - * @param severity The log level from dpp::loglevel - * @param msg The log message to output - */ - void log(dpp::loglevel severity, const std::string &msg) const; - - /** - * @brief Start a timer. Every `frequency` seconds, the callback is called. - * - * @param on_tick The callback lambda to call for this timer when ticked - * @param on_stop The callback lambda to call for this timer when it is stopped - * @param frequency How often to tick the timer in seconds - * @return timer A handle to the timer, used to remove that timer later - */ - timer start_timer(timer_callback_t on_tick, uint64_t frequency, timer_callback_t on_stop = {}); - - /** - * @brief Stop a ticking timer - * - * @param t Timer handle received from cluster::start_timer - * @return bool True if the timer was stopped, false if it did not exist - * @note If the timer has an on_stop lambda, the on_stop lambda will be called. - */ - bool stop_timer(timer t); - - /** - * @brief Get the dm channel for a user id - * - * @param user_id the user id to get the dm channel for - * @return Returns 0 on failure - */ - snowflake get_dm_channel(snowflake user_id); - - /** - * @brief Set the dm channel id for a user id - * - * @param user_id user id to set the dm channel for - * @param channel_id dm channel to set - */ - void set_dm_channel(snowflake user_id, snowflake channel_id); - - /** - * @brief Returns the uptime of the cluster - * - * @return dpp::utility::uptime The uptime of the cluster - */ - dpp::utility::uptime uptime(); - - /** - * @brief Start the cluster, connecting all its shards. - * - * Returns once all shards are connected if return_after is true, - * otherwise enters an infinite loop while the shards run. - * - * @param return_after If true the bot will return to your program after starting shards, if false this function will never return. - */ - void start(bool return_after = true); - - /** - * @brief Set the presence for all shards on the cluster - * - * @param p The presence to set. Only the online status and the first activity are sent. - */ - void set_presence(const class dpp::presence &p); - - /** - * @brief Get a shard by id, returning the discord_client - * - * @param id Shard ID - * @return discord_client* shard, or null - */ - discord_client* get_shard(uint32_t id); - - /** - * @brief Get the list of shards - * - * @return shard_list& Reference to map of shards for this cluster - */ - const shard_list& get_shards(); - - /* Functions for attaching to event handlers */ - - /** - * @brief on voice state update event - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type voice_state_update_t&, and returns void. - */ - event_router_t on_voice_state_update; - - - /** - * @brief on voice client disconnect event - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type voice_client_disconnect_t&, and returns void. - */ - event_router_t on_voice_client_disconnect; - - - /** - * @brief on voice client speaking event - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type voice_client_speaking_t&, and returns void. - */ - event_router_t on_voice_client_speaking; - - - /** - * @brief Called when a log message is to be written to the log. - * You can attach any logging system here you wish, e.g. spdlog, or even just a simple - * use of std::cout or printf. If nothing attaches this log event, then the - * library will be silent. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type log_t&, and returns void. - */ - event_router_t on_log; - - /** - * @brief on guild join request delete. - * Triggered when a user declines the membership screening questionnaire for a guild. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_join_request_delete_t&, and returns void. - */ - event_router_t on_guild_join_request_delete; - - - /** - * @brief Called when a new interaction is created. - * Interactions are created by discord when commands you have registered are issued - * by a user. For an example of this in action please see \ref slashcommands - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type interaction_create_t&, and returns void. - * - * @note There are dedicated events to handle slashcommands (See dpp::cluster::on_slashcommand), - * user context menus (See dpp::cluster::on_user_context_menu) and message context menus (See dpp::cluster::on_message_context_menu) - */ - event_router_t on_interaction_create; - - /** - * @brief Called when a slash command is issued. - * Only dpp::ctxm_chat_input types of interaction are routed to this event. - * For an example of this in action please see \ref slashcommands - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type slashcommand_t&, and returns void. - */ - event_router_t on_slashcommand; - - /** - * @brief Called when a button is clicked attached to a message. - * Button clicks are triggered by discord when buttons are clicked which you have - * associated with a message using dpp::component. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type button_click_t&, and returns void. - */ - event_router_t on_button_click; - - /** - * @brief Called when an auto completed field needs suggestions to present to the user - * This is triggered by discord when option choices have auto completion enabled which you have - * associated with a dpp::slashcommand. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type autocomplete_t&, and returns void. - */ - event_router_t on_autocomplete; - - - /** - * @brief Called when a select menu is clicked attached to a message. - * Select menu clicks are triggered by discord when select menus are clicked which you have - * associated with a message using dpp::component. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type select_click_t&, and returns void. - */ - event_router_t on_select_click; - - /** - * @brief Called when a user right-clicks or long-presses on a message, - * where a slash command is bound to the dpp::ctxm_message command type. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type message_context_menu_t&, and returns void. - */ - event_router_t on_message_context_menu; - - /** - * @brief Called when a user right-clicks or long-presses on a user, - * where a slash command is bound to the dpp::ctxm_user command type. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type user_context_menu_t&, and returns void. - */ - event_router_t on_user_context_menu; - - /** - * @brief Called when a modal dialog is submitted. - * Form submits are triggered by discord when modal dialogs are submitted which you have - * associated with a slash command using dpp::interaction_modal_response. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type form_submit_t&, and returns void. - */ - event_router_t on_form_submit; - - - /** - * @brief Called when a guild is deleted. - * A guild can be deleted via the bot being kicked, the bot leaving the guild - * explicitly with dpp::cluster::guild_delete, or via the guild being unavailable due to - * an outage. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_delete_t&, and returns void. - */ - event_router_t on_guild_delete; - - - /** - * @brief Called when a channel is deleted from a guild. - * The channel will still be temporarily available in the cache. Pointers to the - * channel should not be retained long-term as they will be deleted by the garbage - * collector. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type channel_delete_t&, and returns void. - */ - event_router_t on_channel_delete; - - - /** - * @brief Called when a channel is edited on a guild. - * The new channel details have already been applied to the guild when you - * receive this event. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type channel_update_t&, and returns void. - */ - event_router_t on_channel_update; - - - /** - * @brief Called when a shard is connected and ready. - * A set of cluster::on_guild_create events will follow this event. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type ready_t&, and returns void. - */ - event_router_t on_ready; - - - /** - * @brief Called when a message is deleted. - * The message has already been deleted from Discord when you - * receive this event. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type message_delete_t&, and returns void. - */ - event_router_t on_message_delete; - - - /** - * @brief Called when a user leaves a guild (either through being kicked, or choosing to leave) - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_member_remove_t&, and returns void. - */ - event_router_t on_guild_member_remove; - - - /** - * @brief Called when a connection to a shard successfully resumes. - * A resumed session does not need to re-synchronise guilds, members, etc. - * This is generally non-fatal and informational only. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type resumed_t&, and returns void. - */ - event_router_t on_resumed; - - - /** - * @brief Called when a new role is created on a guild. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_role_create_t&, and returns void. - */ - event_router_t on_guild_role_create; - - - /** - * @brief Called when a user is typing on a channel. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type typing_start_t&, and returns void. - */ - event_router_t on_typing_start; - - - /** - * @brief Called when a new reaction is added to a message. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type message_reaction_add_t&, and returns void. - */ - event_router_t on_message_reaction_add; - - - /** - * @brief Called when a set of members is received for a guild. - * D++ will request these for all new guilds if needed, after the cluster::on_guild_create - * events. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_members_chunk_t&, and returns void. - */ - event_router_t on_guild_members_chunk; - - - /** - * @brief Called when a single reaction is removed from a message. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type message_reaction_remove_t&, and returns void. - */ - event_router_t on_message_reaction_remove; - - - /** - * @brief Called when a new guild is created. - * D++ will request members for the guild for its cache using guild_members_chunk. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_create_t&, and returns void. - */ - event_router_t on_guild_create; - - - /** - * @brief Called when a new channel is created on a guild. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type channel_create_t&, and returns void. - */ - event_router_t on_channel_create; - - - /** - * @brief Called when all reactions for a particular emoji are removed from a message. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type message_reaction_remove_emoji_t&, and returns void. - */ - event_router_t on_message_reaction_remove_emoji; - - - /** - * @brief Called when multiple messages are deleted from a channel or DM. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type message_delete_bulk_t&, and returns void. - */ - event_router_t on_message_delete_bulk; - - - /** - * @brief Called when an existing role is updated on a guild. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_role_update_t&, and returns void. - */ - event_router_t on_guild_role_update; - - - /** - * @brief Called when a role is deleted in a guild. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_role_delete_t&, and returns void. - */ - event_router_t on_guild_role_delete; - - - /** - * @brief Called when a message is pinned. - * Note that the pinned message is not returned to this event, just the timestamp - * of the last pinned message. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type channel_pins_update_t&, and returns void. - */ - event_router_t on_channel_pins_update; - - - /** - * @brief Called when all reactions are removed from a message. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type message_reaction_remove_all_t&, and returns void. - */ - event_router_t on_message_reaction_remove_all; - - - /** - * @brief Called when we are told which voice server we can use. - * This will be sent either when we establish a new voice channel connection, - * or as discord rearrange their infrastructure. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type voice_server_update_t&, and returns void. - */ - event_router_t on_voice_server_update; - - - /** - * @brief Called when new emojis are added to a guild. - * The complete set of emojis is sent every time. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_emojis_update_t&, and returns void. - */ - event_router_t on_guild_emojis_update; - - - /** - * @brief Called when new stickers are added to a guild. - * The complete set of stickers is sent every time. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_stickers_update_t&, and returns void. - */ - event_router_t on_guild_stickers_update; - - - /** - * @brief Called when a user's presence is updated. - * To receive these you will need the GUILD_PRESENCES privileged intent. - * You will receive many of these, very often, and receiving them will significantly - * increase your bot's CPU usage. If you don't need them it is recommended to not ask - * for them. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type presence_update_t&, and returns void. - */ - event_router_t on_presence_update; - - - /** - * @brief Called when the webhooks for a guild are updated. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type webhooks_update_t&, and returns void. - */ - event_router_t on_webhooks_update; - - /** - * @brief Called when a new automod rule is created. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type automod_rule_create_t&, and returns void. - */ - event_router_t on_automod_rule_create; - - - /** - * @brief Called when an automod rule is updated. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type automod_rule_update_t&, and returns void. - */ - event_router_t on_automod_rule_update; - - /** - * @brief Called when an automod rule is deleted. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type automod_rule_delete_t&, and returns void. - */ - event_router_t on_automod_rule_delete; - - /** - * @brief Called when an automod rule is triggered/executed. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type automod_rule_execute_t&, and returns void. - */ - event_router_t on_automod_rule_execute; - - /** - * @brief Called when a new member joins a guild. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_member_add_t&, and returns void. - */ - event_router_t on_guild_member_add; - - - /** - * @brief Called when an invite is deleted from a guild. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type invite_delete_t&, and returns void. - */ - event_router_t on_invite_delete; - - - /** - * @brief Called when details of a guild are updated. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_update_t&, and returns void. - */ - event_router_t on_guild_update; - - - /** - * @brief Called when an integration is updated for a guild. - * This returns the complete list. - * An integration is a connection to a guild of a user's associated accounts, - * e.g. youtube or twitch, for automatic assignment of roles etc. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_integrations_update_t&, and returns void. - */ - event_router_t on_guild_integrations_update; - - - /** - * @brief Called when details of a guild member (e.g. their roles or nickname) are updated. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_member_update_t&, and returns void. - */ - event_router_t on_guild_member_update; - - - /** - * @brief Called when a new invite is created for a guild. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type invite_create_t&, and returns void. - */ - event_router_t on_invite_create; - - - /** - * @brief Called when a message is updated (edited). - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type message_update_t&, and returns void. - */ - event_router_t on_message_update; - - - /** - * @brief Called when a user is updated. - * This is separate to cluster::on_guild_member_update and includes things such as an avatar change, - * username change, discriminator change or change in subscription status for nitro. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type user_update_t&, and returns void. - */ - event_router_t on_user_update; - - - /** - * @brief Called when a new message arrives from discord. - * Note that D++ does not cache messages. If you want to cache these objects you - * should create something yourself within your bot. Caching of messages is not on - * the roadmap to be supported as it consumes excessive amounts of RAM. - * For an example for caching of messages, please see \ref caching-messages - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type message_create_t&, and returns void. - */ - event_router_t on_message_create; - - - /** - * @brief Called when a ban is added to a guild. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_ban_add_t&, and returns void. - */ - event_router_t on_guild_ban_add; - - - /** - * @brief Called when a ban is removed from a guild. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_ban_remove_t&, and returns void. - */ - event_router_t on_guild_ban_remove; - - - /** - * @brief Called when a new integration is attached to a guild by a user. - * An integration is a connection to a guild of a user's associated accounts, - * e.g. youtube or twitch, for automatic assignment of roles etc. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type integration_create_t&, and returns void. - */ - event_router_t on_integration_create; - - - /** - * @brief Called when an integration is updated by a user. - * This returns details of just the single integration that has changed. - * An integration is a connection to a guild of a user's associated accounts, - * e.g. youtube or twitch, for automatic assignment of roles etc. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type integration_update_t&, and returns void. - */ - event_router_t on_integration_update; - - - /** - * @brief Called when an integration is removed by a user. - * An integration is a connection to a guild of a user's associated accounts, - * e.g. youtube or twitch, for automatic assignment of roles etc. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type integration_delete_t&, and returns void. - */ - event_router_t on_integration_delete; - - - /** - * @brief Called when a thread is created. - * Note that threads are not cached by D++, but a list of thread IDs is accessible in a guild object - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type thread_create_t&, and returns void. - */ - event_router_t on_thread_create; - - - /** - * @brief Called when a thread is updated - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type thread_update_t&, and returns void. - */ - event_router_t on_thread_update; - - - /** - * @brief Called when a thread is deleted - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type thread_delete_t&, and returns void. - */ - event_router_t on_thread_delete; - - - /** - * @brief Called when thread list is synced (upon gaining access to a channel). - * Note that threads are not cached by D++, but a list of thread IDs is accessible in a guild object - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type thread_list_sync_t&, and returns void. - */ - event_router_t on_thread_list_sync; - - - /** - * @brief Called when current user's thread member object is updated - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type thread_member_update_t&, and returns void. - */ - event_router_t on_thread_member_update; - - - /** - * @brief Called when a thread's member list is updated (without GUILD_MEMBERS intent, is only called for current user) - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type thread_members_update_t&, and returns void. - */ - event_router_t on_thread_members_update; - - - /** - * @brief Called when a new scheduled event is created - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_scheduled_event_create_t&, and returns void. - */ - event_router_t on_guild_scheduled_event_create; - - - /** - * @brief Called when a new scheduled event is updated - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_scheduled_event_update_t&, and returns void. - */ - event_router_t on_guild_scheduled_event_update; - - - /** - * @brief Called when a new scheduled event is deleted - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_scheduled_event_delete_t&, and returns void. - */ - event_router_t on_guild_scheduled_event_delete; - - - /** - * @brief Called when a user is added to a scheduled event - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_scheduled_event_user_add_t&, and returns void. - */ - event_router_t on_guild_scheduled_event_user_add; - - - /** - * @brief Called when a user is removed to a scheduled event - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type guild_scheduled_event_user_remove_t&, and returns void. - */ - event_router_t on_guild_scheduled_event_user_remove; - - - /** - * @brief Called when packets are sent from the voice buffer. - * The voice buffer contains packets that are already encoded with Opus and encrypted - * with Sodium, and merged into packets by the repacketizer, which is done in the - * dpp::discord_voice_client::send_audio method. You should use the buffer size properties - * of dpp::voice_buffer_send_t to determine if you should fill the buffer with more - * content. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type voice_buffer_send_t&, and returns void. - */ - event_router_t on_voice_buffer_send; - - - /** - * @brief Called when a user is talking on a voice channel. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type voice_user_talking_t&, and returns void. - */ - event_router_t on_voice_user_talking; - - - /** - * @brief Called when a voice channel is connected and ready to send audio. - * Note that this is not directly attached to the READY event of the websocket, - * as there is further connection that needs to be done before audio is ready to send. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type voice_ready_t&, and returns void. - */ - event_router_t on_voice_ready; - - - /** - * @brief Called when new audio data is received. - * Each separate user's audio from the voice channel will arrive tagged with - * their user id in the event, if a user can be attributed to the received audio. - * - * @note Receiving audio for bots is not officially supported by discord. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type voice_receive_t&, and returns void. - */ - event_router_t on_voice_receive; - - /** - * @brief Called when new audio data is received, combined and mixed for all speaking users. - * - * @note Receiving audio for bots is not officially supported by discord. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type voice_receive_t&, and returns void. - */ - event_router_t on_voice_receive_combined; - - /** - * @brief Called when sending of audio passes over a track marker. - * Track markers are arbitrarily placed "bookmarks" in the audio buffer, placed - * by the bot developer. Each track marker can have a string value associated with it - * which is specified in dpp::discord_voice_client::insert_marker and returned to this - * event. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type voice_track_marker_t&, and returns void. - */ - event_router_t on_voice_track_marker; - - - /** - * @brief Called when a new stage instance is created on a stage channel. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * - */ - event_router_t on_stage_instance_create; - - - /** - * @brief Called when a stage instance is updated. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type stage_instance_update_t&, and returns void. - */ - event_router_t on_stage_instance_update; - - - /** - * @brief Called when an existing stage instance is deleted from a stage channel. - * - * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. - * The function signature for this event takes a single `const` reference of type stage_instance_delete_t&, and returns void. - */ - event_router_t on_stage_instance_delete; - - - /** - * @brief Post a REST request. Where possible use a helper method instead like message_create - * - * @param endpoint Endpoint to post to, e.g. /api/guilds - * @param major_parameters Major parameters for the endpoint e.g. a guild id - * @param parameters Minor parameters for the API request - * @param method Method, e.g. GET, POST - * @param postdata Post data (usually JSON encoded) - * @param callback Function to call when the HTTP call completes. The callback parameter will contain amongst other things, the decoded json. - * @param filename Filename to post for POST requests (for uploading files) - * @param filecontent File content to post for POST requests (for uploading files) - */ - void post_rest(const std::string &endpoint, const std::string &major_parameters, const std::string ¶meters, http_method method, const std::string &postdata, json_encode_t callback, const std::string &filename = "", const std::string &filecontent = ""); - - /** - * @brief Post a multipart REST request. Where possible use a helper method instead like message_create - * - * @param endpoint Endpoint to post to, e.g. /api/guilds - * @param major_parameters Major parameters for the endpoint e.g. a guild id - * @param parameters Minor parameters for the API request - * @param method Method, e.g. GET, POST - * @param postdata Post data (usually JSON encoded) - * @param callback Function to call when the HTTP call completes. The callback parameter will contain amongst other things, the decoded json. - * @param filename List of filenames to post for POST requests (for uploading files) - * @param filecontent List of file content to post for POST requests (for uploading files) - */ - void post_rest_multipart(const std::string &endpoint, const std::string &major_parameters, const std::string ¶meters, http_method method, const std::string &postdata, json_encode_t callback, const std::vector &filename = {}, const std::vector &filecontent = {}); - - /** - * @brief Make a HTTP(S) request. For use when wanting asynchronous access to HTTP APIs outside of Discord. - * - * @param url Full URL to post to, e.g. https://api.somewhere.com/v1/foo/ - * @param method Method, e.g. GET, POST - * @param callback Function to call when the HTTP call completes. No processing is done on the returned data. - * @param postdata POST data - * @param mimetype MIME type of POST data - * @param headers Headers to send with the request - */ - void request(const std::string &url, http_method method, http_completion_event callback, const std::string &postdata = "", const std::string &mimetype = "text/plain", const std::multimap &headers = {}); - - /** - * @brief Respond to a slash command - * - * @see https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response - * @param interaction_id Interaction id to respond to - * @param token Token for the interaction webhook - * @param r Response to send - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void interaction_response_create(snowflake interaction_id, const std::string &token, const interaction_response &r, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit response to a slash command - * - * @see https://discord.com/developers/docs/interactions/receiving-and-responding#edit-original-interaction-response - * @param token Token for the interaction webhook - * @param m Message to send - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void interaction_response_edit(const std::string &token, const message &m, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Create a followup message to a slash command - * - * @param token Token for the interaction webhook - * @param m followup message to create - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void interaction_followup_create(const std::string &token, const message &m, command_completion_event_t callback); - - /** - * @brief Edit original followup message to a slash command - * This is an alias for cluster::interaction_response_edit - * @see cluster::interaction_response_edit - * - * @param token Token for the interaction webhook - * @param m message to edit, the ID should be set - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void interaction_followup_edit_original(const std::string &token, const message &m, command_completion_event_t callback = utility::log_error()); - - /** - * @brief - * - * @param token Token for the interaction webhook - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void interaction_followup_delete(const std::string &token, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit followup message to a slash command - * The message ID in the message you pass should be correctly set to that of a followup message you previously sent - * @param token Token for the interaction webhook - * @param m message to edit, the ID should be set - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void interaction_followup_edit(const std::string &token, const message &m, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get the followup message to a slash command - * @param token Token for the interaction webhook - * @param message_id message to retrieve - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::message object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void interaction_followup_get(const std::string &token, snowflake message_id, command_completion_event_t callback); - - /** - * @brief Create a global slash command (a bot can have a maximum of 100 of these). - * - * @see https://discord.com/developers/docs/interactions/application-commands#create-global-application-command - * @param s Slash command to create - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::slashcommand object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void global_command_create(const slashcommand &s, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get a global slash command - * - * @see https://discord.com/developers/docs/interactions/application-commands#get-global-application-command - * @param id The ID of the slash command - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::slashcommand object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void global_command_get(snowflake id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get the audit log for a guild - * - * @see https://discord.com/developers/docs/resources/audit-log#get-guild-audit-log - * @param guild_id Guild to get the audit log of - * @param user_id Entries from a specific user ID. Set this to `0` will fetch any user - * @param action_type Entries for a specific dpp::audit_type. Set this to `0` will fetch any type - * @param before Entries with ID less than a specific audit log entry ID. Used for paginating - * @param after Entries with ID greater than a specific audit log entry ID. Used for paginating - * @param limit Maximum number of entries (between 1-100) to return - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::auditlog object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_auditlog_get(snowflake guild_id, snowflake user_id, uint32_t action_type, snowflake before, snowflake after, uint32_t limit, command_completion_event_t callback); - - /** - * @brief Create a slash command local to a guild - * - * @see https://discord.com/developers/docs/interactions/application-commands#create-guild-application-command - * @note Creating a command with the same name as an existing command for your application will overwrite the old command. - * @param s Slash command to create - * @param guild_id Guild ID to create the slash command in - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::slashcommand object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_command_create(const slashcommand &s, snowflake guild_id, command_completion_event_t callback = utility::log_error()); - - - /** - * @brief Create/overwrite guild slash commands. - * Any existing guild slash commands on this guild will be deleted and replaced with these. - * - * @see https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-guild-application-commands - * @param commands Vector of slash commands to create/update. - * New guild commands will be available in the guild immediately. If the command did not already exist, it will count toward daily application command create limits. - * @param guild_id Guild ID to create/update the slash commands in - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::slashcommand_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_bulk_command_create(const std::vector &commands, snowflake guild_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Create/overwrite global slash commands. - * Any existing global slash commands will be deleted and replaced with these. - * - * @see https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-global-application-commands - * @param commands Vector of slash commands to create/update. - * overwriting existing commands that are registered globally for this application. Updates will be available in all guilds after 1 hour. - * Commands that do not already exist will count toward daily application command create limits. - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::slashcommand_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void global_bulk_command_create(const std::vector &commands, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit a global slash command (a bot can have a maximum of 100 of these) - * - * @see https://discord.com/developers/docs/interactions/application-commands#edit-global-application-command - * @param s Slash command to change - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void global_command_edit(const slashcommand &s, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get a slash command of a guild - * - * @see https://discord.com/developers/docs/interactions/application-commands#get-guild-application-command - * @note The returned slash commands will not have permissions set, you need to use a permissions getter e.g. dpp::guild_commands_get_permissions to get the guild command permissions - * @param id The ID of the slash command - * @param guild_id Guild ID to get the slash command from - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::slashcommand object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_command_get(snowflake id, snowflake guild_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit a slash command local to a guild - * - * @see https://discord.com/developers/docs/interactions/application-commands#edit-guild-application-command - * @param s Slash command to edit - * @param guild_id Guild ID to edit the slash command in - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_command_edit(const slashcommand &s, snowflake guild_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit slash command permissions of a guild - * - * @see https://discord.com/developers/docs/interactions/application-commands#edit-application-command-permissions - * @note You can only add up to 10 permission overwrites for a command - * @param s Slash command to edit the permissions for - * @param guild_id Guild ID to edit the slash command in - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_command_edit_permissions(const slashcommand &s, snowflake guild_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get the permissions for a slash command of a guild - * - * @see https://discord.com/developers/docs/interactions/application-commands#get-application-command-permissions - * @param id The ID of the slash command to get the permissions for - * @param guild_id Guild ID to get the permissions of - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild_command_permissions object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_command_get_permissions(snowflake id, snowflake guild_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit/Overwrite the permissions of all existing slash commands in a guild - * - * @note You can only add up to 10 permission overwrites for a command - * - * @see https://discord.com/developers/docs/interactions/application-commands#batch-edit-application-command-permissions - * @warning The endpoint will overwrite all existing permissions for all commands of the application in a guild, including slash commands, user commands, and message commands. Meaning that if you forgot to pass a slash command, the permissions of it might be removed. - * @param commands A vector of slash commands to edit/overwrite the permissions for - * @param guild_id Guild ID to edit permissions of the slash commands in - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild_command_permissions_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - * @deprecated This has been disabled with updates to Permissions v2. You can use guild_command_edit_permissions instead - */ - void guild_bulk_command_edit_permissions(const std::vector &commands, snowflake guild_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete a global slash command (a bot can have a maximum of 100 of these) - * - * @see https://discord.com/developers/docs/interactions/application-commands#delete-global-application-command - * @param id Slash command to delete - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void global_command_delete(snowflake id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete a slash command local to a guild - * - * @see https://discord.com/developers/docs/interactions/application-commands#delete-guild-application-command - * @param id Slash command to delete - * @param guild_id Guild ID to delete the slash command in - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_command_delete(snowflake id, snowflake guild_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get the application's slash commands for a guild - * - * @see https://discord.com/developers/docs/interactions/application-commands#get-guild-application-commands - * @note The returned slash commands will not have permissions set, you need to use a permissions getter e.g. dpp::guild_commands_get_permissions to get the guild command permissions - * @param guild_id Guild ID to get the slash commands for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::slashcommand_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_commands_get(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Get all slash command permissions of a guild - * - * @see https://discord.com/developers/docs/interactions/application-commands#get-application-command-permissions - * @param guild_id Guild ID to get the slash commands permissions for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild_command_permissions_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_commands_get_permissions(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Get the application's global slash commands - * - * @see https://discord.com/developers/docs/interactions/application-commands#get-global-application-commands - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::slashcommand_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void global_commands_get(command_completion_event_t callback); - - /** - * @brief Create a direct message, also create the channel for the direct message if needed - * - * @see https://discord.com/developers/docs/resources/user#create-dm - * @see https://discord.com/developers/docs/resources/channel#create-message - * @param user_id User ID of user to send message to - * @param m Message object - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::message object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void direct_message_create(snowflake user_id, const message &m, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get a message - * - * @see https://discord.com/developers/docs/resources/channel#get-channel-message - * @param message_id Message ID - * @param channel_id Channel ID - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::message object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_get(snowflake message_id, snowflake channel_id, command_completion_event_t callback); - - /** - * @brief Get multiple messages. - * - * This function will attempt to fetch as many messages as possible using multiple API calls if needed. - * - * @see https://discord.com/developers/docs/resources/channel#get-channel-messages - * @param channel_id Channel ID to retrieve messages for - * @param around Messages should be retrieved around this ID if this is set to non-zero - * @param before Messages before this ID should be retrieved if this is set to non-zero - * @param after Messages after this ID should be retrieved if this is set to non-zero - * @param limit This number of messages maximum should be returned, up to a maximum of 100. - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::message_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void messages_get(snowflake channel_id, snowflake around, snowflake before, snowflake after, uint64_t limit, command_completion_event_t callback); - - /** - * @brief Send a message to a channel. The callback function is called when the message has been sent - * - * @see https://discord.com/developers/docs/resources/channel#create-message - * @param m Message to send - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::message object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_create(const struct message &m, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Crosspost a message. The callback function is called when the message has been sent - * - * @see https://discord.com/developers/docs/resources/channel#crosspost-message - * @param message_id Message to crosspost - * @param channel_id Channel ID to crosspost from - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::message object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_crosspost(snowflake message_id, snowflake channel_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit a message on a channel. The callback function is called when the message has been edited - * - * @see https://discord.com/developers/docs/resources/channel#edit-message - * @param m Message to edit - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::message object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_edit(const struct message &m, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Add a reaction to a message. The reaction string must be either an `emojiname:id` or a unicode character. - * - * @see https://discord.com/developers/docs/resources/channel#create-reaction - * @param m Message to add a reaction to - * @param reaction Reaction to add. Emojis should be in the form emojiname:id - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_add_reaction(const struct message &m, const std::string &reaction, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete own reaction from a message. The reaction string must be either an `emojiname:id` or a unicode character. - * - * @see https://discord.com/developers/docs/resources/channel#delete-own-reaction - * @param m Message to delete own reaction from - * @param reaction Reaction to delete. The reaction should be in the form emojiname:id - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_delete_own_reaction(const struct message &m, const std::string &reaction, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete a user's reaction from a message. The reaction string must be either an `emojiname:id` or a unicode character - * - * @see https://discord.com/developers/docs/resources/channel#delete-user-reaction - * @param m Message to delete a user's reaction from - * @param user_id User ID who's reaction you want to remove - * @param reaction Reaction to remove. Reactions should be in the form emojiname:id - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_delete_reaction(const struct message &m, snowflake user_id, const std::string &reaction, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get reactions on a message for a particular emoji. The reaction string must be either an `emojiname:id` or a unicode character - * - * @see https://discord.com/developers/docs/resources/channel#get-reactions - * @param m Message to get reactions for - * @param reaction Reaction should be in the form emojiname:id or a unicode character - * @param before Reactions before this ID should be retrieved if this is set to non-zero - * @param after Reactions before this ID should be retrieved if this is set to non-zero - * @param limit This number of reactions maximum should be returned - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::user_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_get_reactions(const struct message &m, const std::string &reaction, snowflake before, snowflake after, snowflake limit, command_completion_event_t callback); - - /** - * @brief Delete all reactions on a message - * - * @see https://discord.com/developers/docs/resources/channel#delete-all-reactions - * @param m Message to delete reactions from - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_delete_all_reactions(const struct message &m, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete all reactions on a message using a particular emoji. The reaction string must be either an `emojiname:id` or a unicode character - * - * @see https://discord.com/developers/docs/resources/channel#delete-all-reactions-for-emoji - * @param m Message to delete reactions from - * @param reaction Reaction to delete, in the form emojiname:id or a unicode character - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_delete_reaction_emoji(const struct message &m, const std::string &reaction, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Add a reaction to a message by id. The reaction string must be either an `emojiname:id` or a unicode character. - * - * @see https://discord.com/developers/docs/topics/gateway#message-reaction-add - * @param message_id Message to add reactions to - * @param channel_id Channel to add reactions to - * @param reaction Reaction to add. Emojis should be in the form emojiname:id - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_add_reaction(snowflake message_id, snowflake channel_id, const std::string &reaction, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete own reaction from a message by id. The reaction string must be either an `emojiname:id` or a unicode character. - * - * @see https://discord.com/developers/docs/resources/channel#delete-own-reaction - * @param message_id Message to delete reactions from - * @param channel_id Channel to delete reactions from - * @param reaction Reaction to delete. The reaction should be in the form emojiname:id - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_delete_own_reaction(snowflake message_id, snowflake channel_id, const std::string &reaction, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete a user's reaction from a message by id. The reaction string must be either an `emojiname:id` or a unicode character - * - * @see https://discord.com/developers/docs/resources/channel#delete-user-reaction - * @param message_id Message to delete reactions from - * @param channel_id Channel to delete reactions from - * @param user_id User ID who's reaction you want to remove - * @param reaction Reaction to remove. Reactions should be in the form emojiname:id - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_delete_reaction(snowflake message_id, snowflake channel_id, snowflake user_id, const std::string &reaction, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get reactions on a message for a particular emoji by id. The reaction string must be either an `emojiname:id` or a unicode character - * - * @see https://discord.com/developers/docs/resources/channel#get-reactions - * @param message_id Message to get reactions for - * @param channel_id Channel to get reactions for - * @param reaction Reaction should be in the form emojiname:id or a unicode character - * @param before Reactions before this ID should be retrieved if this is set to non-zero - * @param after Reactions before this ID should be retrieved if this is set to non-zero - * @param limit This number of reactions maximum should be returned - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::user_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_get_reactions(snowflake message_id, snowflake channel_id, const std::string &reaction, snowflake before, snowflake after, snowflake limit, command_completion_event_t callback); - - /** - * @brief Delete all reactions on a message by id - * - * @see https://discord.com/developers/docs/resources/channel#delete-all-reactions - * @param message_id Message to delete reactions from - * @param channel_id Channel to delete reactions from - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_delete_all_reactions(snowflake message_id, snowflake channel_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete all reactions on a message using a particular emoji by id. The reaction string must be either an `emojiname:id` or a unicode character - * - * @see https://discord.com/developers/docs/resources/channel#delete-all-reactions-for-emoji - * @param message_id Message to delete reactions from - * @param channel_id Channel to delete reactions from - * @param reaction Reaction to delete, in the form emojiname:id or a unicode character - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_delete_reaction_emoji(snowflake message_id, snowflake channel_id, const std::string &reaction, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete a message from a channel. The callback function is called when the message has been edited - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see https://discord.com/developers/docs/resources/channel#delete-message - * @param message_id Message ID to delete - * @param channel_id Channel to delete from - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_delete(snowflake message_id, snowflake channel_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Bulk delete messages from a channel. The callback function is called when the message has been edited - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @note If any message provided older than 2 weeks or any duplicate message ID, it will fail. - * - * @see https://discord.com/developers/docs/resources/channel#bulk-delete-messages - * @param message_ids List of message IDs to delete (at least 2 and at most 100 message IDs) - * @param channel_id Channel to delete from - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_delete_bulk(const std::vector &message_ids, snowflake channel_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get a channel - * - * @see https://discord.com/developers/docs/resources/channel#get-channel - * @param c Channel ID to retrieve - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::channel object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channel_get(snowflake c, command_completion_event_t callback); - - /** - * @brief Get all channels for a guild - * - * @see https://discord.com/developers/docs/resources/channel#get-channels - * @param guild_id Guild ID to retrieve channels for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::channel_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channels_get(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Create a channel - * - * Create a new channel object for the guild. Requires the `MANAGE_CHANNELS` permission. If setting permission overwrites, - * only permissions your bot has in the guild can be allowed/denied. Setting `MANAGE_ROLES` permission in channels is only possible - * for guild administrators. Returns the new channel object on success. Fires a `Channel Create Gateway` event. - * - * All parameters to this endpoint are optional excluding `name` - * - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/channel#create-channel - * @param c Channel to create - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::channel object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channel_create(const class channel &c, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit a channel - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/channel#modify-channel - * @param c Channel to edit/update - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::channel object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channel_edit(const class channel &c, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit multiple channels positions - * - * Modify the positions of a set of channel objects for the guild. - * Requires `MANAGE_CHANNELS` permission. Fires multiple `Channel Update Gateway` events. - * Only channels to be modified are required. - * - * @see https://discord.com/developers/docs/resources/guild#modify-guild-channel-positions - * @param c Channel to change the position for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channel_edit_positions(const std::vector &c, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit a channel's permissions - * - * @see https://discord.com/developers/docs/resources/channel#edit-channel-permissions - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param c Channel to set permissions for - * @param overwrite_id Overwrite to change (a user or role ID) - * @param allow allow permissions bitmask - * @param deny deny permissions bitmask - * @param member true if the overwrite_id is a user id, false if it is a channel id - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channel_edit_permissions(const class channel &c, const snowflake overwrite_id, const uint64_t allow, const uint64_t deny, const bool member, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit a channel's permissions - * - * @see https://discord.com/developers/docs/resources/channel#edit-channel-permissions - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param channel_id ID of the channel to set permissions for - * @param overwrite_id Overwrite to change (a user or role ID) - * @param allow allow permissions bitmask - * @param deny deny permissions bitmask - * @param member true if the overwrite_id is a user id, false if it is a channel id - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channel_edit_permissions(const snowflake channel_id, const snowflake overwrite_id, const uint64_t allow, const uint64_t deny, const bool member, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete a channel - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/channel#deleteclose-channel - * @param channel_id Channel id to delete - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channel_delete(snowflake channel_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get details about an invite - * - * @see https://discord.com/developers/docs/resources/invite#get-invite - * @param invite Invite code to get information on - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::invite object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void invite_get(const std::string &invite, command_completion_event_t callback); - - /** - * @brief Delete an invite - * - * @see https://discord.com/developers/docs/resources/invite#delete-invite - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param invite Invite code to delete - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::invite object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void invite_delete(const std::string &invite, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get invites for a channel - * - * @see https://discord.com/developers/docs/resources/invite#get-invites - * @param c Channel to get invites for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::invite_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channel_invites_get(const class channel &c, command_completion_event_t callback); - - /** - * @brief Create invite for a channel - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/channel#create-channel-invite - * @param c Channel to create an invite on - * @param i Invite to create - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::invite object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channel_invite_create(const class channel &c, const class invite &i, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get a channel's pins - * @see https://discord.com/developers/docs/resources/channel#get-pinned-messages - * @param channel_id Channel ID to get pins for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::message_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channel_pins_get(snowflake channel_id, command_completion_event_t callback); - - /** - * @brief Adds a recipient to a Group DM using their access token - * @see https://discord.com/developers/docs/resources/channel#group-dm-add-recipient - * @param channel_id Channel id to add group DM recipients to - * @param user_id User ID to add - * @param access_token Access token from OAuth2 - * @param nick Nickname of user to apply to the chat - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void gdm_add(snowflake channel_id, snowflake user_id, const std::string &access_token, const std::string &nick, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Removes a recipient from a Group DM - * @see https://discord.com/developers/docs/resources/channel#group-dm-remove-recipient - * @param channel_id Channel ID of group DM - * @param user_id User ID to remove from group DM - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void gdm_remove(snowflake channel_id, snowflake user_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Remove a permission from a channel - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/channel#delete-channel-permission - * @param c Channel to remove permission from - * @param overwrite_id Overwrite to remove, user or channel ID - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channel_delete_permission(const class channel &c, snowflake overwrite_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Follow an announcement (news) channel - * @see https://discord.com/developers/docs/resources/channel#follow-news-channel - * @param c Channel id to follow - * @param target_channel_id Channel to subscribe the channel to - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channel_follow_news(const class channel &c, snowflake target_channel_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Trigger channel typing indicator - * @see https://discord.com/developers/docs/resources/channel#trigger-typing-indicator - * @param c Channel to set as typing on - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channel_typing(const class channel &c, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Trigger channel typing indicator - * @see https://discord.com/developers/docs/resources/channel#trigger-typing-indicator - * @param cid Channel ID to set as typing on - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void channel_typing(snowflake cid, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Pin a message - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/channel#pin-message - * @param channel_id Channel id to pin message on - * @param message_id Message id to pin message on - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_pin(snowflake channel_id, snowflake message_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Unpin a message - * @see https://discord.com/developers/docs/resources/channel#unpin-message - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param channel_id Channel id to unpin message on - * @param message_id Message id to unpin message on - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void message_unpin(snowflake channel_id, snowflake message_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get a guild - * - * Returns the guild object for the given id. This endpoint will also return approximate_member_count and approximate_presence_count - * for the guild. - * @see https://discord.com/developers/docs/resources/guild#get-guild - * @param g Guild ID to retrieve - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_get(snowflake g, command_completion_event_t callback); - - /** - * @brief Get a guild preview. Returns a guild object but only a subset of the fields will be populated. - * - * Returns the guild preview object for the given id `g`. If the user is not in the guild, then the guild - * must be lurkable (it must be Discoverable or have a live public stage). - * @see https://discord.com/developers/docs/resources/guild#get-guild-preview - * @param g Guild ID to retrieve - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_get_preview(snowflake g, command_completion_event_t callback); - - /** - * @brief Get a guild member - * @see https://discord.com/developers/docs/resources/guild#get-guild-member - * @param guild_id Guild ID to get member for - * @param user_id User ID of member to get - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild_member object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_get_member(snowflake guild_id, snowflake user_id, command_completion_event_t callback); - - /** - * @brief Search for guild members based on whether their username or nickname starts with the given string. - * - * @note This endpoint is restricted according to whether the `GUILD_MEMBERS` Privileged Intent is enabled for your application. - * @see https://discord.com/developers/docs/resources/guild#search-guild-members - * @param guild_id Guild ID to search in - * @param query Query string to match username(s) and nickname(s) against - * @param limit max number of members to return (1-1000) - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild_member_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_search_members(snowflake guild_id, const std::string& query, uint16_t limit, command_completion_event_t callback); - - /** - * @brief Get all guild members - * - * @note This endpoint is restricted according to whether the `GUILD_MEMBERS` Privileged Intent is enabled for your application. - * @see https://discord.com/developers/docs/resources/guild#get-guild-members - * @param guild_id Guild ID to get all members for - * @param limit max number of members to return (1-1000) - * @param after the highest user id in the previous page - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild_member_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_get_members(snowflake guild_id, uint16_t limit, snowflake after, command_completion_event_t callback); - - /** - * @brief Add guild member. Needs a specific oauth2 scope, from which you get the access_token. - * - * Adds a user to the guild, provided you have a valid oauth2 access token for the user with the guilds.join scope. - * Returns the guild_member, which is defaulted if the user is already a member of the guild. Fires a `Guild Member Add` Gateway event. - * - * For guilds with Membership Screening enabled, this endpoint will default to adding new members as pending in the guild member object. - * Members that are pending will have to complete membership screening before they become full members that can talk. - * - * @note All parameters to this endpoint except for access_token are optional. - * The bot must be a member of the guild with `CREATE_INSTANT_INVITE` permission. - * @see https://discord.com/developers/docs/resources/guild#add-guild-member - * @param gm Guild member to add - * @param access_token Access token from Oauth2 scope - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild_member object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_add_member(const guild_member& gm, const std::string &access_token, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit the properties of an existing guild member - * - * Modify attributes of a guild member. Returns the guild_member. Fires a `Guild Member Update` Gateway event. - * To remove a timeout, set the `communication_disabled_until` to a non-zero time in the past, e.g. 1. - * When moving members to channels, the API user must have permissions to both connect to the channel and have the `MOVE_MEMBERS` permission. - * For moving and disconnecting users from voice, use dpp::cluster::guild_member_move. - * @see https://discord.com/developers/docs/resources/guild#modify-guild-member - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param gm Guild member to edit - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild_member object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_edit_member(const guild_member& gm, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Moves the guild member to a other voice channel, if member is connected to one. - * Set the `channel_id` to `0` to disconnect the user. - * - * Fires a `Guild Member Update` Gateway event. - * @note When moving members to channels, the API user __must__ have permissions to both connect to the channel and have the `MOVE_MEMBERS` permission. - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/guild#modify-guild-member - * @param channel_id Id of the channel to which the user is used. Set to `0` to disconnect the user - * @param guild_id Guild id to which the user is connected - * @param user_id User id, who should be moved - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild_member object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_member_move(const snowflake channel_id, const snowflake guild_id, const snowflake user_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Change current user nickname - * - * Modifies the nickname of the current user in a guild. - * Fires a `Guild Member Update` Gateway event. - * - * @deprecated Deprecated in favor of Modify Current Member. Will be replaced by dpp::cluster::guild_current_member_edit - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/guild#modify-current-user-nick - * @param guild_id Guild ID to change nickname on - * @param nickname New nickname, or empty string to clear nickname - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_set_nickname(snowflake guild_id, const std::string &nickname, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Add role to guild member - * - * Adds a role to a guild member. Requires the `MANAGE_ROLES` permission. - * Fires a `Guild Member Update` Gateway event. - * @see https://discord.com/developers/docs/resources/guild#add-guild-member-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to add a role to - * @param user_id User ID to add role to - * @param role_id Role ID to add to the user - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_member_add_role(snowflake guild_id, snowflake user_id, snowflake role_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Remove role from guild member - * - * Removes a role from a guild member. Requires the `MANAGE_ROLES` permission. - * Fires a `Guild Member Update` Gateway event. - * @see https://discord.com/developers/docs/resources/guild#remove-guild-member-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to remove role from user on - * @param user_id User ID to remove role from - * @param role_id Role to remove - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - * @deprecated Use dpp::cluster::guild_member_remove_role instead - */ - void guild_member_delete_role(snowflake guild_id, snowflake user_id, snowflake role_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Remove role from guild member - * - * Removes a role from a guild member. Requires the `MANAGE_ROLES` permission. - * Fires a `Guild Member Update` Gateway event. - * @see https://discord.com/developers/docs/resources/guild#remove-guild-member-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to remove role from user on - * @param user_id User ID to remove role from - * @param role_id Role to remove - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_member_remove_role(snowflake guild_id, snowflake user_id, snowflake role_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Remove (kick) a guild member - * - * Remove a member from a guild. Requires `KICK_MEMBERS` permission. - * Fires a `Guild Member Remove` Gateway event. - * @see https://discord.com/developers/docs/resources/guild#remove-guild-member - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @deprecated Replaced by dpp::cluster::guild_member_kick - * @param guild_id Guild ID to kick member from - * @param user_id User ID to kick - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_member_delete(snowflake guild_id, snowflake user_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Remove (kick) a guild member - * - * Remove a member from a guild. Requires `KICK_MEMBERS` permission. - * Fires a `Guild Member Remove` Gateway event. - * @see https://discord.com/developers/docs/resources/guild#remove-guild-member - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to kick member from - * @param user_id User ID to kick - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_member_kick(snowflake guild_id, snowflake user_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Set the timeout of a guild member - * - * Fires a `Guild Member Update` Gateway event. - * @see https://discord.com/developers/docs/resources/guild#modify-guild-member - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to timeout the member in - * @param user_id User ID to set the timeout for - * @param communication_disabled_until The timestamp when the user's timeout will expire (up to 28 days in the future). Set to 0 to remove the timeout - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_member_timeout(snowflake guild_id, snowflake user_id, time_t communication_disabled_until, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Add guild ban - * - * Create a guild ban, and optionally delete previous messages sent by the banned user. - * Requires the `BAN_MEMBERS` permission. Fires a `Guild Ban Add` Gateway event. - * @see https://discord.com/developers/docs/resources/guild#create-guild-ban - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to add ban to - * @param user_id User ID to ban - * @param delete_message_seconds How many seconds to delete messages for, between 0 and 604800 (7 days). Defaults to 0 - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_ban_add(snowflake guild_id, snowflake user_id, uint32_t delete_message_seconds = 0, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete guild ban - * - * Remove the ban for a user. Requires the `BAN_MEMBERS` permissions. - * Fires a Guild Ban Remove Gateway event. - * @see https://discord.com/developers/docs/resources/guild#remove-guild-ban - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild to delete ban from - * @param user_id User ID to delete ban for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_ban_delete(snowflake guild_id, snowflake user_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get guild ban list - * - * Requires the `BAN_MEMBERS` permission. - * @see https://discord.com/developers/docs/resources/guild#get-guild-bans - * @note Provide a user ID to `before` and `after` for pagination. Users will always be returned in ascending order by the user ID. If both before and after are provided, only before is respected. - * @param guild_id Guild ID to get bans for - * @param before If non-zero, all bans for user ids before this user id will be returned up to the limit - * @param after if non-zero, all bans for user ids after this user id will be returned up to the limit - * @param limit the maximum number of bans to retrieve in this call up to a maximum of 1000 - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::ban_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_get_bans(snowflake guild_id, snowflake before, snowflake after, snowflake limit, command_completion_event_t callback); - - /** - * @brief Get single guild ban - * - * Requires the `BAN_MEMBERS` permission. - * @see https://discord.com/developers/docs/resources/guild#get-guild-ban - * @param guild_id Guild ID to get ban for - * @param user_id User ID of ban to retrieve - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::ban object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_get_ban(snowflake guild_id, snowflake user_id, command_completion_event_t callback); - - /** - * @brief Get a template - * @see https://discord.com/developers/docs/resources/guild-template#get-guild-template - * @param code Template code - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::dtemplate object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void template_get(const std::string &code, command_completion_event_t callback); - - /** - * @brief Create a new guild based on a template. - * @note This endpoint can be used only by bots in less than 10 guilds. - * @see https://discord.com/developers/docs/resources/guild-template#create-guild-from-guild-template - * @param code Template code to create guild from - * @param name Guild name to create - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_create_from_template(const std::string &code, const std::string &name, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get guild templates - * - * @see https://discord.com/developers/docs/resources/guild-template#get-guild-templates - * @param guild_id Guild ID to get templates for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::dtemplate_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_templates_get(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Creates a template for the guild - * - * @see https://discord.com/developers/docs/resources/guild-template#create-guild-template - * @param guild_id Guild to create template from - * @param name Template name to create - * @param description Description of template to create - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::dtemplate object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_template_create(snowflake guild_id, const std::string &name, const std::string &description, command_completion_event_t callback); - - /** - * @brief Syncs the template to the guild's current state. - * - * @see https://discord.com/developers/docs/resources/guild-template#sync-guild-template - * @param guild_id Guild to synchronise template for - * @param code Code of template to synchronise - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::dtemplate object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_template_sync(snowflake guild_id, const std::string &code, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Modifies the template's metadata. - * - * @see https://discord.com/developers/docs/resources/guild-template#modify-guild-template - * @param guild_id Guild ID of template to modify - * @param code Template code to modify - * @param name New name of template - * @param description New description of template - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::dtemplate object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_template_modify(snowflake guild_id, const std::string &code, const std::string &name, const std::string &description, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Deletes the template - * - * @see https://discord.com/developers/docs/resources/guild-template#delete-guild-template - * @param guild_id Guild ID of template to delete - * @param code Template code to delete - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_template_delete(snowflake guild_id, const std::string &code, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Create a guild - * - * Create a new guild. Returns a guild object on success. `Fires a Guild Create Gateway` event. - * - * When using the roles parameter, the first member of the array is used to change properties of the guild's everyone role. - * If you are trying to bootstrap a guild with additional roles, keep this in mind. The required id field within each role object is an - * integer placeholder, and will be replaced by the API upon consumption. Its purpose is to allow you to overwrite a role's permissions - * in a channel when also passing in channels with the channels array. - * When using the channels parameter, the position field is ignored, and none of the default channels are created. The id field within - * each channel object may be set to an integer placeholder, and will be replaced by the API upon consumption. Its purpose is to - * allow you to create `GUILD_CATEGORY` channels by setting the `parent_id` field on any children to the category's id field. - * Category channels must be listed before any children. - * - * @see https://discord.com/developers/docs/resources/guild#create-guild - * @note The region field is deprecated and is replaced by channel.rtc_region. This endpoint can be used only by bots in less than 10 guilds. - * @param g Guild to create - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_create(const class guild &g, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit a guild - * - * Modify a guild's settings. Requires the `MANAGE_GUILD` permission. Returns the updated guild object on success. - * Fires a `Guild Update Gateway` event. - * - * @see https://discord.com/developers/docs/resources/guild#modify-guild - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param g Guild to edit - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_edit(const class guild &g, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete a guild - * - * Delete a guild permanently. User must be owner. Fires a `Guild Delete Gateway` event. - * - * @see https://discord.com/developers/docs/resources/guild#delete-guild - * @param guild_id Guild ID to delete - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_delete(snowflake guild_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get all emojis for a guild - * - * @see https://discord.com/developers/docs/resources/emoji#get-guild-emojis - * @param guild_id Guild ID to get emojis for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::emoji_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_emojis_get(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Get a single emoji - * - * @see https://discord.com/developers/docs/resources/emoji#get-guild-emoji - * @param guild_id Guild ID to get emoji for - * @param emoji_id Emoji ID to get - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::emoji object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_emoji_get(snowflake guild_id, snowflake emoji_id, command_completion_event_t callback); - - /** - * @brief Create single emoji. - * You must ensure that the emoji passed contained image data using the emoji::load_image() method. - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see https://discord.com/developers/docs/resources/emoji#create-guild-emoji - * @param guild_id Guild ID to create emoji om - * @param newemoji Emoji to create - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::emoji object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_emoji_create(snowflake guild_id, const class emoji& newemoji, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit a single emoji. - * - * You must ensure that the emoji passed contained image data using the emoji::load_image() method. - * @see https://discord.com/developers/docs/resources/emoji#get-guild-emoji - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to edit emoji on - * @param newemoji Emoji to edit - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::emoji object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_emoji_edit(snowflake guild_id, const class emoji& newemoji, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete a guild emoji - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see https://discord.com/developers/docs/resources/emoji#delete-guild-emoji - * @param guild_id Guild ID to delete emoji on - * @param emoji_id Emoji ID to delete - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_emoji_delete(snowflake guild_id, snowflake emoji_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get prune counts - * - * Returns a prune object indicating the number of members that would be removed in a prune operation. Requires the `KICK_MEMBERS` - * permission. By default, prune will not remove users with roles. You can optionally include specific roles in your prune by providing the - * include_roles parameter. Any inactive user that has a subset of the provided role(s) will be counted in the prune and users with additional - * roles will not. - * - * @see https://discord.com/developers/docs/resources/guild#get-guild-prune-count - * @param guild_id Guild ID to count for pruning - * @param pruneinfo Pruning info - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::prune object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_get_prune_counts(snowflake guild_id, const struct prune& pruneinfo, command_completion_event_t callback); - - /** - * @brief Begin guild prune - * - * Begin a prune operation. Requires the `KICK_MEMBERS` permission. Returns a prune object indicating the number of members - * that were removed in the prune operation. For large guilds it's recommended to set the `compute_prune_count` option to false, forcing - * 'pruned' to 0. Fires multiple `Guild Member Remove` Gateway events. - * By default, prune will not remove users with roles. You can optionally include specific roles in your prune by providing the `include_roles` - * parameter. Any inactive user that has a subset of the provided role(s) will be included in the prune and users with additional roles will not. - * - * @see https://discord.com/developers/docs/resources/guild#begin-guild-prune - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to prune - * @param pruneinfo Pruning info - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::prune object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_begin_prune(snowflake guild_id, const struct prune& pruneinfo, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get guild voice regions. - * - * Voice regions per guild are somewhat deprecated in preference of per-channel voice regions. - * Returns a list of voice region objects for the guild. Unlike the similar /voice route, this returns VIP servers when - * the guild is VIP-enabled. - * - * @see https://discord.com/developers/docs/resources/guild#get-guild-voice-regions - * @param guild_id Guild ID to get voice regions for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::voiceregion_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_get_voice_regions(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Get guild invites - * - * Returns a list of invite objects (with invite metadata) for the guild. Requires the `MANAGE_GUILD` permission. - * - * @see https://discord.com/developers/docs/resources/guild#get-guild-invites - * @param guild_id Guild ID to get invites for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::invite_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_get_invites(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Get guild integrations - * - * Requires the `MANAGE_GUILD` permission. - * - * @see https://discord.com/developers/docs/resources/guild#get-guild-integrations - * @param guild_id Guild ID to get integrations for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::integration_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - * - * @note This endpoint returns a maximum of 50 integrations. If a guild has more integrations, they cannot be accessed. - */ - void guild_get_integrations(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Modify guild integration - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see https://discord.com/developers/docs/resources/guild#modify-guild-integration - * @param guild_id Guild ID to modify integration for - * @param i Integration to modify - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::integration object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_modify_integration(snowflake guild_id, const class integration &i, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete guild integration - * - * Delete the attached integration object for the guild. Deletes any associated webhooks and kicks the associated bot if there is one. - * Requires the `MANAGE_GUILD` permission. Fires a Guild Integrations Update Gateway event. - * - * @see https://discord.com/developers/docs/resources/guild#delete-guild-integration - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to delete integration for - * @param integration_id Integration ID to delete - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_delete_integration(snowflake guild_id, snowflake integration_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Sync guild integration - * - * @see https://discord.com/developers/docs/resources/guild#sync-guild-integration - * @param guild_id Guild ID to sync integration on - * @param integration_id Integration ID to synchronise - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_sync_integration(snowflake guild_id, snowflake integration_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get guild widget - * - * Requires the `MANAGE_GUILD` permission. - * - * @see https://discord.com/developers/docs/resources/guild#get-guild-widget - * @param guild_id Guild ID to get widget for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild_widget object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_get_widget(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Edit guild widget - * - * Requires the `MANAGE_GUILD` permission. - * - * @see https://discord.com/developers/docs/resources/guild#modify-guild-widget - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to edit widget for - * @param gw New guild widget information - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild_widget object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_edit_widget(snowflake guild_id, const class guild_widget &gw, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get guild vanity url, if enabled - * - * Returns a partial dpp::invite object for guilds with that feature enabled. Requires the `MANAGE_GUILD` permission. code will be null if a vanity url for the guild is not set. - * @see https://discord.com/developers/docs/resources/guild#get-guild-vanity-url - * @param guild_id Guild to get vanity URL for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::invite object in confirmation_callback_t::value filled to match the vanity url. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_get_vanity(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Create a webhook - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/webhook#create-webhook - * @param w Webhook to create - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::webhook object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void create_webhook(const class webhook &w, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get guild webhooks - * @see https://discord.com/developers/docs/resources/webhook#get-guild-webhooks - * @param guild_id Guild ID to get webhooks for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::webhook_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void get_guild_webhooks(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Get channel webhooks - * @see https://discord.com/developers/docs/resources/webhook#get-guild-webhooks - * @param channel_id Channel ID to get webhooks for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::webhook_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void get_channel_webhooks(snowflake channel_id, command_completion_event_t callback); - - /** - * @brief Get webhook - * @see https://discord.com/developers/docs/resources/webhook#get-webhook - * @param webhook_id Webhook ID to get - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::webhook object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void get_webhook(snowflake webhook_id, command_completion_event_t callback); - - /** - * @brief Get webhook using token - * @see https://discord.com/developers/docs/resources/webhook#get-webhook-with-token - * @param webhook_id Webhook ID to retrieve - * @param token Token of webhook - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::webhook object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void get_webhook_with_token(snowflake webhook_id, const std::string &token, command_completion_event_t callback); - - /** - * @brief Edit webhook - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/webhook#modify-webhook - * @param wh Webhook to edit - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::webhook object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void edit_webhook(const class webhook& wh, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit webhook with token (token is encapsulated in the webhook object) - * @see https://discord.com/developers/docs/resources/webhook#modify-webhook-with-token - * @param wh Webhook to edit (should include token) - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::webhook object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void edit_webhook_with_token(const class webhook& wh, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete a webhook - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/webhook#delete-webhook - * @param webhook_id Webhook ID to delete - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void delete_webhook(snowflake webhook_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete webhook with token - * @see https://discord.com/developers/docs/resources/webhook#delete-webhook-with-token - * @param webhook_id Webhook ID to delete - * @param token Token of webhook to delete - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void delete_webhook_with_token(snowflake webhook_id, const std::string &token, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Execute webhook - * - * @see https://discord.com/developers/docs/resources/webhook#execute-webhook - * @param wh Webhook to execute - * @param m Message to send - * @param wait waits for server confirmation of message send before response, and returns the created message body - * @param thread_id Send a message to the specified thread within a webhook's channel. The thread will automatically be unarchived - * @param thread_name Name of thread to create (requires the webhook channel to be a forum channel) - * @param callback Function to call when the API call completes. - * @note If the webhook channel is a forum channel, you must provide either `thread_id` or `thread_name`. If `thread_id` is provided, the message will send in that thread. If `thread_name` is provided, a thread with that name will be created in the forum channel. - * On success the callback will contain a dpp::message object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void execute_webhook(const class webhook &wh, const struct message &m, bool wait = false, snowflake thread_id = 0, const std::string& thread_name = "", command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get webhook message - * - * @see https://discord.com/developers/docs/resources/webhook#get-webhook-message - * @param wh Webhook to get the original message for - * @param message_id The message ID - * @param thread_id ID of the thread the message is in - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::message object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void get_webhook_message(const class webhook &wh, snowflake message_id, snowflake thread_id = 0, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit webhook message - * - * When the content field is edited, the mentions array in the message object will be reconstructed from scratch based on - * the new content. The allowed_mentions field of the edit request controls how this happens. If there is no explicit - * allowed_mentions in the edit request, the content will be parsed with default allowances, that is, without regard to - * whether or not an allowed_mentions was present in the request that originally created the message. - * - * @see https://discord.com/developers/docs/resources/webhook#edit-webhook-message - * @note the attachments array must contain all attachments that should be present after edit, including retained and new attachments provided in the request body. - * @param wh Webhook to edit message for - * @param m New message - * @param thread_id ID of the thread the message is in - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::message object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void edit_webhook_message(const class webhook &wh, const struct message &m, snowflake thread_id = 0, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete webhook message - * - * @see https://discord.com/developers/docs/resources/webhook#delete-webhook-message - * @param wh Webhook to delete message for - * @param message_id Message ID to delete - * @param thread_id ID of the thread the message is in - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void delete_webhook_message(const class webhook &wh, snowflake message_id, snowflake thread_id = 0, command_completion_event_t callback = utility::log_error()); - - - /** - * @brief Get a role for a guild - * - * @see https://discord.com/developers/docs/resources/guild#get-guild-roles - * @param guild_id Guild ID to get role for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::role_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void roles_get(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Create a role on a guild - * - * Create a new role for the guild. Requires the `MANAGE_ROLES` permission. Returns the new role object on success. - * Fires a `Guild Role Create` Gateway event. - * - * @see https://discord.com/developers/docs/resources/guild#create-guild-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param r Role to create (guild ID is encapsulated in the role object) - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::role object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void role_create(const class role &r, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit a role on a guild - * - * Requires the `MANAGE_ROLES` permission. Returns the updated role on success. Fires a `Guild Role Update` Gateway event. - * - * @see https://discord.com/developers/docs/resources/guild#modify-guild-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param r Role to edit - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::role object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void role_edit(const class role &r, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit multiple role's position in a guild. Returns a list of all roles of the guild on success. - * - * Modify the positions of a set of role objects for the guild. Requires the `MANAGE_ROLES` permission. - * Fires multiple `Guild Role Update` Gateway events. - * - * @see https://discord.com/developers/docs/resources/guild#modify-guild-role-positions - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to change the roles position on - * @param roles Vector of roles to change the positions of - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::role_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void roles_edit_position(snowflake guild_id, const std::vector &roles, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete a role - * - * Requires the `MANAGE_ROLES` permission. Fires a `Guild Role Delete` Gateway event. - * - * @see https://discord.com/developers/docs/resources/guild#delete-guild-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to delete the role on - * @param role_id Role ID to delete - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void role_delete(snowflake guild_id, snowflake role_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get the application's role connection metadata records - * - * @see https://discord.com/developers/docs/resources/application-role-connection-metadata#get-application-role-connection-metadata-records - * @param application_id The application ID - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::application_role_connection_metadata_list object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void application_role_connection_get(snowflake application_id, command_completion_event_t callback); - - /** - * @brief Update the application's role connection metadata records - * - * @see https://discord.com/developers/docs/resources/application-role-connection-metadata#update-application-role-connection-metadata-records - * @param application_id The application ID - * @param connection_metadata The application role connection metadata to update - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::application_role_connection_metadata_list object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - * @note An application can have a maximum of 5 metadata records. - */ - void application_role_connection_update(snowflake application_id, const std::vector &connection_metadata, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get user application role connection - * - * @see https://discord.com/developers/docs/resources/user#get-user-application-role-connection - * @param application_id The application ID - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::application_role_connection object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void user_application_role_connection_get(snowflake application_id, command_completion_event_t callback); - - /** - * @brief Update user application role connection - * - * @see https://discord.com/developers/docs/resources/user#update-user-application-role-connection - * @param application_id The application ID - * @param connection The application role connection to update - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::application_role_connection object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void user_application_role_connection_update(snowflake application_id, const application_role_connection &connection, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get a user by id, without using the cache - * - * @see https://discord.com/developers/docs/resources/user#get-user - * @param user_id User ID to retrieve - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::user_identified object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - * @note The user_identified object is a subclass of dpp::user which contains further details if you have the oauth2 identify or email scopes. - * If you do not have these scopes, these fields are empty. You can safely convert a user_identified to user with `dynamic_cast`. - * @note unless you want something special from `dpp::user_identified` or you've turned off caching, you have no need to call this. - * Call `dpp::find_user` instead that looks up the user in the cache rather than a REST call. - */ - void user_get(snowflake user_id, command_completion_event_t callback); - - /** - * @brief Get a user by id, checking in the cache first - * - * @see https://discord.com/developers/docs/resources/user#get-user - * @param user_id User ID to retrieve - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::user_identified object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - * @note The user_identified object is a subclass of dpp::user which contains further details if you have the oauth2 identify or email scopes. - * If you do not have these scopes, these fields are empty. You can safely convert a user_identified to user with `dynamic_cast`. - * @note If the user is found in the cache, special values set in `dpp::user_identified` will be undefined. This call should be used - * where you want to for example resolve a user who may no longer be in the bot's guilds, for something like a ban log message. - */ - void user_get_cached(snowflake user_id, command_completion_event_t callback); - - /** - * @brief Get current (bot) user - * - * @see https://discord.com/developers/docs/resources/user#get-current-user - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::user_identified object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - * @note The user_identified object is a subclass of dpp::user which contains further details if you have the oauth2 identify or email scopes. - * If you do not have these scopes, these fields are empty. You can safely convert a user_identified to user with `dynamic_cast`. - */ - void current_user_get(command_completion_event_t callback); - - /** - * @brief Get current (bot) application - * - * @see https://discord.com/developers/docs/topics/oauth2#get-current-bot-application-information - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::application object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void current_application_get(command_completion_event_t callback); - - /** - * @brief Modify current member - * - * Modifies the current member in a guild. - * Fires a `Guild Member Update` Gateway event. - * - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/guild#modify-current-member - * @param guild_id Guild ID to change on - * @param nickname New nickname, or empty string to clear nickname - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_current_member_edit(snowflake guild_id, const std::string &nickname, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get current user's connections (linked accounts, e.g. steam, xbox). - * This call requires the oauth2 `connections` scope and cannot be executed - * against a bot token. - * @see https://discord.com/developers/docs/resources/user#get-user-connections - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::connection_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void current_user_connections_get(command_completion_event_t callback); - - /** - * @brief Get current (bot) user guilds - * @see https://discord.com/developers/docs/resources/user#get-current-user-guilds - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::guild_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void current_user_get_guilds(command_completion_event_t callback); - - /** - * @brief Edit current (bot) user - * - * Modifies the current member in a guild. Returns the updated guild_member object on success. - * Fires a `Guild Member Update` Gateway event. - * @see https://discord.com/developers/docs/resources/user#modify-current-user - * @param nickname Nickname to set - * @param image_blob Avatar data to upload (NOTE: Very heavily rate limited!) - * @param type Type of image for avatar. It can be one of `i_gif`, `i_jpg` or `i_png`. - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::user object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - * @throw dpp::length_exception Image data is larger than the maximum size of 256 kilobytes - */ - void current_user_edit(const std::string &nickname, const std::string& image_blob = "", const image_type type = i_png, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get current user DM channels - * - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::channel_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void current_user_get_dms(command_completion_event_t callback); - - /** - * @brief Create a dm channel - * @see https://discord.com/developers/docs/resources/user#create-dm - * @param user_id User ID to create DM channel with - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::channel object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void create_dm_channel(snowflake user_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Leave a guild - * @see https://discord.com/developers/docs/resources/user#leave-guild - * @param guild_id Guild ID to leave - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void current_user_leave_guild(snowflake guild_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Create a thread in forum channel - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see https://discord.com/developers/docs/resources/channel#start-thread-in-forum-channel - * @param thread_name Name of the forum thread - * @param channel_id Forum channel in which thread to create - * @param msg The message to start the thread with - * @param auto_archive_duration Duration to automatically archive the thread after recent activity - * @param rate_limit_per_user amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages, manage_thread, or manage_channel, are unaffected - * @param applied_tags List of IDs of forum tags (dpp::forum_tag) to apply to this thread - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::thread object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void thread_create_in_forum(const std::string& thread_name, snowflake channel_id, const message& msg, auto_archive_duration_t auto_archive_duration, uint16_t rate_limit_per_user, std::vector applied_tags = {}, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Create a thread - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see https://discord.com/developers/docs/resources/guild#create-guild-channel - * @param thread_name Name of the thread - * @param channel_id Channel in which thread to create - * @param auto_archive_duration Duration after which thread auto-archives. Can be set to - 60, 1440 (for boosted guilds can also be: 4320, 10080) - * @param thread_type Type of thread - CHANNEL_PUBLIC_THREAD, CHANNEL_ANNOUNCEMENT_THREAD, CHANNEL_PRIVATE_THREAD - * @param invitable whether non-moderators can add other non-moderators to a thread; only available when creating a private thread - * @param rate_limit_per_user amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages, manage_thread, or manage_channel, are unaffected - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::thread object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void thread_create(const std::string& thread_name, snowflake channel_id, uint16_t auto_archive_duration, channel_type thread_type, bool invitable, uint16_t rate_limit_per_user, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Create a thread with a message (Discord: ID of a thread is same as message ID) - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/topics/threads - * @param thread_name Name of the thread - * @param channel_id Channel in which thread to create - * @param message_id message to start thread with - * @param auto_archive_duration Duration after which thread auto-archives. Can be set to - 60, 1440 (for boosted guilds can also be: 4320, 10080) - * @param rate_limit_per_user amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages, manage_thread, or manage_channel, are unaffected - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::thread object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void thread_create_with_message(const std::string& thread_name, snowflake channel_id, snowflake message_id, uint16_t auto_archive_duration, uint16_t rate_limit_per_user, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Join a thread - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread ID to join - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void current_user_join_thread(snowflake thread_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Leave a thread - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread ID to leave - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void current_user_leave_thread(snowflake thread_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Add a member to a thread - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread ID to add to - * @param user_id Member ID to add - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void thread_member_add(snowflake thread_id, snowflake user_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Remove a member from a thread - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread ID to remove from - * @param user_id Member ID to remove - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void thread_member_remove(snowflake thread_id, snowflake user_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get a thread member - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread to get member for - * @param user_id ID of the user to get - * @param callback Function to call when the API call completes - * On success the callback will contain a dpp::thread_member object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void thread_member_get(const snowflake thread_id, const snowflake user_id, command_completion_event_t callback); - - /** - * @brief Get members of a thread - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread to get members for - * @param callback Function to call when the API call completes - * On success the callback will contain a dpp::thread_member_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void thread_members_get(snowflake thread_id, command_completion_event_t callback); - - /** - * @brief Get active threads in a guild (Sorted by ID in descending order) - * @see https://discord.com/developers/docs/topics/threads - * @param guild_id Guild to get active threads for - * @param callback Function to call when the API call completes - * On success the callback will contain a dpp::thread_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void threads_get_active(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Get public archived threads in a channel (Sorted by archive_timestamp in descending order) - * @see https://discord.com/developers/docs/topics/threads - * @param channel_id Channel to get public archived threads for - * @param before_timestamp Get threads before this timestamp - * @param limit Number of threads to get - * @param callback Function to call when the API call completes - * On success the callback will contain a dpp::thread_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void threads_get_public_archived(snowflake channel_id, time_t before_timestamp, uint16_t limit, command_completion_event_t callback); - - /** - * @brief Get private archived threads in a channel (Sorted by archive_timestamp in descending order) - * @see https://discord.com/developers/docs/topics/threads - * @param channel_id Channel to get public archived threads for - * @param before_timestamp Get threads before this timestamp - * @param limit Number of threads to get - * @param callback Function to call when the API call completes - * On success the callback will contain a dpp::thread_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void threads_get_private_archived(snowflake channel_id, time_t before_timestamp, uint16_t limit, command_completion_event_t callback); - - /** - * @brief Get private archived threads in a channel which current user has joined (Sorted by ID in descending order) - - * @see https://discord.com/developers/docs/topics/threads - * @param channel_id Channel to get public archived threads for - * @param before_id Get threads before this id - * @param limit Number of threads to get - * @param callback Function to call when the API call completes - * On success the callback will contain a dpp::thread_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void threads_get_joined_private_archived(snowflake channel_id, snowflake before_id, uint16_t limit, command_completion_event_t callback); - - /** - * @brief Create a sticker in a guild - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/sticker#create-guild-sticker - * @param s Sticker to create. Must have its guild ID set. - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::sticker object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_sticker_create(sticker &s, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Modify a sticker in a guild - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/sticker#modify-guild-sticker - * @param s Sticker to modify. Must have its guild ID and sticker ID set. - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::sticker object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_sticker_modify(sticker &s, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete a sticker from a guild - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see https://discord.com/developers/docs/resources/sticker#delete-guild-sticker - * @param sticker_id sticker ID to delete - * @param guild_id guild ID to delete from - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::sticker object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_sticker_delete(snowflake sticker_id, snowflake guild_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get a nitro sticker - * @see https://discord.com/developers/docs/resources/sticker#get-sticker - * @param id Id of sticker to get. - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::sticker object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void nitro_sticker_get(snowflake id, command_completion_event_t callback); - - /** - * @brief Get a guild sticker - * @see https://discord.com/developers/docs/resources/sticker#get-guild-sticker - * @param id Id of sticker to get. - * @param guild_id Guild ID of the guild where the sticker is - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::sticker object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_sticker_get(snowflake id, snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Get all guild stickers - * @see https://discord.com/developers/docs/resources/sticker#get-guild-stickers - * @param guild_id Guild ID of the guild where the sticker is - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::sticker_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_stickers_get(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Get sticker packs - * @see https://discord.com/developers/docs/resources/sticker#list-nitro-sticker-packs - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::sticker_pack_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void sticker_packs_get(command_completion_event_t callback); - - /** - * @brief Create a stage instance on a stage channel. - * @see https://discord.com/developers/docs/resources/stage-instance#create-stage-instance - * @param instance Stage instance to create - * @param callback User function to execute when the api call completes - * On success the callback will contain a dpp::stage_instance object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - */ - void stage_instance_create(const stage_instance& instance, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get the stage instance associated with the channel id, if it exists. - * @see https://discord.com/developers/docs/resources/stage-instance#get-stage-instance - * @param channel_id ID of the associated channel - * @param callback User function to execute when the api call completes - * On success the callback will contain a dpp::stage_instance object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void stage_instance_get(const snowflake channel_id, command_completion_event_t callback); - - /** - * @brief Edit a stage instance. - * @see https://discord.com/developers/docs/resources/stage-instance#modify-stage-instance - * @param instance Stage instance to edit - * @param callback User function to execute when the api call completes - * On success the callback will contain a dpp::stage_instance object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - */ - void stage_instance_edit(const stage_instance& instance, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete a stage instance. - * @see https://discord.com/developers/docs/resources/stage-instance#delete-stage-instance - * @param channel_id ID of the associated channel - * @param callback User function to execute when the api call completes - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - */ - void stage_instance_delete(const snowflake channel_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get all voice regions - * @see https://discord.com/developers/docs/resources/voice#list-voice-regions - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::voiceregion_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void get_voice_regions(command_completion_event_t callback); - - /** - * @brief Get the gateway information for the bot using the token - * @see https://discord.com/developers/docs/topics/gateway#get-gateway-bot - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::gateway object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void get_gateway_bot(command_completion_event_t callback); - - /** - * @brief Get all scheduled events for a guild - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild - * @param guild_id Guild to get events for - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::scheduled_event_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_events_get(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Get users RSVP'd to an event - * - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event-users - * @param guild_id Guild to get user list for - * @param event_id Guild to get user list for - * @param limit Maximum number of results to return - * @param before Return user IDs that fall before this ID, if provided - * @param after Return user IDs that fall after this ID, if provided - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::event_member_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_event_users_get(snowflake guild_id, snowflake event_id, command_completion_event_t callback, uint8_t limit = 100, snowflake before = 0, snowflake after = 0); - - /** - * @brief Create a scheduled event on a guild - * - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event - * @param event Event to create (guild ID must be populated) - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::scheduled_event_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_event_create(const scheduled_event& event, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete a scheduled event from a guild - * - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#delete-guild-scheduled-event - * @param event_id Event ID to delete - * @param guild_id Guild ID of event to delete - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_event_delete(snowflake event_id, snowflake guild_id, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit/modify a scheduled event on a guild - * - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event - * @param event Event to create (event ID and guild ID must be populated) - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::scheduled_event_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_event_edit(const scheduled_event& event, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get a scheduled event for a guild - * - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event - * @param guild_id Guild to get event for - * @param event_id Event ID to get - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::scheduled_event object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void guild_event_get(snowflake guild_id, snowflake event_id, command_completion_event_t callback); - - /** - * @brief Set the bot's voice state on a stage channel - * - * **Caveats** - * - * There are currently several caveats for this endpoint: - * - * - `channel_id` must currently point to a stage channel. - * - current user must already have joined `channel_id`. - * - You must have the `MUTE_MEMBERS` permission to unsuppress yourself. You can always suppress yourself. - * - You must have the `REQUEST_TO_SPEAK` permission to request to speak. You can always clear your own request to speak. - * - You are able to set `request_to_speak_timestamp` to any present or future time. - * - * @see https://discord.com/developers/docs/resources/guild#modify-current-user-voice-state - * @param guild_id Guild to set voice state on - * @param channel_id Stage channel to set voice state on - * @param callback Function to call when the API call completes. - * @param suppress True if the user's audio should be suppressed, false if it should not - * @param request_to_speak_timestamp The time at which we requested to speak, or 0 to clear the request. The time set here must be the current time or in the future. - * On success the callback will contain a dpp::scheduled_event object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - * @throw std::logic_exception You attempted to set a request_to_speak_timestamp in the past which is not the value of 0. - */ - void current_user_set_voice_state(snowflake guild_id, snowflake channel_id, bool suppress = false, time_t request_to_speak_timestamp = 0, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Set a user's voice state on a stage channel - * - * **Caveats** - * - * There are currently several caveats for this endpoint: - * - * - `channel_id` must currently point to a stage channel. - * - User must already have joined `channel_id`. - * - You must have the `MUTE_MEMBERS` permission. (Since suppression is the only thing that is available currently) - * - When unsuppressed, non-bot users will have their `request_to_speak_timestamp` set to the current time. Bot users will not. - * - When suppressed, the user will have their `request_to_speak_timestamp` removed. - * - * @see https://discord.com/developers/docs/resources/guild#modify-user-voice-state - * @param user_id The user to set the voice state of - * @param guild_id Guild to set voice state on - * @param channel_id Stage channel to set voice state on - * @param callback Function to call when the API call completes. - * @param suppress True if the user's audio should be suppressed, false if it should not - * On success the callback will contain a dpp::scheduled_event object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void user_set_voice_state(snowflake user_id, snowflake guild_id, snowflake channel_id, bool suppress = false, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Get all auto moderation rules for a guild - * - * @param guild_id Guild id of the auto moderation rule - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::automod_rule_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void automod_rules_get(snowflake guild_id, command_completion_event_t callback); - - /** - * @brief Get a single auto moderation rule - * - * @param guild_id Guild id of the auto moderation rule - * @param rule_id Rule id to retrieve - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::automod_rule object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void automod_rule_get(snowflake guild_id, snowflake rule_id, command_completion_event_t callback); - - /** - * @brief Create an auto moderation rule - * - * @param guild_id Guild id of the auto moderation rule - * @param r Auto moderation rule to create - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::automod_rule object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void automod_rule_create(snowflake guild_id, const automod_rule& r, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Edit an auto moderation rule - * - * @param guild_id Guild id of the auto moderation rule - * @param r Auto moderation rule to edit. The rule's id must be set. - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::automod_rule object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void automod_rule_edit(snowflake guild_id, const automod_rule& r, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Delete an auto moderation rule - * - * @param guild_id Guild id of the auto moderation rule - * @param rule_id Auto moderation rule id to delete - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void automod_rule_delete(snowflake guild_id, snowflake rule_id, command_completion_event_t callback = utility::log_error()); - -#include -#ifdef DPP_CORO -#include -#endif - -}; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/cluster_coro_calls.h b/Source/ThirdParty/DPPLibrary/include/dpp/cluster_coro_calls.h deleted file mode 100644 index cf5b959..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/cluster_coro_calls.h +++ /dev/null @@ -1,2317 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2022 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - - -/* Auto @generated by buildtools/make_coro_struct.php. - * - * DO NOT EDIT BY HAND! - * - * To re-generate this header file re-run the script! - */ -/** - * @brief Create/overwrite global slash commands. - * Any existing global slash commands will be deleted and replaced with these. - * - * @see dpp::cluster::global_bulk_command_create - * @see https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-global-application-commands - * @param commands Vector of slash commands to create/update. - * overwriting existing commands that are registered globally for this application. Updates will be available in all guilds after 1 hour. - * Commands that do not already exist will count toward daily application command create limits. - * @return slashcommand_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_global_bulk_command_create(const std::vector &commands) { - return dpp::awaitable(this, [&] (auto cc) { this->global_bulk_command_create(commands, cc); }); -} - -/** - * @brief Create a global slash command (a bot can have a maximum of 100 of these). - * - * @see dpp::cluster::global_command_create - * @see https://discord.com/developers/docs/interactions/application-commands#create-global-application-command - * @param s Slash command to create - * @return slashcommand returned object on completion - * \memberof dpp::cluster - */ -auto inline co_global_command_create(const slashcommand &s) { - return dpp::awaitable(this, [&] (auto cc) { this->global_command_create(s, cc); }); -} - -/** - * @brief Get a global slash command - * - * @see dpp::cluster::global_command_get - * @see https://discord.com/developers/docs/interactions/application-commands#get-global-application-command - * @param id The ID of the slash command - * @return slashcommand returned object on completion - * \memberof dpp::cluster - */ -auto inline co_global_command_get(snowflake id) { - return dpp::awaitable(this, [&] (auto cc) { this->global_command_get(id, cc); }); -} - -/** - * @brief Delete a global slash command (a bot can have a maximum of 100 of these) - * - * @see dpp::cluster::global_command_delete - * @see https://discord.com/developers/docs/interactions/application-commands#delete-global-application-command - * @param id Slash command to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_global_command_delete(snowflake id) { - return dpp::awaitable(this, [&] (auto cc) { this->global_command_delete(id, cc); }); -} - -/** - * @brief Edit a global slash command (a bot can have a maximum of 100 of these) - * - * @see dpp::cluster::global_command_edit - * @see https://discord.com/developers/docs/interactions/application-commands#edit-global-application-command - * @param s Slash command to change - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_global_command_edit(const slashcommand &s) { - return dpp::awaitable(this, [&] (auto cc) { this->global_command_edit(s, cc); }); -} - -/** - * @brief Get the application's global slash commands - * - * @see dpp::cluster::global_commands_get - * @see https://discord.com/developers/docs/interactions/application-commands#get-global-application-commands - * @return slashcommand_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_global_commands_get() { - return dpp::awaitable(this, [&] (auto cc) { this->global_commands_get(cc); }); -} - -/** - * @brief Create/overwrite guild slash commands. - * Any existing guild slash commands on this guild will be deleted and replaced with these. - * - * @see dpp::cluster::guild_bulk_command_create - * @see https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-guild-application-commands - * @param commands Vector of slash commands to create/update. - * New guild commands will be available in the guild immediately. If the command did not already exist, it will count toward daily application command create limits. - * @param guild_id Guild ID to create/update the slash commands in - * @return slashcommand_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_bulk_command_create(const std::vector &commands, snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_bulk_command_create(commands, guild_id, cc); }); -} - -/** - * @brief Get all slash command permissions of a guild - * - * @see dpp::cluster::guild_commands_get_permissions - * @see https://discord.com/developers/docs/interactions/application-commands#get-application-command-permissions - * @param guild_id Guild ID to get the slash commands permissions for - * @return guild_command_permissions_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_commands_get_permissions(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_commands_get_permissions(guild_id, cc); }); -} - -/** - * @brief Edit/Overwrite the permissions of all existing slash commands in a guild - * - * @note You can only add up to 10 permission overwrites for a command - * - * @see dpp::cluster::guild_bulk_command_edit_permissions - * @see https://discord.com/developers/docs/interactions/application-commands#batch-edit-application-command-permissions - * @warning The endpoint will overwrite all existing permissions for all commands of the application in a guild, including slash commands, user commands, and message commands. Meaning that if you forgot to pass a slash command, the permissions of it might be removed. - * @param commands A vector of slash commands to edit/overwrite the permissions for - * @param guild_id Guild ID to edit permissions of the slash commands in - * @return guild_command_permissions_map returned object on completion - * @deprecated This has been disabled with updates to Permissions v2. You can use guild_command_edit_permissions instead - * \memberof dpp::cluster - */ -auto inline co_guild_bulk_command_edit_permissions(const std::vector &commands, snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_bulk_command_edit_permissions(commands, guild_id, cc); }); -} - -/** - * @brief Create a slash command local to a guild - * - * @see dpp::cluster::guild_command_create - * @see https://discord.com/developers/docs/interactions/application-commands#create-guild-application-command - * @note Creating a command with the same name as an existing command for your application will overwrite the old command. - * @param s Slash command to create - * @param guild_id Guild ID to create the slash command in - * @return slashcommand returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_command_create(const slashcommand &s, snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_command_create(s, guild_id, cc); }); -} - -/** - * @brief Delete a slash command local to a guild - * - * @see dpp::cluster::guild_command_delete - * @see https://discord.com/developers/docs/interactions/application-commands#delete-guild-application-command - * @param id Slash command to delete - * @param guild_id Guild ID to delete the slash command in - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_command_delete(snowflake id, snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_command_delete(id, guild_id, cc); }); -} - -/** - * @brief Edit slash command permissions of a guild - * - * @see dpp::cluster::guild_command_edit_permissions - * @see https://discord.com/developers/docs/interactions/application-commands#edit-application-command-permissions - * @note You can only add up to 10 permission overwrites for a command - * @param s Slash command to edit the permissions for - * @param guild_id Guild ID to edit the slash command in - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_command_edit_permissions(const slashcommand &s, snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_command_edit_permissions(s, guild_id, cc); }); -} - -/** - * @brief Get a slash command of a guild - * - * @see dpp::cluster::guild_command_get - * @see https://discord.com/developers/docs/interactions/application-commands#get-guild-application-command - * @note The returned slash commands will not have permissions set, you need to use a permissions getter e.g. dpp::guild_commands_get_permissions to get the guild command permissions - * @param id The ID of the slash command - * @param guild_id Guild ID to get the slash command from - * @return slashcommand returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_command_get(snowflake id, snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_command_get(id, guild_id, cc); }); -} - -/** - * @brief Get the permissions for a slash command of a guild - * - * @see dpp::cluster::guild_command_get_permissions - * @see https://discord.com/developers/docs/interactions/application-commands#get-application-command-permissions - * @param id The ID of the slash command to get the permissions for - * @param guild_id Guild ID to get the permissions of - * @return guild_command_permissions returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_command_get_permissions(snowflake id, snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_command_get_permissions(id, guild_id, cc); }); -} - -/** - * @brief Edit a slash command local to a guild - * - * @see dpp::cluster::guild_command_edit - * @see https://discord.com/developers/docs/interactions/application-commands#edit-guild-application-command - * @param s Slash command to edit - * @param guild_id Guild ID to edit the slash command in - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_command_edit(const slashcommand &s, snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_command_edit(s, guild_id, cc); }); -} - -/** - * @brief Get the application's slash commands for a guild - * - * @see dpp::cluster::guild_commands_get - * @see https://discord.com/developers/docs/interactions/application-commands#get-guild-application-commands - * @note The returned slash commands will not have permissions set, you need to use a permissions getter e.g. dpp::guild_commands_get_permissions to get the guild command permissions - * @param guild_id Guild ID to get the slash commands for - * @return slashcommand_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_commands_get(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_commands_get(guild_id, cc); }); -} - -/** - * @brief Respond to a slash command - * - * @see dpp::cluster::interaction_response_create - * @see https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response - * @param interaction_id Interaction id to respond to - * @param token Token for the interaction webhook - * @param r Response to send - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_interaction_response_create(snowflake interaction_id, const std::string &token, const interaction_response &r) { - return dpp::awaitable(this, [&] (auto cc) { this->interaction_response_create(interaction_id, token, r, cc); }); -} - -/** - * @brief Edit response to a slash command - * - * @see dpp::cluster::interaction_response_edit - * @see https://discord.com/developers/docs/interactions/receiving-and-responding#edit-original-interaction-response - * @param token Token for the interaction webhook - * @param m Message to send - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_interaction_response_edit(const std::string &token, const message &m) { - return dpp::awaitable(this, [&] (auto cc) { this->interaction_response_edit(token, m, cc); }); -} - -/** - * @brief Create a followup message to a slash command - * - * @param token Token for the interaction webhook - * @param m followup message to create - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_interaction_followup_create(const std::string &token, const message &m) { - return dpp::awaitable(this, [&] (auto cc) { this->interaction_followup_create(token, m, cc); }); -} - -/** - * @brief Edit original followup message to a slash command - * This is an alias for cluster::interaction_response_edit - * @see dpp::cluster::interaction_followup_edit_original - * @see cluster::interaction_response_edit - * - * @param token Token for the interaction webhook - * @param m message to edit, the ID should be set - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_interaction_followup_edit_original(const std::string &token, const message &m) { - return dpp::awaitable(this, [&] (auto cc) { this->interaction_followup_edit_original(token, m, cc); }); -} - -/** - * @brief - * - * @param token Token for the interaction webhook - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_interaction_followup_delete(const std::string &token) { - return dpp::awaitable(this, [&] (auto cc) { this->interaction_followup_delete(token, cc); }); -} - -/** - * @brief Edit followup message to a slash command - * The message ID in the message you pass should be correctly set to that of a followup message you previously sent - * @param token Token for the interaction webhook - * @param m message to edit, the ID should be set - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_interaction_followup_edit(const std::string &token, const message &m) { - return dpp::awaitable(this, [&] (auto cc) { this->interaction_followup_edit(token, m, cc); }); -} - -/** - * @brief Get the followup message to a slash command - * @param token Token for the interaction webhook - * @param message_id message to retrieve - * @return message returned object on completion - * \memberof dpp::cluster - */ -auto inline co_interaction_followup_get(const std::string &token, snowflake message_id) { - return dpp::awaitable(this, [&] (auto cc) { this->interaction_followup_get(token, message_id, cc); }); -} - -/** - * @brief Get all auto moderation rules for a guild - * - * @param guild_id Guild id of the auto moderation rule - * @return automod_rule_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_automod_rules_get(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->automod_rules_get(guild_id, cc); }); -} - -/** - * @brief Get a single auto moderation rule - * - * @param guild_id Guild id of the auto moderation rule - * @param rule_id Rule id to retrieve - * @return automod_rule returned object on completion - * \memberof dpp::cluster - */ -auto inline co_automod_rule_get(snowflake guild_id, snowflake rule_id) { - return dpp::awaitable(this, [&] (auto cc) { this->automod_rule_get(guild_id, rule_id, cc); }); -} - -/** - * @brief Create an auto moderation rule - * - * @param guild_id Guild id of the auto moderation rule - * @param r Auto moderation rule to create - * @return automod_rule returned object on completion - * \memberof dpp::cluster - */ -auto inline co_automod_rule_create(snowflake guild_id, const automod_rule& r) { - return dpp::awaitable(this, [&] (auto cc) { this->automod_rule_create(guild_id, r, cc); }); -} - -/** - * @brief Edit an auto moderation rule - * - * @param guild_id Guild id of the auto moderation rule - * @param r Auto moderation rule to edit. The rule's id must be set. - * @return automod_rule returned object on completion - * \memberof dpp::cluster - */ -auto inline co_automod_rule_edit(snowflake guild_id, const automod_rule& r) { - return dpp::awaitable(this, [&] (auto cc) { this->automod_rule_edit(guild_id, r, cc); }); -} - -/** - * @brief Delete an auto moderation rule - * - * @param guild_id Guild id of the auto moderation rule - * @param rule_id Auto moderation rule id to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_automod_rule_delete(snowflake guild_id, snowflake rule_id) { - return dpp::awaitable(this, [&] (auto cc) { this->automod_rule_delete(guild_id, rule_id, cc); }); -} - -/** - * @brief Create a channel - * - * Create a new channel object for the guild. Requires the `MANAGE_CHANNELS` permission. If setting permission overwrites, - * only permissions your bot has in the guild can be allowed/denied. Setting `MANAGE_ROLES` permission in channels is only possible - * for guild administrators. Returns the new channel object on success. Fires a `Channel Create Gateway` event. - * - * All parameters to this endpoint are optional excluding `name` - * - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::channel_create - * @see https://discord.com/developers/docs/resources/channel#create-channel - * @param c Channel to create - * @return channel returned object on completion - * \memberof dpp::cluster - */ -auto inline co_channel_create(const class channel &c) { - return dpp::awaitable(this, [&] (auto cc) { this->channel_create(c, cc); }); -} - -/** - * @brief Remove a permission from a channel - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::channel_delete_permission - * @see https://discord.com/developers/docs/resources/channel#delete-channel-permission - * @param c Channel to remove permission from - * @param overwrite_id Overwrite to remove, user or channel ID - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_channel_delete_permission(const class channel &c, snowflake overwrite_id) { - return dpp::awaitable(this, [&] (auto cc) { this->channel_delete_permission(c, overwrite_id, cc); }); -} - -/** - * @brief Delete a channel - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::channel_delete - * @see https://discord.com/developers/docs/resources/channel#deleteclose-channel - * @param channel_id Channel id to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_channel_delete(snowflake channel_id) { - return dpp::awaitable(this, [&] (auto cc) { this->channel_delete(channel_id, cc); }); -} - -/** - * @brief Edit multiple channels positions - * - * Modify the positions of a set of channel objects for the guild. - * Requires `MANAGE_CHANNELS` permission. Fires multiple `Channel Update Gateway` events. - * Only channels to be modified are required. - * - * @see dpp::cluster::channel_edit_positions - * @see https://discord.com/developers/docs/resources/guild#modify-guild-channel-positions - * @param c Channel to change the position for - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_channel_edit_positions(const std::vector &c) { - return dpp::awaitable(this, [&] (auto cc) { this->channel_edit_positions(c, cc); }); -} - -/** - * @brief Edit a channel - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::channel_edit - * @see https://discord.com/developers/docs/resources/channel#modify-channel - * @param c Channel to edit/update - * @return channel returned object on completion - * \memberof dpp::cluster - */ -auto inline co_channel_edit(const class channel &c) { - return dpp::awaitable(this, [&] (auto cc) { this->channel_edit(c, cc); }); -} - -/** - * @brief Follow an announcement (news) channel - * @see dpp::cluster::channel_follow_news - * @see https://discord.com/developers/docs/resources/channel#follow-news-channel - * @param c Channel id to follow - * @param target_channel_id Channel to subscribe the channel to - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_channel_follow_news(const class channel &c, snowflake target_channel_id) { - return dpp::awaitable(this, [&] (auto cc) { this->channel_follow_news(c, target_channel_id, cc); }); -} - -/** - * @brief Get a channel - * - * @see dpp::cluster::channel_get - * @see https://discord.com/developers/docs/resources/channel#get-channel - * @param c Channel ID to retrieve - * @return channel returned object on completion - * \memberof dpp::cluster - */ -auto inline co_channel_get(snowflake c) { - return dpp::awaitable(this, [&] (auto cc) { this->channel_get(c, cc); }); -} - -/** - * @brief Create invite for a channel - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::channel_invite_create - * @see https://discord.com/developers/docs/resources/channel#create-channel-invite - * @param c Channel to create an invite on - * @param i Invite to create - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_channel_invite_create(const class channel &c, const class invite &i) { - return dpp::awaitable(this, [&] (auto cc) { this->channel_invite_create(c, i, cc); }); -} - -/** - * @brief Get invites for a channel - * - * @see dpp::cluster::channel_invites_get - * @see https://discord.com/developers/docs/resources/invite#get-invites - * @param c Channel to get invites for - * @return invite_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_channel_invites_get(const class channel &c) { - return dpp::awaitable(this, [&] (auto cc) { this->channel_invites_get(c, cc); }); -} - -/** - * @brief Get all channels for a guild - * - * @see dpp::cluster::channels_get - * @see https://discord.com/developers/docs/resources/channel#get-channels - * @param guild_id Guild ID to retrieve channels for - * @return channel_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_channels_get(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->channels_get(guild_id, cc); }); -} - -/** - * @brief Create a dm channel - * @see dpp::cluster::create_dm_channel - * @see https://discord.com/developers/docs/resources/user#create-dm - * @param user_id User ID to create DM channel with - * @return channel returned object on completion - * \memberof dpp::cluster - */ -auto inline co_create_dm_channel(snowflake user_id) { - return dpp::awaitable(this, [&] (auto cc) { this->create_dm_channel(user_id, cc); }); -} - -/** - * @brief Get current user DM channels - * - * @return channel_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_current_user_get_dms() { - return dpp::awaitable(this, [&] (auto cc) { this->current_user_get_dms(cc); }); -} - -/** - * @brief Create a direct message, also create the channel for the direct message if needed - * - * @see dpp::cluster::direct_message_create - * @see https://discord.com/developers/docs/resources/user#create-dm - * @see dpp::cluster::direct_message_create - * @see https://discord.com/developers/docs/resources/channel#create-message - * @param user_id User ID of user to send message to - * @param m Message object - * @return message returned object on completion - * \memberof dpp::cluster - */ -auto inline co_direct_message_create(snowflake user_id, const message &m) { - return dpp::awaitable(this, [&] (auto cc) { this->direct_message_create(user_id, m, cc); }); -} - -/** - * @brief Adds a recipient to a Group DM using their access token - * @see dpp::cluster::gdm_add - * @see https://discord.com/developers/docs/resources/channel#group-dm-add-recipient - * @param channel_id Channel id to add group DM recipients to - * @param user_id User ID to add - * @param access_token Access token from OAuth2 - * @param nick Nickname of user to apply to the chat - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_gdm_add(snowflake channel_id, snowflake user_id, const std::string &access_token, const std::string &nick) { - return dpp::awaitable(this, [&] (auto cc) { this->gdm_add(channel_id, user_id, access_token, nick, cc); }); -} - -/** - * @brief Removes a recipient from a Group DM - * @see dpp::cluster::gdm_remove - * @see https://discord.com/developers/docs/resources/channel#group-dm-remove-recipient - * @param channel_id Channel ID of group DM - * @param user_id User ID to remove from group DM - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_gdm_remove(snowflake channel_id, snowflake user_id) { - return dpp::awaitable(this, [&] (auto cc) { this->gdm_remove(channel_id, user_id, cc); }); -} - -/** - * @brief Create single emoji. - * You must ensure that the emoji passed contained image data using the emoji::load_image() method. - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see dpp::cluster::guild_emoji_create - * @see https://discord.com/developers/docs/resources/emoji#create-guild-emoji - * @param guild_id Guild ID to create emoji om - * @param newemoji Emoji to create - * @return emoji returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_emoji_create(snowflake guild_id, const class emoji& newemoji) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_emoji_create(guild_id, newemoji, cc); }); -} - -/** - * @brief Delete a guild emoji - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see dpp::cluster::guild_emoji_delete - * @see https://discord.com/developers/docs/resources/emoji#delete-guild-emoji - * @param guild_id Guild ID to delete emoji on - * @param emoji_id Emoji ID to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_emoji_delete(snowflake guild_id, snowflake emoji_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_emoji_delete(guild_id, emoji_id, cc); }); -} - -/** - * @brief Edit a single emoji. - * - * You must ensure that the emoji passed contained image data using the emoji::load_image() method. - * @see dpp::cluster::guild_emoji_edit - * @see https://discord.com/developers/docs/resources/emoji#get-guild-emoji - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to edit emoji on - * @param newemoji Emoji to edit - * @return emoji returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_emoji_edit(snowflake guild_id, const class emoji& newemoji) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_emoji_edit(guild_id, newemoji, cc); }); -} - -/** - * @brief Get a single emoji - * - * @see dpp::cluster::guild_emoji_get - * @see https://discord.com/developers/docs/resources/emoji#get-guild-emoji - * @param guild_id Guild ID to get emoji for - * @param emoji_id Emoji ID to get - * @return emoji returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_emoji_get(snowflake guild_id, snowflake emoji_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_emoji_get(guild_id, emoji_id, cc); }); -} - -/** - * @brief Get all emojis for a guild - * - * @see dpp::cluster::guild_emojis_get - * @see https://discord.com/developers/docs/resources/emoji#get-guild-emojis - * @param guild_id Guild ID to get emojis for - * @return emoji_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_emojis_get(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_emojis_get(guild_id, cc); }); -} - -/** - * @brief Get the gateway information for the bot using the token - * @see dpp::cluster::get_gateway_bot - * @see https://discord.com/developers/docs/topics/gateway#get-gateway-bot - * @return gateway returned object on completion - * \memberof dpp::cluster - */ -auto inline co_get_gateway_bot() { - return dpp::awaitable(this, [&] (auto cc) { this->get_gateway_bot(cc); }); -} - -/** - * @brief Modify current member - * - * Modifies the current member in a guild. - * Fires a `Guild Member Update` Gateway event. - * - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::guild_current_member_edit - * @see https://discord.com/developers/docs/resources/guild#modify-current-member - * @param guild_id Guild ID to change on - * @param nickname New nickname, or empty string to clear nickname - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_current_member_edit(snowflake guild_id, const std::string &nickname) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_current_member_edit(guild_id, nickname, cc); }); -} - -/** - * @brief Get the audit log for a guild - * - * @see dpp::cluster::guild_auditlog_get - * @see https://discord.com/developers/docs/resources/audit-log#get-guild-audit-log - * @param guild_id Guild to get the audit log of - * @param user_id Entries from a specific user ID. Set this to `0` will fetch any user - * @param action_type Entries for a specific dpp::audit_type. Set this to `0` will fetch any type - * @param before Entries that preceded a specific audit log entry ID. Used for paginating - * @param after Entries that succeeded a specific audit log entry ID. Used for paginating - * @param limit Maximum number of entries (between 1-100) to return - * @return auditlog returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_auditlog_get(snowflake guild_id, snowflake user_id, uint32_t action_type, snowflake before, snowflake after, uint32_t limit) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_auditlog_get(guild_id, user_id, action_type, before, after, limit, cc); }); -} - -/** - * @brief Add guild ban - * - * Create a guild ban, and optionally delete previous messages sent by the banned user. - * Requires the `BAN_MEMBERS` permission. Fires a `Guild Ban Add` Gateway event. - * @see dpp::cluster::guild_ban_add - * @see https://discord.com/developers/docs/resources/guild#create-guild-ban - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to add ban to - * @param user_id User ID to ban - * @param delete_message_seconds How many seconds to delete messages for, between 0 and 604800 (7 days). Defaults to 0 - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_ban_add(snowflake guild_id, snowflake user_id, uint32_t delete_message_seconds) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_ban_add(guild_id, user_id, delete_message_seconds, cc); }); -} - -/** - * @brief Delete guild ban - * - * Remove the ban for a user. Requires the `BAN_MEMBERS` permissions. - * Fires a Guild Ban Remove Gateway event. - * @see dpp::cluster::guild_ban_delete - * @see https://discord.com/developers/docs/resources/guild#remove-guild-ban - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild to delete ban from - * @param user_id User ID to delete ban for - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_ban_delete(snowflake guild_id, snowflake user_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_ban_delete(guild_id, user_id, cc); }); -} - -/** - * @brief Create a guild - * - * Create a new guild. Returns a guild object on success. `Fires a Guild Create Gateway` event. - * - * When using the roles parameter, the first member of the array is used to change properties of the guild's everyone role. - * If you are trying to bootstrap a guild with additional roles, keep this in mind. The required id field within each role object is an - * integer placeholder, and will be replaced by the API upon consumption. Its purpose is to allow you to overwrite a role's permissions - * in a channel when also passing in channels with the channels array. - * When using the channels parameter, the position field is ignored, and none of the default channels are created. The id field within - * each channel object may be set to an integer placeholder, and will be replaced by the API upon consumption. Its purpose is to - * allow you to create `GUILD_CATEGORY` channels by setting the `parent_id` field on any children to the category's id field. - * Category channels must be listed before any children. - * - * @see dpp::cluster::guild_create - * @see https://discord.com/developers/docs/resources/guild#create-guild - * @note The region field is deprecated and is replaced by channel.rtc_region. This endpoint can be used only by bots in less than 10 guilds. - * @param g Guild to create - * @return guild returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_create(const class guild &g) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_create(g, cc); }); -} - -/** - * @brief Delete a guild - * - * Delete a guild permanently. User must be owner. Fires a `Guild Delete Gateway` event. - * - * @see dpp::cluster::guild_delete - * @see https://discord.com/developers/docs/resources/guild#delete-guild - * @param guild_id Guild ID to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_delete(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_delete(guild_id, cc); }); -} - -/** - * @brief Delete guild integration - * - * Delete the attached integration object for the guild. Deletes any associated webhooks and kicks the associated bot if there is one. - * Requires the `MANAGE_GUILD` permission. Fires a Guild Integrations Update Gateway event. - * - * @see dpp::cluster::guild_delete_integration - * @see https://discord.com/developers/docs/resources/guild#delete-guild-integration - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to delete integration for - * @param integration_id Integration ID to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_delete_integration(snowflake guild_id, snowflake integration_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_delete_integration(guild_id, integration_id, cc); }); -} - -/** - * @brief Edit a guild - * - * Modify a guild's settings. Requires the `MANAGE_GUILD` permission. Returns the updated guild object on success. - * Fires a `Guild Update Gateway` event. - * - * @see dpp::cluster::guild_edit - * @see https://discord.com/developers/docs/resources/guild#modify-guild - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param g Guild to edit - * @return guild returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_edit(const class guild &g) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_edit(g, cc); }); -} - -/** - * @brief Edit guild widget - * - * Requires the `MANAGE_GUILD` permission. - * - * @see dpp::cluster::guild_edit_widget - * @see https://discord.com/developers/docs/resources/guild#modify-guild-widget - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to edit widget for - * @param gw New guild widget information - * @return guild_widget returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_edit_widget(snowflake guild_id, const class guild_widget &gw) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_edit_widget(guild_id, gw, cc); }); -} - -/** - * @brief Get single guild ban - * - * Requires the `BAN_MEMBERS` permission. - * @see dpp::cluster::guild_get_ban - * @see https://discord.com/developers/docs/resources/guild#get-guild-ban - * @param guild_id Guild ID to get ban for - * @param user_id User ID of ban to retrieve - * @return ban returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_get_ban(snowflake guild_id, snowflake user_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_get_ban(guild_id, user_id, cc); }); -} - -/** - * @brief Get guild ban list - * - * Requires the `BAN_MEMBERS` permission. - * @see dpp::cluster::guild_get_bans - * @see https://discord.com/developers/docs/resources/guild#get-guild-bans - * @note Provide a user ID to `before` and `after` for pagination. Users will always be returned in ascending order by the user ID. If both before and after are provided, only before is respected. - * @param guild_id Guild ID to get bans for - * @param before If non-zero, all bans for user ids before this user id will be returned up to the limit - * @param after if non-zero, all bans for user ids after this user id will be returned up to the limit - * @param limit the maximum number of bans to retrieve in this call up to a maximum of 1000 - * @return ban_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_get_bans(snowflake guild_id, snowflake before, snowflake after, snowflake limit) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_get_bans(guild_id, before, after, limit, cc); }); -} - - -auto inline co_guild_get(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_get(guild_id, cc); }); -} - -/** - * @brief Get guild integrations - * - * Requires the `MANAGE_GUILD` permission. - * - * @see dpp::cluster::guild_get_integrations - * @see https://discord.com/developers/docs/resources/guild#get-guild-integrations - * @param guild_id Guild ID to get integrations for - * @return integration_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_get_integrations(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_get_integrations(guild_id, cc); }); -} - - -auto inline co_guild_get_preview(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_get_preview(guild_id, cc); }); -} - -/** - * @brief Get guild vanity url, if enabled - * - * Returns a partial dpp::invite object for guilds with that feature enabled. Requires the `MANAGE_GUILD` permission. code will be null if a vanity url for the guild is not set. - * @see dpp::cluster::guild_get_vanity - * @see https://discord.com/developers/docs/resources/guild#get-guild-vanity-url - * @param guild_id Guild to get vanity URL for - * @return invite returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_get_vanity(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_get_vanity(guild_id, cc); }); -} - -/** - * @brief Get guild widget - * - * Requires the `MANAGE_GUILD` permission. - * - * @see dpp::cluster::guild_get_widget - * @see https://discord.com/developers/docs/resources/guild#get-guild-widget - * @param guild_id Guild ID to get widget for - * @return guild_widget returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_get_widget(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_get_widget(guild_id, cc); }); -} - -/** - * @brief Modify guild integration - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see dpp::cluster::guild_modify_integration - * @see https://discord.com/developers/docs/resources/guild#modify-guild-integration - * @param guild_id Guild ID to modify integration for - * @param i Integration to modify - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_modify_integration(snowflake guild_id, const class integration &i) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_modify_integration(guild_id, i, cc); }); -} - -/** - * @brief Get prune counts - * - * Returns a prune object indicating the number of members that would be removed in a prune operation. Requires the `KICK_MEMBERS` - * permission. By default, prune will not remove users with roles. You can optionally include specific roles in your prune by providing the - * include_roles parameter. Any inactive user that has a subset of the provided role(s) will be counted in the prune and users with additional - * roles will not. - * - * @see dpp::cluster::guild_get_prune_counts - * @see https://discord.com/developers/docs/resources/guild#get-guild-prune-count - * @param guild_id Guild ID to count for pruning - * @param pruneinfo Pruning info - * @return prune returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_get_prune_counts(snowflake guild_id, const struct prune& pruneinfo) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_get_prune_counts(guild_id, pruneinfo, cc); }); -} - -/** - * @brief Begin guild prune - * - * Begin a prune operation. Requires the `KICK_MEMBERS` permission. Returns a prune object indicating the number of members - * that were removed in the prune operation. For large guilds it's recommended to set the `compute_prune_count` option to false, forcing - * 'pruned' to 0. Fires multiple `Guild Member Remove` Gateway events. - * By default, prune will not remove users with roles. You can optionally include specific roles in your prune by providing the `include_roles` - * parameter. Any inactive user that has a subset of the provided role(s) will be included in the prune and users with additional roles will not. - * - * @see dpp::cluster::guild_begin_prune - * @see https://discord.com/developers/docs/resources/guild#begin-guild-prune - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to prune - * @param pruneinfo Pruning info - * @return prune returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_begin_prune(snowflake guild_id, const struct prune& pruneinfo) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_begin_prune(guild_id, pruneinfo, cc); }); -} - -/** - * @brief Change current user nickname - * - * Modifies the nickname of the current user in a guild. - * Fires a `Guild Member Update` Gateway event. - * - * @deprecated Deprecated in favor of Modify Current Member. Will be replaced by dpp::cluster::guild_current_member_edit - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::guild_set_nickname - * @see https://discord.com/developers/docs/resources/guild#modify-current-user-nick - * @param guild_id Guild ID to change nickname on - * @param nickname New nickname, or empty string to clear nickname - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_set_nickname(snowflake guild_id, const std::string &nickname) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_set_nickname(guild_id, nickname, cc); }); -} - -/** - * @brief Sync guild integration - * - * @see dpp::cluster::guild_sync_integration - * @see https://discord.com/developers/docs/resources/guild#sync-guild-integration - * @param guild_id Guild ID to sync integration on - * @param integration_id Integration ID to synchronise - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_sync_integration(snowflake guild_id, snowflake integration_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_sync_integration(guild_id, integration_id, cc); }); -} - -/** - * @brief Add guild member. Needs a specific oauth2 scope, from which you get the access_token. - * - * Adds a user to the guild, provided you have a valid oauth2 access token for the user with the guilds.join scope. - * Returns the guild_member, which is defaulted if the user is already a member of the guild. Fires a `Guild Member Add` Gateway event. - * - * For guilds with Membership Screening enabled, this endpoint will default to adding new members as pending in the guild member object. - * Members that are pending will have to complete membership screening before they become full members that can talk. - * - * @note All parameters to this endpoint except for access_token are optional. - * The bot must be a member of the guild with `CREATE_INSTANT_INVITE` permission. - * @see dpp::cluster::guild_add_member - * @see https://discord.com/developers/docs/resources/guild#add-guild-member - * @param gm Guild member to add - * @param access_token Access token from Oauth2 scope - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_add_member(const guild_member& gm, const std::string &access_token) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_add_member(gm, access_token, cc); }); -} - -/** - * @brief Edit the properties of an existing guild member - * - * Modify attributes of a guild member. Returns the guild_member. Fires a `Guild Member Update` Gateway event. - * To remove a timeout, set the `communication_disabled_until` to a non-zero time in the past, e.g. 1. - * When moving members to channels, the API user must have permissions to both connect to the channel and have the `MOVE_MEMBERS` permission. - * For moving and disconnecting users from voice, use dpp::cluster::guild_member_move. - * @see dpp::cluster::guild_edit_member - * @see https://discord.com/developers/docs/resources/guild#modify-guild-member - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param gm Guild member to edit - * @return guild_member returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_edit_member(const guild_member& gm) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_edit_member(gm, cc); }); -} - -/** - * @brief Get a guild member - * @see dpp::cluster::guild_get_member - * @see https://discord.com/developers/docs/resources/guild#get-guild-member - * @param guild_id Guild ID to get member for - * @param user_id User ID of member to get - * @return guild_member returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_get_member(snowflake guild_id, snowflake user_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_get_member(guild_id, user_id, cc); }); -} - -/** - * @brief Get all guild members - * - * @note This endpoint is restricted according to whether the `GUILD_MEMBERS` Privileged Intent is enabled for your application. - * @see dpp::cluster::guild_get_members - * @see https://discord.com/developers/docs/resources/guild#get-guild-members - * @param guild_id Guild ID to get all members for - * @param limit max number of members to return (1-1000) - * @param after the highest user id in the previous page - * @return guild_member_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_get_members(snowflake guild_id, uint16_t limit, snowflake after) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_get_members(guild_id, limit, after, cc); }); -} - -/** - * @brief Add role to guild member - * - * Adds a role to a guild member. Requires the `MANAGE_ROLES` permission. - * Fires a `Guild Member Update` Gateway event. - * @see dpp::cluster::guild_member_add_role - * @see https://discord.com/developers/docs/resources/guild#add-guild-member-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to add a role to - * @param user_id User ID to add role to - * @param role_id Role ID to add to the user - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_member_add_role(snowflake guild_id, snowflake user_id, snowflake role_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_member_add_role(guild_id, user_id, role_id, cc); }); -} - -/** - * @brief Remove (kick) a guild member - * - * Remove a member from a guild. Requires `KICK_MEMBERS` permission. - * Fires a `Guild Member Remove` Gateway event. - * @see dpp::cluster::guild_member_delete - * @see https://discord.com/developers/docs/resources/guild#remove-guild-member - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @deprecated Replaced by dpp::cluster::guild_member_kick - * @param guild_id Guild ID to kick member from - * @param user_id User ID to kick - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_member_delete(snowflake guild_id, snowflake user_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_member_delete(guild_id, user_id, cc); }); -} - -/** - * @brief Remove (kick) a guild member - * - * Remove a member from a guild. Requires `KICK_MEMBERS` permission. - * Fires a `Guild Member Remove` Gateway event. - * @see dpp::cluster::guild_member_kick - * @see https://discord.com/developers/docs/resources/guild#remove-guild-member - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to kick member from - * @param user_id User ID to kick - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_member_kick(snowflake guild_id, snowflake user_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_member_kick(guild_id, user_id, cc); }); -} - -/** - * @brief Set the timeout of a guild member - * - * Fires a `Guild Member Update` Gateway event. - * @see dpp::cluster::guild_member_timeout - * @see https://discord.com/developers/docs/resources/guild#modify-guild-member - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to timeout the member in - * @param user_id User ID to set the timeout for - * @param communication_disabled_until The timestamp when the user's timeout will expire (up to 28 days in the future). Set to 0 to remove the timeout - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_member_timeout(snowflake guild_id, snowflake user_id, time_t communication_disabled_until) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_member_timeout(guild_id, user_id, communication_disabled_until, cc); }); -} - -/** - * @brief Remove role from guild member - * - * Removes a role from a guild member. Requires the `MANAGE_ROLES` permission. - * Fires a `Guild Member Update` Gateway event. - * @see dpp::cluster::guild_member_delete_role - * @see https://discord.com/developers/docs/resources/guild#remove-guild-member-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to remove role from user on - * @param user_id User ID to remove role from - * @param role_id Role to remove - * @return confirmation returned object on completion - * @deprecated Use dpp::cluster::guild_member_remove_role instead - * \memberof dpp::cluster - */ -auto inline co_guild_member_delete_role(snowflake guild_id, snowflake user_id, snowflake role_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_member_delete_role(guild_id, user_id, role_id, cc); }); -} - -/** - * @brief Remove role from guild member - * - * Removes a role from a guild member. Requires the `MANAGE_ROLES` permission. - * Fires a `Guild Member Update` Gateway event. - * @see dpp::cluster::guild_member_remove_role - * @see https://discord.com/developers/docs/resources/guild#remove-guild-member-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to remove role from user on - * @param user_id User ID to remove role from - * @param role_id Role to remove - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_member_remove_role(snowflake guild_id, snowflake user_id, snowflake role_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_member_remove_role(guild_id, user_id, role_id, cc); }); -} - -/** - * @brief Moves the guild member to a other voice channel, if member is connected to one. - * Set the `channel_id` to `0` to disconnect the user. - * - * Fires a `Guild Member Update` Gateway event. - * @note When moving members to channels, the API user __must__ have permissions to both connect to the channel and have the `MOVE_MEMBERS` permission. - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::guild_member_move - * @see https://discord.com/developers/docs/resources/guild#modify-guild-member - * @param channel_id Id of the channel to which the user is used. Set to `0` to disconnect the user - * @param guild_id Guild id to which the user is connected - * @param user_id User id, who should be moved - * @return guild_member returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_member_move(const snowflake channel_id, const snowflake guild_id, const snowflake user_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_member_move(channel_id, guild_id, user_id, cc); }); -} - -/** - * @brief Search for guild members based on whether their username or nickname starts with the given string. - * - * @note This endpoint is restricted according to whether the `GUILD_MEMBERS` Privileged Intent is enabled for your application. - * @see dpp::cluster::guild_search_members - * @see https://discord.com/developers/docs/resources/guild#search-guild-members - * @param guild_id Guild ID to search in - * @param query Query string to match username(s) and nickname(s) against - * @param limit max number of members to return (1-1000) - * @return guild_member_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_search_members(snowflake guild_id, const std::string& query, uint16_t limit) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_search_members(guild_id, query, limit, cc); }); -} - -/** - * @brief Get guild invites - * - * Returns a list of invite objects (with invite metadata) for the guild. Requires the `MANAGE_GUILD` permission. - * - * @see dpp::cluster::guild_get_invites - * @see https://discord.com/developers/docs/resources/guild#get-guild-invites - * @param guild_id Guild ID to get invites for - * @return invite_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_get_invites(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_get_invites(guild_id, cc); }); -} - - -auto inline co_invite_delete(const std::string &invitecode) { - return dpp::awaitable(this, [&] (auto cc) { this->invite_delete(invitecode, cc); }); -} - - -auto inline co_invite_get(const std::string &invitecode) { - return dpp::awaitable(this, [&] (auto cc) { this->invite_get(invitecode, cc); }); -} - -/** - * @brief Send a message to a channel. The callback function is called when the message has been sent - * - * @see dpp::cluster::message_create - * @see https://discord.com/developers/docs/resources/channel#create-message - * @param m Message to send - * @return message returned object on completion - * \memberof dpp::cluster - */ -auto inline co_message_create(const message &m) { - return dpp::awaitable(this, [&] (auto cc) { this->message_create(m, cc); }); -} - -/** - * @brief Crosspost a message. The callback function is called when the message has been sent - * - * @see dpp::cluster::message_crosspost - * @see https://discord.com/developers/docs/resources/channel#crosspost-message - * @param message_id Message to crosspost - * @param channel_id Channel ID to crosspost from - * @return message returned object on completion - * \memberof dpp::cluster - */ -auto inline co_message_crosspost(snowflake message_id, snowflake channel_id) { - return dpp::awaitable(this, [&] (auto cc) { this->message_crosspost(message_id, channel_id, cc); }); -} - -/** - * @brief Bulk delete messages from a channel. The callback function is called when the message has been edited - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @note If any message provided older than 2 weeks or any duplicate message ID, it will fail. - * - * @see dpp::cluster::message_delete_bulk - * @see https://discord.com/developers/docs/resources/channel#bulk-delete-messages - * @param message_ids List of message IDs to delete (at least 2 and at most 100 message IDs) - * @param channel_id Channel to delete from - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_message_delete_bulk(const std::vector& message_ids, snowflake channel_id) { - return dpp::awaitable(this, [&] (auto cc) { this->message_delete_bulk(message_ids, channel_id, cc); }); -} - -/** - * @brief Delete a message from a channel. The callback function is called when the message has been edited - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see dpp::cluster::message_delete - * @see https://discord.com/developers/docs/resources/channel#delete-message - * @param message_id Message ID to delete - * @param channel_id Channel to delete from - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_message_delete(snowflake message_id, snowflake channel_id) { - return dpp::awaitable(this, [&] (auto cc) { this->message_delete(message_id, channel_id, cc); }); -} - -/** - * @brief Edit a message on a channel. The callback function is called when the message has been edited - * - * @see dpp::cluster::message_edit - * @see https://discord.com/developers/docs/resources/channel#edit-message - * @param m Message to edit - * @return message returned object on completion - * \memberof dpp::cluster - */ -auto inline co_message_edit(const message &m) { - return dpp::awaitable(this, [&] (auto cc) { this->message_edit(m, cc); }); -} - -/** - * @brief Get a message - * - * @see dpp::cluster::message_get - * @see https://discord.com/developers/docs/resources/channel#get-channel-message - * @param message_id Message ID - * @param channel_id Channel ID - * @return message returned object on completion - * \memberof dpp::cluster - */ -auto inline co_message_get(snowflake message_id, snowflake channel_id) { - return dpp::awaitable(this, [&] (auto cc) { this->message_get(message_id, channel_id, cc); }); -} - -/** - * @brief Pin a message - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::message_pin - * @see https://discord.com/developers/docs/resources/channel#pin-message - * @param channel_id Channel id to pin message on - * @param message_id Message id to pin message on - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_message_pin(snowflake channel_id, snowflake message_id) { - return dpp::awaitable(this, [&] (auto cc) { this->message_pin(channel_id, message_id, cc); }); -} - -/** - * @brief Get multiple messages. - * - * This function will attempt to fetch as many messages as possible using multiple API calls if needed. - * - * @see dpp::cluster::messages_get - * @see https://discord.com/developers/docs/resources/channel#get-channel-messages - * @param channel_id Channel ID to retrieve messages for - * @param around Messages should be retrieved around this ID if this is set to non-zero - * @param before Messages before this ID should be retrieved if this is set to non-zero - * @param after Messages after this ID should be retrieved if this is set to non-zero - * @param limit This number of messages maximum should be returned, up to a maximum of 100. - * @return message_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_messages_get(snowflake channel_id, snowflake around, snowflake before, snowflake after, uint64_t limit) { - return dpp::awaitable(this, [&] (auto cc) { this->messages_get(channel_id, around, before, after, limit, cc); }); -} - -/** - * @brief Unpin a message - * @see dpp::cluster::message_unpin - * @see https://discord.com/developers/docs/resources/channel#unpin-message - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param channel_id Channel id to unpin message on - * @param message_id Message id to unpin message on - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_message_unpin(snowflake channel_id, snowflake message_id) { - return dpp::awaitable(this, [&] (auto cc) { this->message_unpin(channel_id, message_id, cc); }); -} - -/** - * @brief Get a channel's pins - * @see dpp::cluster::channel_pins_get - * @see https://discord.com/developers/docs/resources/channel#get-pinned-messages - * @param channel_id Channel ID to get pins for - * @return message_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_channel_pins_get(snowflake channel_id) { - return dpp::awaitable(this, [&] (auto cc) { this->channel_pins_get(channel_id, cc); }); -} - -/** - * @brief Create a role on a guild - * - * Create a new role for the guild. Requires the `MANAGE_ROLES` permission. Returns the new role object on success. - * Fires a `Guild Role Create` Gateway event. - * - * @see dpp::cluster::role_create - * @see https://discord.com/developers/docs/resources/guild#create-guild-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param r Role to create (guild ID is encapsulated in the role object) - * @return role returned object on completion - * \memberof dpp::cluster - */ -auto inline co_role_create(const class role &r) { - return dpp::awaitable(this, [&] (auto cc) { this->role_create(r, cc); }); -} - -/** - * @brief Delete a role - * - * Requires the `MANAGE_ROLES` permission. Fires a `Guild Role Delete` Gateway event. - * - * @see dpp::cluster::role_delete - * @see https://discord.com/developers/docs/resources/guild#delete-guild-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to delete the role on - * @param role_id Role ID to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_role_delete(snowflake guild_id, snowflake role_id) { - return dpp::awaitable(this, [&] (auto cc) { this->role_delete(guild_id, role_id, cc); }); -} - -/** - * @brief Edit a role on a guild - * - * Requires the `MANAGE_ROLES` permission. Returns the updated role on success. Fires a `Guild Role Update` Gateway event. - * - * @see dpp::cluster::role_edit - * @see https://discord.com/developers/docs/resources/guild#modify-guild-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param r Role to edit - * @return role returned object on completion - * \memberof dpp::cluster - */ -auto inline co_role_edit(const class role &r) { - return dpp::awaitable(this, [&] (auto cc) { this->role_edit(r, cc); }); -} - -/** - * @brief Edit multiple role's position in a guild. Returns a list of all roles of the guild on success. - * - * Modify the positions of a set of role objects for the guild. Requires the `MANAGE_ROLES` permission. - * Fires multiple `Guild Role Update` Gateway events. - * - * @see dpp::cluster::roles_edit_position - * @see https://discord.com/developers/docs/resources/guild#modify-guild-role-positions - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to change the roles position on - * @param roles Vector of roles to change the positions of - * @return role_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_roles_edit_position(snowflake guild_id, const std::vector &roles) { - return dpp::awaitable(this, [&] (auto cc) { this->roles_edit_position(guild_id, roles, cc); }); -} - -/** - * @brief Get a role for a guild - * - * @see dpp::cluster::roles_get - * @see https://discord.com/developers/docs/resources/guild#get-guild-roles - * @param guild_id Guild ID to get role for - * @return role_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_roles_get(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->roles_get(guild_id, cc); }); -} - -/** - * @brief Get all scheduled events for a guild - * @see dpp::cluster::guild_events_get - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild - * @param guild_id Guild to get events for - * @return scheduled_event_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_events_get(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_events_get(guild_id, cc); }); -} - -/** - * @brief Create a scheduled event on a guild - * - * @see dpp::cluster::guild_event_create - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event - * @param event Event to create (guild ID must be populated) - * @return scheduled_event returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_event_create(const scheduled_event& event) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_event_create(event, cc); }); -} - -/** - * @brief Delete a scheduled event from a guild - * - * @see dpp::cluster::guild_event_delete - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#delete-guild-scheduled-event - * @param event_id Event ID to delete - * @param guild_id Guild ID of event to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_event_delete(snowflake event_id, snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_event_delete(event_id, guild_id, cc); }); -} - -/** - * @brief Edit/modify a scheduled event on a guild - * - * @see dpp::cluster::guild_event_edit - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event - * @param event Event to create (event ID and guild ID must be populated) - * @return scheduled_event returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_event_edit(const scheduled_event& event) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_event_edit(event, cc); }); -} - -/** - * @brief Get a scheduled event for a guild - * - * @see dpp::cluster::guild_event_get - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event - * @param guild_id Guild to get event for - * @param event_id Event ID to get - * @return scheduled_event returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_event_get(snowflake guild_id, snowflake event_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_event_get(guild_id, event_id, cc); }); -} - - -auto inline co_stage_instance_create(const stage_instance& si) { - return dpp::awaitable(this, [&] (auto cc) { this->stage_instance_create(si, cc); }); -} - -/** - * @brief Get the stage instance associated with the channel id, if it exists. - * @see dpp::cluster::stage_instance_get - * @see https://discord.com/developers/docs/resources/stage-instance#get-stage-instance - * @param channel_id ID of the associated channel - * @return stage_instance returned object on completion - * \memberof dpp::cluster - */ -auto inline co_stage_instance_get(const snowflake channel_id) { - return dpp::awaitable(this, [&] (auto cc) { this->stage_instance_get(channel_id, cc); }); -} - - -auto inline co_stage_instance_edit(const stage_instance& si) { - return dpp::awaitable(this, [&] (auto cc) { this->stage_instance_edit(si, cc); }); -} - -/** - * @brief Delete a stage instance. - * @see dpp::cluster::stage_instance_delete - * @see https://discord.com/developers/docs/resources/stage-instance#delete-stage-instance - * @param channel_id ID of the associated channel - * @return confirmation returned object on completion - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * \memberof dpp::cluster - */ -auto inline co_stage_instance_delete(const snowflake channel_id) { - return dpp::awaitable(this, [&] (auto cc) { this->stage_instance_delete(channel_id, cc); }); -} - -/** - * @brief Create a sticker in a guild - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::guild_sticker_create - * @see https://discord.com/developers/docs/resources/sticker#create-guild-sticker - * @param s Sticker to create. Must have its guild ID set. - * @return sticker returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_sticker_create(sticker &s) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_sticker_create(s, cc); }); -} - -/** - * @brief Delete a sticker from a guild - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::guild_sticker_delete - * @see https://discord.com/developers/docs/resources/sticker#delete-guild-sticker - * @param sticker_id sticker ID to delete - * @param guild_id guild ID to delete from - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_sticker_delete(snowflake sticker_id, snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_sticker_delete(sticker_id, guild_id, cc); }); -} - -/** - * @brief Get a guild sticker - * @see dpp::cluster::guild_sticker_get - * @see https://discord.com/developers/docs/resources/sticker#get-guild-sticker - * @param id Id of sticker to get. - * @param guild_id Guild ID of the guild where the sticker is - * @return sticker returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_sticker_get(snowflake id, snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_sticker_get(id, guild_id, cc); }); -} - -/** - * @brief Modify a sticker in a guild - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::guild_sticker_modify - * @see https://discord.com/developers/docs/resources/sticker#modify-guild-sticker - * @param s Sticker to modify. Must have its guild ID and sticker ID set. - * @return sticker returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_sticker_modify(sticker &s) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_sticker_modify(s, cc); }); -} - -/** - * @brief Get all guild stickers - * @see dpp::cluster::guild_stickers_get - * @see https://discord.com/developers/docs/resources/sticker#get-guild-stickers - * @param guild_id Guild ID of the guild where the sticker is - * @return sticker_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_stickers_get(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_stickers_get(guild_id, cc); }); -} - -/** - * @brief Get a nitro sticker - * @see dpp::cluster::nitro_sticker_get - * @see https://discord.com/developers/docs/resources/sticker#get-sticker - * @param id Id of sticker to get. - * @return sticker returned object on completion - * \memberof dpp::cluster - */ -auto inline co_nitro_sticker_get(snowflake id) { - return dpp::awaitable(this, [&] (auto cc) { this->nitro_sticker_get(id, cc); }); -} - -/** - * @brief Get sticker packs - * @see dpp::cluster::sticker_packs_get - * @see https://discord.com/developers/docs/resources/sticker#list-nitro-sticker-packs - * @return sticker_pack_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_sticker_packs_get() { - return dpp::awaitable(this, [&] (auto cc) { this->sticker_packs_get(cc); }); -} - -/** - * @brief Create a new guild based on a template. - * @note This endpoint can be used only by bots in less than 10 guilds. - * @see dpp::cluster::guild_create_from_template - * @see https://discord.com/developers/docs/resources/guild-template#create-guild-from-guild-template - * @param code Template code to create guild from - * @param name Guild name to create - * @return guild returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_create_from_template(const std::string &code, const std::string &name) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_create_from_template(code, name, cc); }); -} - -/** - * @brief Creates a template for the guild - * - * @see dpp::cluster::guild_template_create - * @see https://discord.com/developers/docs/resources/guild-template#create-guild-template - * @param guild_id Guild to create template from - * @param name Template name to create - * @param description Description of template to create - * @return dtemplate returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_template_create(snowflake guild_id, const std::string &name, const std::string &description) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_template_create(guild_id, name, description, cc); }); -} - -/** - * @brief Deletes the template - * - * @see dpp::cluster::guild_template_delete - * @see https://discord.com/developers/docs/resources/guild-template#delete-guild-template - * @param guild_id Guild ID of template to delete - * @param code Template code to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_template_delete(snowflake guild_id, const std::string &code) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_template_delete(guild_id, code, cc); }); -} - -/** - * @brief Modifies the template's metadata. - * - * @see dpp::cluster::guild_template_modify - * @see https://discord.com/developers/docs/resources/guild-template#modify-guild-template - * @param guild_id Guild ID of template to modify - * @param code Template code to modify - * @param name New name of template - * @param description New description of template - * @return dtemplate returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_template_modify(snowflake guild_id, const std::string &code, const std::string &name, const std::string &description) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_template_modify(guild_id, code, name, description, cc); }); -} - -/** - * @brief Get guild templates - * - * @see dpp::cluster::guild_templates_get - * @see https://discord.com/developers/docs/resources/guild-template#get-guild-templates - * @param guild_id Guild ID to get templates for - * @return dtemplate_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_templates_get(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_templates_get(guild_id, cc); }); -} - -/** - * @brief Syncs the template to the guild's current state. - * - * @see dpp::cluster::guild_template_sync - * @see https://discord.com/developers/docs/resources/guild-template#sync-guild-template - * @param guild_id Guild to synchronise template for - * @param code Code of template to synchronise - * @return dtemplate returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_template_sync(snowflake guild_id, const std::string &code) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_template_sync(guild_id, code, cc); }); -} - -/** - * @brief Get a template - * @see dpp::cluster::template_get - * @see https://discord.com/developers/docs/resources/guild-template#get-guild-template - * @param code Template code - * @return dtemplate returned object on completion - * \memberof dpp::cluster - */ -auto inline co_template_get(const std::string &code) { - return dpp::awaitable(this, [&] (auto cc) { this->template_get(code, cc); }); -} - -/** - * @brief Join a thread - * @see dpp::cluster::current_user_join_thread - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread ID to join - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_current_user_join_thread(snowflake thread_id) { - return dpp::awaitable(this, [&] (auto cc) { this->current_user_join_thread(thread_id, cc); }); -} - -/** - * @brief Leave a thread - * @see dpp::cluster::current_user_leave_thread - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread ID to leave - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_current_user_leave_thread(snowflake thread_id) { - return dpp::awaitable(this, [&] (auto cc) { this->current_user_leave_thread(thread_id, cc); }); -} - -/** - * @brief Get active threads in a channel (Sorted by ID in descending order) - * @see dpp::cluster::threads_get_active - * @see https://discord.com/developers/docs/topics/threads - * @param channel_id Channel to get active threads for - * @return thread_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_threads_get_active(snowflake channel_id) { - return dpp::awaitable(this, [&] (auto cc) { this->threads_get_active(channel_id, cc); }); -} - -/** - * @brief Get private archived threads in a channel which current user has joined (Sorted by ID in descending order) - * @see dpp::cluster::threads_get_joined_private_archived - * @see https://discord.com/developers/docs/topics/threads - * @param channel_id Channel to get public archived threads for - * @param before_id Get threads before this id - * @param limit Number of threads to get - * @return thread_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_threads_get_joined_private_archived(snowflake channel_id, snowflake before_id, uint16_t limit) { - return dpp::awaitable(this, [&] (auto cc) { this->threads_get_joined_private_archived(channel_id, before_id, limit, cc); }); -} - -/** - * @brief Get private archived threads in a channel (Sorted by archive_timestamp in descending order) - * @see dpp::cluster::threads_get_private_archived - * @see https://discord.com/developers/docs/topics/threads - * @param channel_id Channel to get public archived threads for - * @param before_timestamp Get threads before this timestamp - * @param limit Number of threads to get - * @return thread_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_threads_get_private_archived(snowflake channel_id, time_t before_timestamp, uint16_t limit) { - return dpp::awaitable(this, [&] (auto cc) { this->threads_get_private_archived(channel_id, before_timestamp, limit, cc); }); -} - -/** - * @brief Get public archived threads in a channel (Sorted by archive_timestamp in descending order) - * @see dpp::cluster::threads_get_public_archived - * @see https://discord.com/developers/docs/topics/threads - * @param channel_id Channel to get public archived threads for - * @param before_timestamp Get threads before this timestamp - * @param limit Number of threads to get - * @return thread_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_threads_get_public_archived(snowflake channel_id, time_t before_timestamp, uint16_t limit) { - return dpp::awaitable(this, [&] (auto cc) { this->threads_get_public_archived(channel_id, before_timestamp, limit, cc); }); -} - -/** - * @brief Get a thread member - * @see dpp::cluster::thread_member_get - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread to get member for - * @param user_id ID of the user to get - * @return thread_member returned object on completion - * \memberof dpp::cluster - */ -auto inline co_thread_member_get(const snowflake thread_id, const snowflake user_id) { - return dpp::awaitable(this, [&] (auto cc) { this->thread_member_get(thread_id, user_id, cc); }); -} - -/** - * @brief Get members of a thread - * @see dpp::cluster::thread_members_get - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread to get members for - * @return thread_member_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_thread_members_get(snowflake thread_id) { - return dpp::awaitable(this, [&] (auto cc) { this->thread_members_get(thread_id, cc); }); -} - -/** - * @brief Create a thread - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see dpp::cluster::thread_create - * @see https://discord.com/developers/docs/resources/guild#create-guild-channel - * @param thread_name Name of the thread - * @param channel_id Channel in which thread to create - * @param auto_archive_duration Duration after which thread auto-archives. Can be set to - 60, 1440 (for boosted guilds can also be: 4320, 10080) - * @param thread_type Type of thread - CHANNEL_PUBLIC_THREAD, CHANNEL_ANNOUNCEMENT_THREAD, CHANNEL_PRIVATE_THREAD - * @param invitable whether non-moderators can add other non-moderators to a thread; only available when creating a private thread - * @param rate_limit_per_user amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages, manage_thread, or manage_channel, are unaffected - * @return thread returned object on completion - * \memberof dpp::cluster - */ -auto inline co_thread_create(const std::string& thread_name, snowflake channel_id, uint16_t auto_archive_duration, channel_type thread_type, bool invitable, uint16_t rate_limit_per_user) { - return dpp::awaitable(this, [&] (auto cc) { this->thread_create(thread_name, channel_id, auto_archive_duration, thread_type, invitable, rate_limit_per_user, cc); }); -} - -/** - * @brief Create a thread with a message (Discord: ID of a thread is same as message ID) - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::thread_create_with_message - * @see https://discord.com/developers/docs/topics/threads - * @param thread_name Name of the thread - * @param channel_id Channel in which thread to create - * @param message_id message to start thread with - * @param auto_archive_duration Duration after which thread auto-archives. Can be set to - 60, 1440 (for boosted guilds can also be: 4320, 10080) - * @param rate_limit_per_user amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages, manage_thread, or manage_channel, are unaffected - * @return thread returned object on completion - * \memberof dpp::cluster - */ -auto inline co_thread_create_with_message(const std::string& thread_name, snowflake channel_id, snowflake message_id, uint16_t auto_archive_duration, uint16_t rate_limit_per_user) { - return dpp::awaitable(this, [&] (auto cc) { this->thread_create_with_message(thread_name, channel_id, message_id, auto_archive_duration, rate_limit_per_user, cc); }); -} - -/** - * @brief Add a member to a thread - * @see dpp::cluster::thread_member_add - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread ID to add to - * @param user_id Member ID to add - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_thread_member_add(snowflake thread_id, snowflake user_id) { - return dpp::awaitable(this, [&] (auto cc) { this->thread_member_add(thread_id, user_id, cc); }); -} - -/** - * @brief Remove a member from a thread - * @see dpp::cluster::thread_member_remove - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread ID to remove from - * @param user_id Member ID to remove - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_thread_member_remove(snowflake thread_id, snowflake user_id) { - return dpp::awaitable(this, [&] (auto cc) { this->thread_member_remove(thread_id, user_id, cc); }); -} - -/** - * @brief Edit current (bot) user - * - * Modifies the current member in a guild. Returns the updated guild_member object on success. - * Fires a `Guild Member Update` Gateway event. - * @see dpp::cluster::current_user_edit - * @see https://discord.com/developers/docs/resources/user#modify-current-user - * @param nickname Nickname to set - * @param image_blob Avatar data to upload (NOTE: Very heavily rate limited!) - * @param type Type of image for avatar - * @return user returned object on completion - * @throw dpp::exception Image data is larger than the maximum size of 256 kilobytes - * \memberof dpp::cluster - */ -auto inline co_current_user_edit(const std::string &nickname, const std::string& image_blob, const image_type type) { - return dpp::awaitable(this, [&] (auto cc) { this->current_user_edit(nickname, image_blob, type, cc); }); -} - -/** - * @brief Get current (bot) application - * - * @see dpp::cluster::current_application_get - * @see https://discord.com/developers/docs/topics/oauth2#get-current-bot-application-information - * @return application returned object on completion - * \memberof dpp::cluster - */ -auto inline co_current_application_get() { - return dpp::awaitable(this, [&] (auto cc) { this->current_application_get(cc); }); -} - -/** - * @brief Get current (bot) user - * - * @see dpp::cluster::current_user_get - * @see https://discord.com/developers/docs/resources/user#get-current-user - * @return user_identified returned object on completion - * @note The user_identified object is a subclass of dpp::user which contains further details if you have the oauth2 identify or email scopes. - * If you do not have these scopes, these fields are empty. You can safely convert a user_identified to user with `dynamic_cast`. - * \memberof dpp::cluster - */ -auto inline co_current_user_get() { - return dpp::awaitable(this, [&] (auto cc) { this->current_user_get(cc); }); -} - -/** - * @brief Set the bot's voice state on a stage channel - * - * **Caveats** - * - * There are currently several caveats for this endpoint: - * - * - `channel_id` must currently point to a stage channel. - * - current user must already have joined `channel_id`. - * - You must have the `MUTE_MEMBERS` permission to unsuppress yourself. You can always suppress yourself. - * - You must have the `REQUEST_TO_SPEAK` permission to request to speak. You can always clear your own request to speak. - * - You are able to set `request_to_speak_timestamp` to any present or future time. - * - * @see dpp::cluster::current_user_set_voice_state - * @see https://discord.com/developers/docs/resources/guild#modify-current-user-voice-state - * @param guild_id Guild to set voice state on - * @param channel_id Stage channel to set voice state on - * @return confirmation returned object on completion - * @param suppress True if the user's audio should be suppressed, false if it should not - * @param request_to_speak_timestamp The time at which we requested to speak, or 0 to clear the request. The time set here must be the current time or in the future. - * @throw std::logic_exception You attempted to set a request_to_speak_timestamp in the past which is not the value of 0. - * \memberof dpp::cluster - */ -auto inline co_current_user_set_voice_state(snowflake guild_id, snowflake channel_id, bool suppress, time_t request_to_speak_timestamp) { - return dpp::awaitable(this, [&] (auto cc) { this->current_user_set_voice_state(guild_id, channel_id, suppress, request_to_speak_timestamp, cc); }); -} - -/** - * @brief Set a user's voice state on a stage channel - * - * **Caveats** - * - * There are currently several caveats for this endpoint: - * - * - `channel_id` must currently point to a stage channel. - * - User must already have joined `channel_id`. - * - You must have the `MUTE_MEMBERS` permission. (Since suppression is the only thing that is available currently) - * - When unsuppressed, non-bot users will have their `request_to_speak_timestamp` set to the current time. Bot users will not. - * - When suppressed, the user will have their `request_to_speak_timestamp` removed. - * - * @see dpp::cluster::user_set_voice_state - * @see https://discord.com/developers/docs/resources/guild#modify-user-voice-state - * @param user_id The user to set the voice state of - * @param guild_id Guild to set voice state on - * @param channel_id Stage channel to set voice state on - * @return confirmation returned object on completion - * @param suppress True if the user's audio should be suppressed, false if it should not - * \memberof dpp::cluster - */ -auto inline co_user_set_voice_state(snowflake user_id, snowflake guild_id, snowflake channel_id, bool suppress) { - return dpp::awaitable(this, [&] (auto cc) { this->user_set_voice_state(user_id, guild_id, channel_id, suppress, cc); }); -} - -/** - * @brief Get current user's connections (linked accounts, e.g. steam, xbox). - * This call requires the oauth2 `connections` scope and cannot be executed - * against a bot token. - * @see dpp::cluster::current_user_connections_get - * @see https://discord.com/developers/docs/resources/user#get-user-connections - * @return connection_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_current_user_connections_get() { - return dpp::awaitable(this, [&] (auto cc) { this->current_user_connections_get(cc); }); -} - -/** - * @brief Get current (bot) user guilds - * @see dpp::cluster::current_user_get_guilds - * @see https://discord.com/developers/docs/resources/user#get-current-user-guilds - * @return guild_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_current_user_get_guilds() { - return dpp::awaitable(this, [&] (auto cc) { this->current_user_get_guilds(cc); }); -} - -/** - * @brief Leave a guild - * @see dpp::cluster::current_user_leave_guild - * @see https://discord.com/developers/docs/resources/user#leave-guild - * @param guild_id Guild ID to leave - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_current_user_leave_guild(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->current_user_leave_guild(guild_id, cc); }); -} - -/** - * @brief Get a user by id - * - * @see dpp::cluster::user_get - * @see https://discord.com/developers/docs/resources/user#get-user - * @param user_id User ID to retrieve - * @return user_identified returned object on completion - * @note The user_identified object is a subclass of dpp::user which contains further details if you have the oauth2 identify or email scopes. - * If you do not have these scopes, these fields are empty. You can safely convert a user_identified to user with `dynamic_cast`. - * @note unless you want something special from `dpp::user_identified` or you've turned off caching, you have no need to call this. - * Call `dpp::find_user` instead that looks up the user in the cache rather than a REST call. - * \memberof dpp::cluster - */ -auto inline co_user_get(snowflake user_id) { - return dpp::awaitable(this, [&] (auto cc) { this->user_get(user_id, cc); }); -} - -/** - * @brief Get all voice regions - * @see dpp::cluster::get_voice_regions - * @see https://discord.com/developers/docs/resources/voice#list-voice-regions - * @return voiceregion_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_get_voice_regions() { - return dpp::awaitable(this, [&] (auto cc) { this->get_voice_regions(cc); }); -} - -/** - * @brief Get guild voice regions. - * - * Voice regions per guild are somewhat deprecated in preference of per-channel voice regions. - * Returns a list of voice region objects for the guild. Unlike the similar /voice route, this returns VIP servers when - * the guild is VIP-enabled. - * - * @see dpp::cluster::guild_get_voice_regions - * @see https://discord.com/developers/docs/resources/guild#get-guild-voice-regions - * @param guild_id Guild ID to get voice regions for - * @return voiceregion_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_guild_get_voice_regions(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->guild_get_voice_regions(guild_id, cc); }); -} - -/** - * @brief Create a webhook - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::create_webhook - * @see https://discord.com/developers/docs/resources/webhook#create-webhook - * @param w Webhook to create - * @return webhook returned object on completion - * \memberof dpp::cluster - */ -auto inline co_create_webhook(const class webhook &w) { - return dpp::awaitable(this, [&] (auto cc) { this->create_webhook(w, cc); }); -} - -/** - * @brief Delete a webhook - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::delete_webhook - * @see https://discord.com/developers/docs/resources/webhook#delete-webhook - * @param webhook_id Webhook ID to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_delete_webhook(snowflake webhook_id) { - return dpp::awaitable(this, [&] (auto cc) { this->delete_webhook(webhook_id, cc); }); -} - -/** - * @brief Delete webhook message - * - * @see dpp::cluster::delete_webhook_message - * @see https://discord.com/developers/docs/resources/webhook#delete-webhook-message - * @param wh Webhook to delete message for - * @param message_id Message ID to delete - * @param thread_id ID of the thread the message is in - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_delete_webhook_message(const class webhook &wh, snowflake message_id, snowflake thread_id) { - return dpp::awaitable(this, [&] (auto cc) { this->delete_webhook_message(wh, message_id, thread_id, cc); }); -} - -/** - * @brief Delete webhook with token - * @see dpp::cluster::delete_webhook_with_token - * @see https://discord.com/developers/docs/resources/webhook#delete-webhook-with-token - * @param webhook_id Webhook ID to delete - * @param token Token of webhook to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - */ -auto inline co_delete_webhook_with_token(snowflake webhook_id, const std::string &token) { - return dpp::awaitable(this, [&] (auto cc) { this->delete_webhook_with_token(webhook_id, token, cc); }); -} - -/** - * @brief Edit webhook - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::edit_webhook - * @see https://discord.com/developers/docs/resources/webhook#modify-webhook - * @param wh Webhook to edit - * @return webhook returned object on completion - * \memberof dpp::cluster - */ -auto inline co_edit_webhook(const class webhook& wh) { - return dpp::awaitable(this, [&] (auto cc) { this->edit_webhook(wh, cc); }); -} - -/** - * @brief Edit webhook message - * - * When the content field is edited, the mentions array in the message object will be reconstructed from scratch based on - * the new content. The allowed_mentions field of the edit request controls how this happens. If there is no explicit - * allowed_mentions in the edit request, the content will be parsed with default allowances, that is, without regard to - * whether or not an allowed_mentions was present in the request that originally created the message. - * - * @see dpp::cluster::edit_webhook_message - * @see https://discord.com/developers/docs/resources/webhook#edit-webhook-message - * @note the attachments array must contain all attachments that should be present after edit, including retained and new attachments provided in the request body. - * @param wh Webhook to edit message for - * @param m New message - * @param thread_id ID of the thread the message is in - * @return message returned object on completion - * \memberof dpp::cluster - */ -auto inline co_edit_webhook_message(const class webhook &wh, const struct message& m, snowflake thread_id) { - return dpp::awaitable(this, [&] (auto cc) { this->edit_webhook_message(wh, m, thread_id, cc); }); -} - -/** - * @brief Edit webhook with token (token is encapsulated in the webhook object) - * @see dpp::cluster::edit_webhook_with_token - * @see https://discord.com/developers/docs/resources/webhook#modify-webhook-with-token - * @param wh Webhook to edit (should include token) - * @return webhook returned object on completion - * \memberof dpp::cluster - */ -auto inline co_edit_webhook_with_token(const class webhook& wh) { - return dpp::awaitable(this, [&] (auto cc) { this->edit_webhook_with_token(wh, cc); }); -} - -/** - * @brief Execute webhook - * - * @see dpp::cluster::execute_webhook - * @see https://discord.com/developers/docs/resources/webhook#execute-webhook - * @param wh Webhook to execute - * @param m Message to send - * @param wait waits for server confirmation of message send before response, and returns the created message body - * @param thread_id Send a message to the specified thread within a webhook's channel. The thread will automatically be unarchived - * @param thread_name Name of thread to create (requires the webhook channel to be a forum channel) - * @return message returned object on completion - * @note If the webhook channel is a forum channel, you must provide either `thread_id` or `thread_name`. If `thread_id` is provided, the message will send in that thread. If `thread_name` is provided, a thread with that name will be created in the forum channel. - * \memberof dpp::cluster - */ -auto inline co_execute_webhook(const class webhook &wh, const struct message& m, bool wait, snowflake thread_id, const std::string& thread_name) { - return dpp::awaitable(this, [&] (auto cc) { this->execute_webhook(wh, m, wait, thread_id, thread_name, cc); }); -} - -/** - * @brief Get channel webhooks - * @see dpp::cluster::get_channel_webhooks - * @see https://discord.com/developers/docs/resources/webhook#get-guild-webhooks - * @param channel_id Channel ID to get webhooks for - * @return webhook_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_get_channel_webhooks(snowflake channel_id) { - return dpp::awaitable(this, [&] (auto cc) { this->get_channel_webhooks(channel_id, cc); }); -} - -/** - * @brief Get guild webhooks - * @see dpp::cluster::get_guild_webhooks - * @see https://discord.com/developers/docs/resources/webhook#get-guild-webhooks - * @param guild_id Guild ID to get webhooks for - * @return webhook_map returned object on completion - * \memberof dpp::cluster - */ -auto inline co_get_guild_webhooks(snowflake guild_id) { - return dpp::awaitable(this, [&] (auto cc) { this->get_guild_webhooks(guild_id, cc); }); -} - -/** - * @brief Get webhook - * @see dpp::cluster::get_webhook - * @see https://discord.com/developers/docs/resources/webhook#get-webhook - * @param webhook_id Webhook ID to get - * @return webhook returned object on completion - * \memberof dpp::cluster - */ -auto inline co_get_webhook(snowflake webhook_id) { - return dpp::awaitable(this, [&] (auto cc) { this->get_webhook(webhook_id, cc); }); -} - -/** - * @brief Get webhook message - * - * @see dpp::cluster::get_webhook_message - * @see https://discord.com/developers/docs/resources/webhook#get-webhook-message - * @param wh Webhook to get the original message for - * @param message_id The message ID - * @param thread_id ID of the thread the message is in - * @return message returned object on completion - * \memberof dpp::cluster - */ -auto inline co_get_webhook_message(const class webhook &wh, snowflake message_id, snowflake thread_id) { - return dpp::awaitable(this, [&] (auto cc) { this->get_webhook_message(wh, message_id, thread_id, cc); }); -} - -/** - * @brief Get webhook using token - * @see dpp::cluster::get_webhook_with_token - * @see https://discord.com/developers/docs/resources/webhook#get-webhook-with-token - * @param webhook_id Webhook ID to retrieve - * @param token Token of webhook - * @return webhook returned object on completion - * \memberof dpp::cluster - */ -auto inline co_get_webhook_with_token(snowflake webhook_id, const std::string &token) { - return dpp::awaitable(this, [&] (auto cc) { this->get_webhook_with_token(webhook_id, token, cc); }); -} - - -/* End of auto-generated definitions */ -auto inline co_request(const std::string &url, http_method method, const std::string &postdata = "", const std::string &mimetype = "text/plain", const std::multimap &headers = {}) { - return dpp::awaitable(this, [&] (auto cc) { this->request(url, method, cc, mimetype, headers); }); -} - diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/cluster_sync_calls.h b/Source/ThirdParty/DPPLibrary/include/dpp/cluster_sync_calls.h deleted file mode 100644 index 99eddbc..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/cluster_sync_calls.h +++ /dev/null @@ -1,2523 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2022 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - - -/* Auto @generated by buildtools/make_sync_struct.php. - * - * DO NOT EDIT BY HAND! - * - * To re-generate this header file re-run the script! - */ -/** - * @brief Create/overwrite global slash commands. - * Any existing global slash commands will be deleted and replaced with these. - * - * @see dpp::cluster::global_bulk_command_create - * @see https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-global-application-commands - * @param commands Vector of slash commands to create/update. - * overwriting existing commands that are registered globally for this application. Updates will be available in all guilds after 1 hour. - * Commands that do not already exist will count toward daily application command create limits. - * @return slashcommand_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -slashcommand_map global_bulk_command_create_sync(const std::vector &commands); - -/** - * @brief Create a global slash command (a bot can have a maximum of 100 of these). - * - * @see dpp::cluster::global_command_create - * @see https://discord.com/developers/docs/interactions/application-commands#create-global-application-command - * @param s Slash command to create - * @return slashcommand returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -slashcommand global_command_create_sync(const slashcommand &s); - -/** - * @brief Get a global slash command - * - * @see dpp::cluster::global_command_get - * @see https://discord.com/developers/docs/interactions/application-commands#get-global-application-command - * @param id The ID of the slash command - * @return slashcommand returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -slashcommand global_command_get_sync(snowflake id); - -/** - * @brief Delete a global slash command (a bot can have a maximum of 100 of these) - * - * @see dpp::cluster::global_command_delete - * @see https://discord.com/developers/docs/interactions/application-commands#delete-global-application-command - * @param id Slash command to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation global_command_delete_sync(snowflake id); - -/** - * @brief Edit a global slash command (a bot can have a maximum of 100 of these) - * - * @see dpp::cluster::global_command_edit - * @see https://discord.com/developers/docs/interactions/application-commands#edit-global-application-command - * @param s Slash command to change - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation global_command_edit_sync(const slashcommand &s); - -/** - * @brief Get the application's global slash commands - * - * @see dpp::cluster::global_commands_get - * @see https://discord.com/developers/docs/interactions/application-commands#get-global-application-commands - * @return slashcommand_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -slashcommand_map global_commands_get_sync(); - -/** - * @brief Create/overwrite guild slash commands. - * Any existing guild slash commands on this guild will be deleted and replaced with these. - * - * @see dpp::cluster::guild_bulk_command_create - * @see https://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-guild-application-commands - * @param commands Vector of slash commands to create/update. - * New guild commands will be available in the guild immediately. If the command did not already exist, it will count toward daily application command create limits. - * @param guild_id Guild ID to create/update the slash commands in - * @return slashcommand_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -slashcommand_map guild_bulk_command_create_sync(const std::vector &commands, snowflake guild_id); - -/** - * @brief Get all slash command permissions of a guild - * - * @see dpp::cluster::guild_commands_get_permissions - * @see https://discord.com/developers/docs/interactions/application-commands#get-application-command-permissions - * @param guild_id Guild ID to get the slash commands permissions for - * @return guild_command_permissions_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -guild_command_permissions_map guild_commands_get_permissions_sync(snowflake guild_id); - -/** - * @brief Edit/Overwrite the permissions of all existing slash commands in a guild - * - * @note You can only add up to 10 permission overwrites for a command - * - * @see dpp::cluster::guild_bulk_command_edit_permissions - * @see https://discord.com/developers/docs/interactions/application-commands#batch-edit-application-command-permissions - * @warning The endpoint will overwrite all existing permissions for all commands of the application in a guild, including slash commands, user commands, and message commands. Meaning that if you forgot to pass a slash command, the permissions of it might be removed. - * @param commands A vector of slash commands to edit/overwrite the permissions for - * @param guild_id Guild ID to edit permissions of the slash commands in - * @return guild_command_permissions_map returned object on completion - * @deprecated This has been disabled with updates to Permissions v2. You can use guild_command_edit_permissions instead - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -guild_command_permissions_map guild_bulk_command_edit_permissions_sync(const std::vector &commands, snowflake guild_id); - -/** - * @brief Create a slash command local to a guild - * - * @see dpp::cluster::guild_command_create - * @see https://discord.com/developers/docs/interactions/application-commands#create-guild-application-command - * @note Creating a command with the same name as an existing command for your application will overwrite the old command. - * @param s Slash command to create - * @param guild_id Guild ID to create the slash command in - * @return slashcommand returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -slashcommand guild_command_create_sync(const slashcommand &s, snowflake guild_id); - -/** - * @brief Delete a slash command local to a guild - * - * @see dpp::cluster::guild_command_delete - * @see https://discord.com/developers/docs/interactions/application-commands#delete-guild-application-command - * @param id Slash command to delete - * @param guild_id Guild ID to delete the slash command in - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_command_delete_sync(snowflake id, snowflake guild_id); - -/** - * @brief Edit slash command permissions of a guild - * - * @see dpp::cluster::guild_command_edit_permissions - * @see https://discord.com/developers/docs/interactions/application-commands#edit-application-command-permissions - * @note You can only add up to 10 permission overwrites for a command - * @param s Slash command to edit the permissions for - * @param guild_id Guild ID to edit the slash command in - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_command_edit_permissions_sync(const slashcommand &s, snowflake guild_id); - -/** - * @brief Get a slash command of a guild - * - * @see dpp::cluster::guild_command_get - * @see https://discord.com/developers/docs/interactions/application-commands#get-guild-application-command - * @note The returned slash commands will not have permissions set, you need to use a permissions getter e.g. dpp::guild_commands_get_permissions to get the guild command permissions - * @param id The ID of the slash command - * @param guild_id Guild ID to get the slash command from - * @return slashcommand returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -slashcommand guild_command_get_sync(snowflake id, snowflake guild_id); - -/** - * @brief Get the permissions for a slash command of a guild - * - * @see dpp::cluster::guild_command_get_permissions - * @see https://discord.com/developers/docs/interactions/application-commands#get-application-command-permissions - * @param id The ID of the slash command to get the permissions for - * @param guild_id Guild ID to get the permissions of - * @return guild_command_permissions returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -guild_command_permissions guild_command_get_permissions_sync(snowflake id, snowflake guild_id); - -/** - * @brief Edit a slash command local to a guild - * - * @see dpp::cluster::guild_command_edit - * @see https://discord.com/developers/docs/interactions/application-commands#edit-guild-application-command - * @param s Slash command to edit - * @param guild_id Guild ID to edit the slash command in - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_command_edit_sync(const slashcommand &s, snowflake guild_id); - -/** - * @brief Get the application's slash commands for a guild - * - * @see dpp::cluster::guild_commands_get - * @see https://discord.com/developers/docs/interactions/application-commands#get-guild-application-commands - * @note The returned slash commands will not have permissions set, you need to use a permissions getter e.g. dpp::guild_commands_get_permissions to get the guild command permissions - * @param guild_id Guild ID to get the slash commands for - * @return slashcommand_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -slashcommand_map guild_commands_get_sync(snowflake guild_id); - -/** - * @brief Respond to a slash command - * - * @see dpp::cluster::interaction_response_create - * @see https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response - * @param interaction_id Interaction id to respond to - * @param token Token for the interaction webhook - * @param r Response to send - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation interaction_response_create_sync(snowflake interaction_id, const std::string &token, const interaction_response &r); - -/** - * @brief Edit response to a slash command - * - * @see dpp::cluster::interaction_response_edit - * @see https://discord.com/developers/docs/interactions/receiving-and-responding#edit-original-interaction-response - * @param token Token for the interaction webhook - * @param m Message to send - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation interaction_response_edit_sync(const std::string &token, const message &m); - -/** - * @brief Create a followup message to a slash command - * - * @param token Token for the interaction webhook - * @param m followup message to create - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation interaction_followup_create_sync(const std::string &token, const message &m); - -/** - * @brief Edit original followup message to a slash command - * This is an alias for cluster::interaction_response_edit - * @see dpp::cluster::interaction_followup_edit_original - * @see cluster::interaction_response_edit - * - * @param token Token for the interaction webhook - * @param m message to edit, the ID should be set - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation interaction_followup_edit_original_sync(const std::string &token, const message &m); - -/** - * @brief - * - * @param token Token for the interaction webhook - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation interaction_followup_delete_sync(const std::string &token); - -/** - * @brief Edit followup message to a slash command - * The message ID in the message you pass should be correctly set to that of a followup message you previously sent - * @param token Token for the interaction webhook - * @param m message to edit, the ID should be set - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation interaction_followup_edit_sync(const std::string &token, const message &m); - -/** - * @brief Get the followup message to a slash command - * @param token Token for the interaction webhook - * @param message_id message to retrieve - * @return message returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -message interaction_followup_get_sync(const std::string &token, snowflake message_id); - -/** - * @brief Get all auto moderation rules for a guild - * - * @param guild_id Guild id of the auto moderation rule - * @return automod_rule_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -automod_rule_map automod_rules_get_sync(snowflake guild_id); - -/** - * @brief Get a single auto moderation rule - * - * @param guild_id Guild id of the auto moderation rule - * @param rule_id Rule id to retrieve - * @return automod_rule returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -automod_rule automod_rule_get_sync(snowflake guild_id, snowflake rule_id); - -/** - * @brief Create an auto moderation rule - * - * @param guild_id Guild id of the auto moderation rule - * @param r Auto moderation rule to create - * @return automod_rule returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -automod_rule automod_rule_create_sync(snowflake guild_id, const automod_rule& r); - -/** - * @brief Edit an auto moderation rule - * - * @param guild_id Guild id of the auto moderation rule - * @param r Auto moderation rule to edit. The rule's id must be set. - * @return automod_rule returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -automod_rule automod_rule_edit_sync(snowflake guild_id, const automod_rule& r); - -/** - * @brief Delete an auto moderation rule - * - * @param guild_id Guild id of the auto moderation rule - * @param rule_id Auto moderation rule id to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation automod_rule_delete_sync(snowflake guild_id, snowflake rule_id); - -/** - * @brief Create a channel - * - * Create a new channel object for the guild. Requires the `MANAGE_CHANNELS` permission. If setting permission overwrites, - * only permissions your bot has in the guild can be allowed/denied. Setting `MANAGE_ROLES` permission in channels is only possible - * for guild administrators. Returns the new channel object on success. Fires a `Channel Create Gateway` event. - * - * All parameters to this endpoint are optional excluding `name` - * - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::channel_create - * @see https://discord.com/developers/docs/resources/channel#create-channel - * @param c Channel to create - * @return channel returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -channel channel_create_sync(const class channel &c); - -/** - * @brief Remove a permission from a channel - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::channel_delete_permission - * @see https://discord.com/developers/docs/resources/channel#delete-channel-permission - * @param c Channel to remove permission from - * @param overwrite_id Overwrite to remove, user or channel ID - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation channel_delete_permission_sync(const class channel &c, snowflake overwrite_id); - -/** - * @brief Delete a channel - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::channel_delete - * @see https://discord.com/developers/docs/resources/channel#deleteclose-channel - * @param channel_id Channel id to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation channel_delete_sync(snowflake channel_id); - -/** - * @brief Edit multiple channels positions - * - * Modify the positions of a set of channel objects for the guild. - * Requires `MANAGE_CHANNELS` permission. Fires multiple `Channel Update Gateway` events. - * Only channels to be modified are required. - * - * @see dpp::cluster::channel_edit_positions - * @see https://discord.com/developers/docs/resources/guild#modify-guild-channel-positions - * @param c Channel to change the position for - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation channel_edit_positions_sync(const std::vector &c); - -/** - * @brief Edit a channel - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::channel_edit - * @see https://discord.com/developers/docs/resources/channel#modify-channel - * @param c Channel to edit/update - * @return channel returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -channel channel_edit_sync(const class channel &c); - -/** - * @brief Follow an announcement (news) channel - * @see dpp::cluster::channel_follow_news - * @see https://discord.com/developers/docs/resources/channel#follow-news-channel - * @param c Channel id to follow - * @param target_channel_id Channel to subscribe the channel to - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation channel_follow_news_sync(const class channel &c, snowflake target_channel_id); - -/** - * @brief Get a channel - * - * @see dpp::cluster::channel_get - * @see https://discord.com/developers/docs/resources/channel#get-channel - * @param c Channel ID to retrieve - * @return channel returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -channel channel_get_sync(snowflake c); - -/** - * @brief Create invite for a channel - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::channel_invite_create - * @see https://discord.com/developers/docs/resources/channel#create-channel-invite - * @param c Channel to create an invite on - * @param i Invite to create - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation channel_invite_create_sync(const class channel &c, const class invite &i); - -/** - * @brief Get invites for a channel - * - * @see dpp::cluster::channel_invites_get - * @see https://discord.com/developers/docs/resources/invite#get-invites - * @param c Channel to get invites for - * @return invite_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -invite_map channel_invites_get_sync(const class channel &c); - -/** - * @brief Get all channels for a guild - * - * @see dpp::cluster::channels_get - * @see https://discord.com/developers/docs/resources/channel#get-channels - * @param guild_id Guild ID to retrieve channels for - * @return channel_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -channel_map channels_get_sync(snowflake guild_id); - -/** - * @brief Create a dm channel - * @see dpp::cluster::create_dm_channel - * @see https://discord.com/developers/docs/resources/user#create-dm - * @param user_id User ID to create DM channel with - * @return channel returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -channel create_dm_channel_sync(snowflake user_id); - -/** - * @brief Get current user DM channels - * - * @return channel_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -channel_map current_user_get_dms_sync(); - -/** - * @brief Create a direct message, also create the channel for the direct message if needed - * - * @see dpp::cluster::direct_message_create - * @see https://discord.com/developers/docs/resources/user#create-dm - * @see dpp::cluster::direct_message_create - * @see https://discord.com/developers/docs/resources/channel#create-message - * @param user_id User ID of user to send message to - * @param m Message object - * @return message returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -message direct_message_create_sync(snowflake user_id, const message &m); - -/** - * @brief Adds a recipient to a Group DM using their access token - * @see dpp::cluster::gdm_add - * @see https://discord.com/developers/docs/resources/channel#group-dm-add-recipient - * @param channel_id Channel id to add group DM recipients to - * @param user_id User ID to add - * @param access_token Access token from OAuth2 - * @param nick Nickname of user to apply to the chat - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation gdm_add_sync(snowflake channel_id, snowflake user_id, const std::string &access_token, const std::string &nick); - -/** - * @brief Removes a recipient from a Group DM - * @see dpp::cluster::gdm_remove - * @see https://discord.com/developers/docs/resources/channel#group-dm-remove-recipient - * @param channel_id Channel ID of group DM - * @param user_id User ID to remove from group DM - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation gdm_remove_sync(snowflake channel_id, snowflake user_id); - -/** - * @brief Create single emoji. - * You must ensure that the emoji passed contained image data using the emoji::load_image() method. - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see dpp::cluster::guild_emoji_create - * @see https://discord.com/developers/docs/resources/emoji#create-guild-emoji - * @param guild_id Guild ID to create emoji om - * @param newemoji Emoji to create - * @return emoji returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -emoji guild_emoji_create_sync(snowflake guild_id, const class emoji& newemoji); - -/** - * @brief Delete a guild emoji - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see dpp::cluster::guild_emoji_delete - * @see https://discord.com/developers/docs/resources/emoji#delete-guild-emoji - * @param guild_id Guild ID to delete emoji on - * @param emoji_id Emoji ID to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_emoji_delete_sync(snowflake guild_id, snowflake emoji_id); - -/** - * @brief Edit a single emoji. - * - * You must ensure that the emoji passed contained image data using the emoji::load_image() method. - * @see dpp::cluster::guild_emoji_edit - * @see https://discord.com/developers/docs/resources/emoji#get-guild-emoji - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to edit emoji on - * @param newemoji Emoji to edit - * @return emoji returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -emoji guild_emoji_edit_sync(snowflake guild_id, const class emoji& newemoji); - -/** - * @brief Get a single emoji - * - * @see dpp::cluster::guild_emoji_get - * @see https://discord.com/developers/docs/resources/emoji#get-guild-emoji - * @param guild_id Guild ID to get emoji for - * @param emoji_id Emoji ID to get - * @return emoji returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -emoji guild_emoji_get_sync(snowflake guild_id, snowflake emoji_id); - -/** - * @brief Get all emojis for a guild - * - * @see dpp::cluster::guild_emojis_get - * @see https://discord.com/developers/docs/resources/emoji#get-guild-emojis - * @param guild_id Guild ID to get emojis for - * @return emoji_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -emoji_map guild_emojis_get_sync(snowflake guild_id); - -/** - * @brief Get the gateway information for the bot using the token - * @see dpp::cluster::get_gateway_bot - * @see https://discord.com/developers/docs/topics/gateway#get-gateway-bot - * @return gateway returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -gateway get_gateway_bot_sync(); - -/** - * @brief Modify current member - * - * Modifies the current member in a guild. - * Fires a `Guild Member Update` Gateway event. - * - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::guild_current_member_edit - * @see https://discord.com/developers/docs/resources/guild#modify-current-member - * @param guild_id Guild ID to change on - * @param nickname New nickname, or empty string to clear nickname - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_current_member_edit_sync(snowflake guild_id, const std::string &nickname); - -/** - * @brief Get the audit log for a guild - * - * @see dpp::cluster::guild_auditlog_get - * @see https://discord.com/developers/docs/resources/audit-log#get-guild-audit-log - * @param guild_id Guild to get the audit log of - * @param user_id Entries from a specific user ID. Set this to `0` will fetch any user - * @param action_type Entries for a specific dpp::audit_type. Set this to `0` will fetch any type - * @param before Entries with ID less than a specific audit log entry ID. Used for paginating - * @param after Entries with ID greater than a specific audit log entry ID. Used for paginating - * @param limit Maximum number of entries (between 1-100) to return - * @return auditlog returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -auditlog guild_auditlog_get_sync(snowflake guild_id, snowflake user_id, uint32_t action_type, snowflake before, snowflake after, uint32_t limit); - -/** - * @brief Add guild ban - * - * Create a guild ban, and optionally delete previous messages sent by the banned user. - * Requires the `BAN_MEMBERS` permission. Fires a `Guild Ban Add` Gateway event. - * @see dpp::cluster::guild_ban_add - * @see https://discord.com/developers/docs/resources/guild#create-guild-ban - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to add ban to - * @param user_id User ID to ban - * @param delete_message_seconds How many seconds to delete messages for, between 0 and 604800 (7 days). Defaults to 0 - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_ban_add_sync(snowflake guild_id, snowflake user_id, uint32_t delete_message_seconds = 0); - -/** - * @brief Delete guild ban - * - * Remove the ban for a user. Requires the `BAN_MEMBERS` permissions. - * Fires a Guild Ban Remove Gateway event. - * @see dpp::cluster::guild_ban_delete - * @see https://discord.com/developers/docs/resources/guild#remove-guild-ban - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild to delete ban from - * @param user_id User ID to delete ban for - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_ban_delete_sync(snowflake guild_id, snowflake user_id); - -/** - * @brief Create a guild - * - * Create a new guild. Returns a guild object on success. `Fires a Guild Create Gateway` event. - * - * When using the roles parameter, the first member of the array is used to change properties of the guild's everyone role. - * If you are trying to bootstrap a guild with additional roles, keep this in mind. The required id field within each role object is an - * integer placeholder, and will be replaced by the API upon consumption. Its purpose is to allow you to overwrite a role's permissions - * in a channel when also passing in channels with the channels array. - * When using the channels parameter, the position field is ignored, and none of the default channels are created. The id field within - * each channel object may be set to an integer placeholder, and will be replaced by the API upon consumption. Its purpose is to - * allow you to create `GUILD_CATEGORY` channels by setting the `parent_id` field on any children to the category's id field. - * Category channels must be listed before any children. - * - * @see dpp::cluster::guild_create - * @see https://discord.com/developers/docs/resources/guild#create-guild - * @note The region field is deprecated and is replaced by channel.rtc_region. This endpoint can be used only by bots in less than 10 guilds. - * @param g Guild to create - * @return guild returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -guild guild_create_sync(const class guild &g); - -/** - * @brief Delete a guild - * - * Delete a guild permanently. User must be owner. Fires a `Guild Delete Gateway` event. - * - * @see dpp::cluster::guild_delete - * @see https://discord.com/developers/docs/resources/guild#delete-guild - * @param guild_id Guild ID to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_delete_sync(snowflake guild_id); - -/** - * @brief Delete guild integration - * - * Delete the attached integration object for the guild. Deletes any associated webhooks and kicks the associated bot if there is one. - * Requires the `MANAGE_GUILD` permission. Fires a Guild Integrations Update Gateway event. - * - * @see dpp::cluster::guild_delete_integration - * @see https://discord.com/developers/docs/resources/guild#delete-guild-integration - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to delete integration for - * @param integration_id Integration ID to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_delete_integration_sync(snowflake guild_id, snowflake integration_id); - -/** - * @brief Edit a guild - * - * Modify a guild's settings. Requires the `MANAGE_GUILD` permission. Returns the updated guild object on success. - * Fires a `Guild Update Gateway` event. - * - * @see dpp::cluster::guild_edit - * @see https://discord.com/developers/docs/resources/guild#modify-guild - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param g Guild to edit - * @return guild returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -guild guild_edit_sync(const class guild &g); - -/** - * @brief Edit guild widget - * - * Requires the `MANAGE_GUILD` permission. - * - * @see dpp::cluster::guild_edit_widget - * @see https://discord.com/developers/docs/resources/guild#modify-guild-widget - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to edit widget for - * @param gw New guild widget information - * @return guild_widget returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -guild_widget guild_edit_widget_sync(snowflake guild_id, const class guild_widget &gw); - -/** - * @brief Get single guild ban - * - * Requires the `BAN_MEMBERS` permission. - * @see dpp::cluster::guild_get_ban - * @see https://discord.com/developers/docs/resources/guild#get-guild-ban - * @param guild_id Guild ID to get ban for - * @param user_id User ID of ban to retrieve - * @return ban returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -ban guild_get_ban_sync(snowflake guild_id, snowflake user_id); - -/** - * @brief Get guild ban list - * - * Requires the `BAN_MEMBERS` permission. - * @see dpp::cluster::guild_get_bans - * @see https://discord.com/developers/docs/resources/guild#get-guild-bans - * @note Provide a user ID to `before` and `after` for pagination. Users will always be returned in ascending order by the user ID. If both before and after are provided, only before is respected. - * @param guild_id Guild ID to get bans for - * @param before If non-zero, all bans for user ids before this user id will be returned up to the limit - * @param after if non-zero, all bans for user ids after this user id will be returned up to the limit - * @param limit the maximum number of bans to retrieve in this call up to a maximum of 1000 - * @return ban_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -ban_map guild_get_bans_sync(snowflake guild_id, snowflake before, snowflake after, snowflake limit); - - -guild guild_get_sync(snowflake guild_id); - -/** - * @brief Get guild integrations - * - * Requires the `MANAGE_GUILD` permission. - * - * @see dpp::cluster::guild_get_integrations - * @see https://discord.com/developers/docs/resources/guild#get-guild-integrations - * @param guild_id Guild ID to get integrations for - * @return integration_map returned object on completion - * - * @note This endpoint returns a maximum of 50 integrations. If a guild has more integrations, they cannot be accessed. - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -integration_map guild_get_integrations_sync(snowflake guild_id); - - -guild guild_get_preview_sync(snowflake guild_id); - -/** - * @brief Get guild vanity url, if enabled - * - * Returns a partial dpp::invite object for guilds with that feature enabled. Requires the `MANAGE_GUILD` permission. code will be null if a vanity url for the guild is not set. - * @see dpp::cluster::guild_get_vanity - * @see https://discord.com/developers/docs/resources/guild#get-guild-vanity-url - * @param guild_id Guild to get vanity URL for - * @return invite returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -invite guild_get_vanity_sync(snowflake guild_id); - -/** - * @brief Get guild widget - * - * Requires the `MANAGE_GUILD` permission. - * - * @see dpp::cluster::guild_get_widget - * @see https://discord.com/developers/docs/resources/guild#get-guild-widget - * @param guild_id Guild ID to get widget for - * @return guild_widget returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -guild_widget guild_get_widget_sync(snowflake guild_id); - -/** - * @brief Modify guild integration - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see dpp::cluster::guild_modify_integration - * @see https://discord.com/developers/docs/resources/guild#modify-guild-integration - * @param guild_id Guild ID to modify integration for - * @param i Integration to modify - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_modify_integration_sync(snowflake guild_id, const class integration &i); - -/** - * @brief Get prune counts - * - * Returns a prune object indicating the number of members that would be removed in a prune operation. Requires the `KICK_MEMBERS` - * permission. By default, prune will not remove users with roles. You can optionally include specific roles in your prune by providing the - * include_roles parameter. Any inactive user that has a subset of the provided role(s) will be counted in the prune and users with additional - * roles will not. - * - * @see dpp::cluster::guild_get_prune_counts - * @see https://discord.com/developers/docs/resources/guild#get-guild-prune-count - * @param guild_id Guild ID to count for pruning - * @param pruneinfo Pruning info - * @return prune returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -prune guild_get_prune_counts_sync(snowflake guild_id, const struct prune& pruneinfo); - -/** - * @brief Begin guild prune - * - * Begin a prune operation. Requires the `KICK_MEMBERS` permission. Returns a prune object indicating the number of members - * that were removed in the prune operation. For large guilds it's recommended to set the `compute_prune_count` option to false, forcing - * 'pruned' to 0. Fires multiple `Guild Member Remove` Gateway events. - * By default, prune will not remove users with roles. You can optionally include specific roles in your prune by providing the `include_roles` - * parameter. Any inactive user that has a subset of the provided role(s) will be included in the prune and users with additional roles will not. - * - * @see dpp::cluster::guild_begin_prune - * @see https://discord.com/developers/docs/resources/guild#begin-guild-prune - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to prune - * @param pruneinfo Pruning info - * @return prune returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -prune guild_begin_prune_sync(snowflake guild_id, const struct prune& pruneinfo); - -/** - * @brief Change current user nickname - * - * Modifies the nickname of the current user in a guild. - * Fires a `Guild Member Update` Gateway event. - * - * @deprecated Deprecated in favor of Modify Current Member. Will be replaced by dpp::cluster::guild_current_member_edit - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::guild_set_nickname - * @see https://discord.com/developers/docs/resources/guild#modify-current-user-nick - * @param guild_id Guild ID to change nickname on - * @param nickname New nickname, or empty string to clear nickname - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_set_nickname_sync(snowflake guild_id, const std::string &nickname); - -/** - * @brief Sync guild integration - * - * @see dpp::cluster::guild_sync_integration - * @see https://discord.com/developers/docs/resources/guild#sync-guild-integration - * @param guild_id Guild ID to sync integration on - * @param integration_id Integration ID to synchronise - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_sync_integration_sync(snowflake guild_id, snowflake integration_id); - -/** - * @brief Add guild member. Needs a specific oauth2 scope, from which you get the access_token. - * - * Adds a user to the guild, provided you have a valid oauth2 access token for the user with the guilds.join scope. - * Returns the guild_member, which is defaulted if the user is already a member of the guild. Fires a `Guild Member Add` Gateway event. - * - * For guilds with Membership Screening enabled, this endpoint will default to adding new members as pending in the guild member object. - * Members that are pending will have to complete membership screening before they become full members that can talk. - * - * @note All parameters to this endpoint except for access_token are optional. - * The bot must be a member of the guild with `CREATE_INSTANT_INVITE` permission. - * @see dpp::cluster::guild_add_member - * @see https://discord.com/developers/docs/resources/guild#add-guild-member - * @param gm Guild member to add - * @param access_token Access token from Oauth2 scope - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_add_member_sync(const guild_member& gm, const std::string &access_token); - -/** - * @brief Edit the properties of an existing guild member - * - * Modify attributes of a guild member. Returns the guild_member. Fires a `Guild Member Update` Gateway event. - * To remove a timeout, set the `communication_disabled_until` to a non-zero time in the past, e.g. 1. - * When moving members to channels, the API user must have permissions to both connect to the channel and have the `MOVE_MEMBERS` permission. - * For moving and disconnecting users from voice, use dpp::cluster::guild_member_move. - * @see dpp::cluster::guild_edit_member - * @see https://discord.com/developers/docs/resources/guild#modify-guild-member - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param gm Guild member to edit - * @return guild_member returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -guild_member guild_edit_member_sync(const guild_member& gm); - -/** - * @brief Get a guild member - * @see dpp::cluster::guild_get_member - * @see https://discord.com/developers/docs/resources/guild#get-guild-member - * @param guild_id Guild ID to get member for - * @param user_id User ID of member to get - * @return guild_member returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -guild_member guild_get_member_sync(snowflake guild_id, snowflake user_id); - -/** - * @brief Get all guild members - * - * @note This endpoint is restricted according to whether the `GUILD_MEMBERS` Privileged Intent is enabled for your application. - * @see dpp::cluster::guild_get_members - * @see https://discord.com/developers/docs/resources/guild#get-guild-members - * @param guild_id Guild ID to get all members for - * @param limit max number of members to return (1-1000) - * @param after the highest user id in the previous page - * @return guild_member_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -guild_member_map guild_get_members_sync(snowflake guild_id, uint16_t limit, snowflake after); - -/** - * @brief Add role to guild member - * - * Adds a role to a guild member. Requires the `MANAGE_ROLES` permission. - * Fires a `Guild Member Update` Gateway event. - * @see dpp::cluster::guild_member_add_role - * @see https://discord.com/developers/docs/resources/guild#add-guild-member-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to add a role to - * @param user_id User ID to add role to - * @param role_id Role ID to add to the user - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_member_add_role_sync(snowflake guild_id, snowflake user_id, snowflake role_id); - -/** - * @brief Remove (kick) a guild member - * - * Remove a member from a guild. Requires `KICK_MEMBERS` permission. - * Fires a `Guild Member Remove` Gateway event. - * @see dpp::cluster::guild_member_delete - * @see https://discord.com/developers/docs/resources/guild#remove-guild-member - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @deprecated Replaced by dpp::cluster::guild_member_kick - * @param guild_id Guild ID to kick member from - * @param user_id User ID to kick - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_member_delete_sync(snowflake guild_id, snowflake user_id); - -/** - * @brief Remove (kick) a guild member - * - * Remove a member from a guild. Requires `KICK_MEMBERS` permission. - * Fires a `Guild Member Remove` Gateway event. - * @see dpp::cluster::guild_member_kick - * @see https://discord.com/developers/docs/resources/guild#remove-guild-member - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to kick member from - * @param user_id User ID to kick - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_member_kick_sync(snowflake guild_id, snowflake user_id); - -/** - * @brief Set the timeout of a guild member - * - * Fires a `Guild Member Update` Gateway event. - * @see dpp::cluster::guild_member_timeout - * @see https://discord.com/developers/docs/resources/guild#modify-guild-member - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to timeout the member in - * @param user_id User ID to set the timeout for - * @param communication_disabled_until The timestamp when the user's timeout will expire (up to 28 days in the future). Set to 0 to remove the timeout - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_member_timeout_sync(snowflake guild_id, snowflake user_id, time_t communication_disabled_until); - -/** - * @brief Remove role from guild member - * - * Removes a role from a guild member. Requires the `MANAGE_ROLES` permission. - * Fires a `Guild Member Update` Gateway event. - * @see dpp::cluster::guild_member_delete_role - * @see https://discord.com/developers/docs/resources/guild#remove-guild-member-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to remove role from user on - * @param user_id User ID to remove role from - * @param role_id Role to remove - * @return confirmation returned object on completion - * @deprecated Use dpp::cluster::guild_member_remove_role instead - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_member_delete_role_sync(snowflake guild_id, snowflake user_id, snowflake role_id); - -/** - * @brief Remove role from guild member - * - * Removes a role from a guild member. Requires the `MANAGE_ROLES` permission. - * Fires a `Guild Member Update` Gateway event. - * @see dpp::cluster::guild_member_remove_role - * @see https://discord.com/developers/docs/resources/guild#remove-guild-member-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to remove role from user on - * @param user_id User ID to remove role from - * @param role_id Role to remove - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_member_remove_role_sync(snowflake guild_id, snowflake user_id, snowflake role_id); - -/** - * @brief Moves the guild member to a other voice channel, if member is connected to one. - * Set the `channel_id` to `0` to disconnect the user. - * - * Fires a `Guild Member Update` Gateway event. - * @note When moving members to channels, the API user __must__ have permissions to both connect to the channel and have the `MOVE_MEMBERS` permission. - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::guild_member_move - * @see https://discord.com/developers/docs/resources/guild#modify-guild-member - * @param channel_id Id of the channel to which the user is used. Set to `0` to disconnect the user - * @param guild_id Guild id to which the user is connected - * @param user_id User id, who should be moved - * @return guild_member returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -guild_member guild_member_move_sync(const snowflake channel_id, const snowflake guild_id, const snowflake user_id); - -/** - * @brief Search for guild members based on whether their username or nickname starts with the given string. - * - * @note This endpoint is restricted according to whether the `GUILD_MEMBERS` Privileged Intent is enabled for your application. - * @see dpp::cluster::guild_search_members - * @see https://discord.com/developers/docs/resources/guild#search-guild-members - * @param guild_id Guild ID to search in - * @param query Query string to match username(s) and nickname(s) against - * @param limit max number of members to return (1-1000) - * @return guild_member_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -guild_member_map guild_search_members_sync(snowflake guild_id, const std::string& query, uint16_t limit); - -/** - * @brief Get guild invites - * - * Returns a list of invite objects (with invite metadata) for the guild. Requires the `MANAGE_GUILD` permission. - * - * @see dpp::cluster::guild_get_invites - * @see https://discord.com/developers/docs/resources/guild#get-guild-invites - * @param guild_id Guild ID to get invites for - * @return invite_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -invite_map guild_get_invites_sync(snowflake guild_id); - - -invite invite_delete_sync(const std::string &invitecode); - - -invite invite_get_sync(const std::string &invitecode); - -/** - * @brief Send a message to a channel. The callback function is called when the message has been sent - * - * @see dpp::cluster::message_create - * @see https://discord.com/developers/docs/resources/channel#create-message - * @param m Message to send - * @return message returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -message message_create_sync(const struct message &m); - -/** - * @brief Crosspost a message. The callback function is called when the message has been sent - * - * @see dpp::cluster::message_crosspost - * @see https://discord.com/developers/docs/resources/channel#crosspost-message - * @param message_id Message to crosspost - * @param channel_id Channel ID to crosspost from - * @return message returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -message message_crosspost_sync(snowflake message_id, snowflake channel_id); - -/** - * @brief Bulk delete messages from a channel. The callback function is called when the message has been edited - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @note If any message provided older than 2 weeks or any duplicate message ID, it will fail. - * - * @see dpp::cluster::message_delete_bulk - * @see https://discord.com/developers/docs/resources/channel#bulk-delete-messages - * @param message_ids List of message IDs to delete (at least 2 and at most 100 message IDs) - * @param channel_id Channel to delete from - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation message_delete_bulk_sync(const std::vector &message_ids, snowflake channel_id); - -/** - * @brief Delete a message from a channel. The callback function is called when the message has been edited - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see dpp::cluster::message_delete - * @see https://discord.com/developers/docs/resources/channel#delete-message - * @param message_id Message ID to delete - * @param channel_id Channel to delete from - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation message_delete_sync(snowflake message_id, snowflake channel_id); - -/** - * @brief Edit a message on a channel. The callback function is called when the message has been edited - * - * @see dpp::cluster::message_edit - * @see https://discord.com/developers/docs/resources/channel#edit-message - * @param m Message to edit - * @return message returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -message message_edit_sync(const struct message &m); - -/** - * @brief Get a message - * - * @see dpp::cluster::message_get - * @see https://discord.com/developers/docs/resources/channel#get-channel-message - * @param message_id Message ID - * @param channel_id Channel ID - * @return message returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -message message_get_sync(snowflake message_id, snowflake channel_id); - -/** - * @brief Pin a message - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::message_pin - * @see https://discord.com/developers/docs/resources/channel#pin-message - * @param channel_id Channel id to pin message on - * @param message_id Message id to pin message on - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation message_pin_sync(snowflake channel_id, snowflake message_id); - -/** - * @brief Get multiple messages. - * - * This function will attempt to fetch as many messages as possible using multiple API calls if needed. - * - * @see dpp::cluster::messages_get - * @see https://discord.com/developers/docs/resources/channel#get-channel-messages - * @param channel_id Channel ID to retrieve messages for - * @param around Messages should be retrieved around this ID if this is set to non-zero - * @param before Messages before this ID should be retrieved if this is set to non-zero - * @param after Messages after this ID should be retrieved if this is set to non-zero - * @param limit This number of messages maximum should be returned, up to a maximum of 100. - * @return message_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -message_map messages_get_sync(snowflake channel_id, snowflake around, snowflake before, snowflake after, uint64_t limit); - -/** - * @brief Unpin a message - * @see dpp::cluster::message_unpin - * @see https://discord.com/developers/docs/resources/channel#unpin-message - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param channel_id Channel id to unpin message on - * @param message_id Message id to unpin message on - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation message_unpin_sync(snowflake channel_id, snowflake message_id); - -/** - * @brief Get a channel's pins - * @see dpp::cluster::channel_pins_get - * @see https://discord.com/developers/docs/resources/channel#get-pinned-messages - * @param channel_id Channel ID to get pins for - * @return message_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -message_map channel_pins_get_sync(snowflake channel_id); - -/** - * @brief Create a role on a guild - * - * Create a new role for the guild. Requires the `MANAGE_ROLES` permission. Returns the new role object on success. - * Fires a `Guild Role Create` Gateway event. - * - * @see dpp::cluster::role_create - * @see https://discord.com/developers/docs/resources/guild#create-guild-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param r Role to create (guild ID is encapsulated in the role object) - * @return role returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -role role_create_sync(const class role &r); - -/** - * @brief Delete a role - * - * Requires the `MANAGE_ROLES` permission. Fires a `Guild Role Delete` Gateway event. - * - * @see dpp::cluster::role_delete - * @see https://discord.com/developers/docs/resources/guild#delete-guild-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to delete the role on - * @param role_id Role ID to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation role_delete_sync(snowflake guild_id, snowflake role_id); - -/** - * @brief Edit a role on a guild - * - * Requires the `MANAGE_ROLES` permission. Returns the updated role on success. Fires a `Guild Role Update` Gateway event. - * - * @see dpp::cluster::role_edit - * @see https://discord.com/developers/docs/resources/guild#modify-guild-role - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param r Role to edit - * @return role returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -role role_edit_sync(const class role &r); - -/** - * @brief Edit multiple role's position in a guild. Returns a list of all roles of the guild on success. - * - * Modify the positions of a set of role objects for the guild. Requires the `MANAGE_ROLES` permission. - * Fires multiple `Guild Role Update` Gateway events. - * - * @see dpp::cluster::roles_edit_position - * @see https://discord.com/developers/docs/resources/guild#modify-guild-role-positions - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @param guild_id Guild ID to change the roles position on - * @param roles Vector of roles to change the positions of - * @return role_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -role_map roles_edit_position_sync(snowflake guild_id, const std::vector &roles); - -/** - * @brief Get a role for a guild - * - * @see dpp::cluster::roles_get - * @see https://discord.com/developers/docs/resources/guild#get-guild-roles - * @param guild_id Guild ID to get role for - * @return role_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -role_map roles_get_sync(snowflake guild_id); - -/** - * @brief Get user application role connection - * - * @see dpp::cluster::user_application_role_connection_get - * @see https://discord.com/developers/docs/resources/user#get-user-application-role-connection - * @param application_id The application ID - * @return application_role_connection returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -application_role_connection user_application_role_connection_get_sync(snowflake application_id); - -/** - * @brief Update user application role connection - * - * @see dpp::cluster::user_application_role_connection_update - * @see https://discord.com/developers/docs/resources/user#update-user-application-role-connection - * @param application_id The application ID - * @param connection The application role connection to update - * @return application_role_connection returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -application_role_connection user_application_role_connection_update_sync(snowflake application_id, const application_role_connection &connection); - -/** - * @brief Get all scheduled events for a guild - * @see dpp::cluster::guild_events_get - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild - * @param guild_id Guild to get events for - * @return scheduled_event_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -scheduled_event_map guild_events_get_sync(snowflake guild_id); - -/** - * @brief Create a scheduled event on a guild - * - * @see dpp::cluster::guild_event_create - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event - * @param event Event to create (guild ID must be populated) - * @return scheduled_event returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -scheduled_event guild_event_create_sync(const scheduled_event& event); - -/** - * @brief Delete a scheduled event from a guild - * - * @see dpp::cluster::guild_event_delete - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#delete-guild-scheduled-event - * @param event_id Event ID to delete - * @param guild_id Guild ID of event to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_event_delete_sync(snowflake event_id, snowflake guild_id); - -/** - * @brief Edit/modify a scheduled event on a guild - * - * @see dpp::cluster::guild_event_edit - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event - * @param event Event to create (event ID and guild ID must be populated) - * @return scheduled_event returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -scheduled_event guild_event_edit_sync(const scheduled_event& event); - -/** - * @brief Get a scheduled event for a guild - * - * @see dpp::cluster::guild_event_get - * @see https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event - * @param guild_id Guild to get event for - * @param event_id Event ID to get - * @return scheduled_event returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -scheduled_event guild_event_get_sync(snowflake guild_id, snowflake event_id); - - -stage_instance stage_instance_create_sync(const stage_instance& si); - -/** - * @brief Get the stage instance associated with the channel id, if it exists. - * @see dpp::cluster::stage_instance_get - * @see https://discord.com/developers/docs/resources/stage-instance#get-stage-instance - * @param channel_id ID of the associated channel - * @return stage_instance returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -stage_instance stage_instance_get_sync(const snowflake channel_id); - - -stage_instance stage_instance_edit_sync(const stage_instance& si); - -/** - * @brief Delete a stage instance. - * @see dpp::cluster::stage_instance_delete - * @see https://discord.com/developers/docs/resources/stage-instance#delete-stage-instance - * @param channel_id ID of the associated channel - * @return confirmation returned object on completion - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation stage_instance_delete_sync(const snowflake channel_id); - -/** - * @brief Create a sticker in a guild - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::guild_sticker_create - * @see https://discord.com/developers/docs/resources/sticker#create-guild-sticker - * @param s Sticker to create. Must have its guild ID set. - * @return sticker returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -sticker guild_sticker_create_sync(sticker &s); - -/** - * @brief Delete a sticker from a guild - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::guild_sticker_delete - * @see https://discord.com/developers/docs/resources/sticker#delete-guild-sticker - * @param sticker_id sticker ID to delete - * @param guild_id guild ID to delete from - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_sticker_delete_sync(snowflake sticker_id, snowflake guild_id); - -/** - * @brief Get a guild sticker - * @see dpp::cluster::guild_sticker_get - * @see https://discord.com/developers/docs/resources/sticker#get-guild-sticker - * @param id Id of sticker to get. - * @param guild_id Guild ID of the guild where the sticker is - * @return sticker returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -sticker guild_sticker_get_sync(snowflake id, snowflake guild_id); - -/** - * @brief Modify a sticker in a guild - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::guild_sticker_modify - * @see https://discord.com/developers/docs/resources/sticker#modify-guild-sticker - * @param s Sticker to modify. Must have its guild ID and sticker ID set. - * @return sticker returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -sticker guild_sticker_modify_sync(sticker &s); - -/** - * @brief Get all guild stickers - * @see dpp::cluster::guild_stickers_get - * @see https://discord.com/developers/docs/resources/sticker#get-guild-stickers - * @param guild_id Guild ID of the guild where the sticker is - * @return sticker_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -sticker_map guild_stickers_get_sync(snowflake guild_id); - -/** - * @brief Get a nitro sticker - * @see dpp::cluster::nitro_sticker_get - * @see https://discord.com/developers/docs/resources/sticker#get-sticker - * @param id Id of sticker to get. - * @return sticker returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -sticker nitro_sticker_get_sync(snowflake id); - -/** - * @brief Get sticker packs - * @see dpp::cluster::sticker_packs_get - * @see https://discord.com/developers/docs/resources/sticker#list-nitro-sticker-packs - * @return sticker_pack_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -sticker_pack_map sticker_packs_get_sync(); - -/** - * @brief Create a new guild based on a template. - * @note This endpoint can be used only by bots in less than 10 guilds. - * @see dpp::cluster::guild_create_from_template - * @see https://discord.com/developers/docs/resources/guild-template#create-guild-from-guild-template - * @param code Template code to create guild from - * @param name Guild name to create - * @return guild returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -guild guild_create_from_template_sync(const std::string &code, const std::string &name); - -/** - * @brief Creates a template for the guild - * - * @see dpp::cluster::guild_template_create - * @see https://discord.com/developers/docs/resources/guild-template#create-guild-template - * @param guild_id Guild to create template from - * @param name Template name to create - * @param description Description of template to create - * @return dtemplate returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -dtemplate guild_template_create_sync(snowflake guild_id, const std::string &name, const std::string &description); - -/** - * @brief Deletes the template - * - * @see dpp::cluster::guild_template_delete - * @see https://discord.com/developers/docs/resources/guild-template#delete-guild-template - * @param guild_id Guild ID of template to delete - * @param code Template code to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation guild_template_delete_sync(snowflake guild_id, const std::string &code); - -/** - * @brief Modifies the template's metadata. - * - * @see dpp::cluster::guild_template_modify - * @see https://discord.com/developers/docs/resources/guild-template#modify-guild-template - * @param guild_id Guild ID of template to modify - * @param code Template code to modify - * @param name New name of template - * @param description New description of template - * @return dtemplate returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -dtemplate guild_template_modify_sync(snowflake guild_id, const std::string &code, const std::string &name, const std::string &description); - -/** - * @brief Get guild templates - * - * @see dpp::cluster::guild_templates_get - * @see https://discord.com/developers/docs/resources/guild-template#get-guild-templates - * @param guild_id Guild ID to get templates for - * @return dtemplate_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -dtemplate_map guild_templates_get_sync(snowflake guild_id); - -/** - * @brief Syncs the template to the guild's current state. - * - * @see dpp::cluster::guild_template_sync - * @see https://discord.com/developers/docs/resources/guild-template#sync-guild-template - * @param guild_id Guild to synchronise template for - * @param code Code of template to synchronise - * @return dtemplate returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -dtemplate guild_template_sync_sync(snowflake guild_id, const std::string &code); - -/** - * @brief Get a template - * @see dpp::cluster::template_get - * @see https://discord.com/developers/docs/resources/guild-template#get-guild-template - * @param code Template code - * @return dtemplate returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -dtemplate template_get_sync(const std::string &code); - -/** - * @brief Join a thread - * @see dpp::cluster::current_user_join_thread - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread ID to join - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation current_user_join_thread_sync(snowflake thread_id); - -/** - * @brief Leave a thread - * @see dpp::cluster::current_user_leave_thread - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread ID to leave - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation current_user_leave_thread_sync(snowflake thread_id); - -/** - * @brief Get active threads in a guild (Sorted by ID in descending order) - * @see dpp::cluster::threads_get_active - * @see https://discord.com/developers/docs/topics/threads - * @param guild_id Guild to get active threads for - * @return thread_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -thread_map threads_get_active_sync(snowflake guild_id); - -/** - * @brief Get private archived threads in a channel which current user has joined (Sorted by ID in descending order) - * @see dpp::cluster::threads_get_joined_private_archived - * @see https://discord.com/developers/docs/topics/threads - * @param channel_id Channel to get public archived threads for - * @param before_id Get threads before this id - * @param limit Number of threads to get - * @return thread_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -thread_map threads_get_joined_private_archived_sync(snowflake channel_id, snowflake before_id, uint16_t limit); - -/** - * @brief Get private archived threads in a channel (Sorted by archive_timestamp in descending order) - * @see dpp::cluster::threads_get_private_archived - * @see https://discord.com/developers/docs/topics/threads - * @param channel_id Channel to get public archived threads for - * @param before_timestamp Get threads before this timestamp - * @param limit Number of threads to get - * @return thread_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -thread_map threads_get_private_archived_sync(snowflake channel_id, time_t before_timestamp, uint16_t limit); - -/** - * @brief Get public archived threads in a channel (Sorted by archive_timestamp in descending order) - * @see dpp::cluster::threads_get_public_archived - * @see https://discord.com/developers/docs/topics/threads - * @param channel_id Channel to get public archived threads for - * @param before_timestamp Get threads before this timestamp - * @param limit Number of threads to get - * @return thread_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -thread_map threads_get_public_archived_sync(snowflake channel_id, time_t before_timestamp, uint16_t limit); - -/** - * @brief Get a thread member - * @see dpp::cluster::thread_member_get - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread to get member for - * @param user_id ID of the user to get - * @return thread_member returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -thread_member thread_member_get_sync(const snowflake thread_id, const snowflake user_id); - -/** - * @brief Get members of a thread - * @see dpp::cluster::thread_members_get - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread to get members for - * @return thread_member_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -thread_member_map thread_members_get_sync(snowflake thread_id); - -/** - * @brief Create a thread in forum channel - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see dpp::cluster::thread_create_in_forum - * @see https://discord.com/developers/docs/resources/channel#start-thread-in-forum-channel - * @param thread_name Name of the forum thread - * @param channel_id Forum channel in which thread to create - * @param msg The message to start the thread with - * @param auto_archive_duration Duration to automatically archive the thread after recent activity - * @param rate_limit_per_user amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages, manage_thread, or manage_channel, are unaffected - * @param applied_tags List of IDs of forum tags (dpp::forum_tag) to apply to this thread - * @return thread returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -thread thread_create_in_forum_sync(const std::string& thread_name, snowflake channel_id, const message& msg, auto_archive_duration_t auto_archive_duration, uint16_t rate_limit_per_user, std::vector applied_tags = {}); - -/** - * @brief Create a thread - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * - * @see dpp::cluster::thread_create - * @see https://discord.com/developers/docs/resources/guild#create-guild-channel - * @param thread_name Name of the thread - * @param channel_id Channel in which thread to create - * @param auto_archive_duration Duration after which thread auto-archives. Can be set to - 60, 1440 (for boosted guilds can also be: 4320, 10080) - * @param thread_type Type of thread - CHANNEL_PUBLIC_THREAD, CHANNEL_ANNOUNCEMENT_THREAD, CHANNEL_PRIVATE_THREAD - * @param invitable whether non-moderators can add other non-moderators to a thread; only available when creating a private thread - * @param rate_limit_per_user amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages, manage_thread, or manage_channel, are unaffected - * @return thread returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -thread thread_create_sync(const std::string& thread_name, snowflake channel_id, uint16_t auto_archive_duration, channel_type thread_type, bool invitable, uint16_t rate_limit_per_user); - -/** - * @brief Create a thread with a message (Discord: ID of a thread is same as message ID) - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::thread_create_with_message - * @see https://discord.com/developers/docs/topics/threads - * @param thread_name Name of the thread - * @param channel_id Channel in which thread to create - * @param message_id message to start thread with - * @param auto_archive_duration Duration after which thread auto-archives. Can be set to - 60, 1440 (for boosted guilds can also be: 4320, 10080) - * @param rate_limit_per_user amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages, manage_thread, or manage_channel, are unaffected - * @return thread returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -thread thread_create_with_message_sync(const std::string& thread_name, snowflake channel_id, snowflake message_id, uint16_t auto_archive_duration, uint16_t rate_limit_per_user); - -/** - * @brief Add a member to a thread - * @see dpp::cluster::thread_member_add - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread ID to add to - * @param user_id Member ID to add - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation thread_member_add_sync(snowflake thread_id, snowflake user_id); - -/** - * @brief Remove a member from a thread - * @see dpp::cluster::thread_member_remove - * @see https://discord.com/developers/docs/topics/threads - * @param thread_id Thread ID to remove from - * @param user_id Member ID to remove - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation thread_member_remove_sync(snowflake thread_id, snowflake user_id); - -/** - * @brief Edit current (bot) user - * - * Modifies the current member in a guild. Returns the updated guild_member object on success. - * Fires a `Guild Member Update` Gateway event. - * @see dpp::cluster::current_user_edit - * @see https://discord.com/developers/docs/resources/user#modify-current-user - * @param nickname Nickname to set - * @param image_blob Avatar data to upload (NOTE: Very heavily rate limited!) - * @param type Type of image for avatar. It can be one of `i_gif`, `i_jpg` or `i_png`. - * @return user returned object on completion - * @throw dpp::length_exception Image data is larger than the maximum size of 256 kilobytes - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -user current_user_edit_sync(const std::string &nickname, const std::string& image_blob = "", const image_type type = i_png); - -/** - * @brief Get current (bot) application - * - * @see dpp::cluster::current_application_get - * @see https://discord.com/developers/docs/topics/oauth2#get-current-bot-application-information - * @return application returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -application current_application_get_sync(); - -/** - * @brief Get current (bot) user - * - * @see dpp::cluster::current_user_get - * @see https://discord.com/developers/docs/resources/user#get-current-user - * @return user_identified returned object on completion - * @note The user_identified object is a subclass of dpp::user which contains further details if you have the oauth2 identify or email scopes. - * If you do not have these scopes, these fields are empty. You can safely convert a user_identified to user with `dynamic_cast`. - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -user_identified current_user_get_sync(); - -/** - * @brief Set the bot's voice state on a stage channel - * - * **Caveats** - * - * There are currently several caveats for this endpoint: - * - * - `channel_id` must currently point to a stage channel. - * - current user must already have joined `channel_id`. - * - You must have the `MUTE_MEMBERS` permission to unsuppress yourself. You can always suppress yourself. - * - You must have the `REQUEST_TO_SPEAK` permission to request to speak. You can always clear your own request to speak. - * - You are able to set `request_to_speak_timestamp` to any present or future time. - * - * @see dpp::cluster::current_user_set_voice_state - * @see https://discord.com/developers/docs/resources/guild#modify-current-user-voice-state - * @param guild_id Guild to set voice state on - * @param channel_id Stage channel to set voice state on - * @return confirmation returned object on completion - * @param suppress True if the user's audio should be suppressed, false if it should not - * @param request_to_speak_timestamp The time at which we requested to speak, or 0 to clear the request. The time set here must be the current time or in the future. - * @throw std::logic_exception You attempted to set a request_to_speak_timestamp in the past which is not the value of 0. - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation current_user_set_voice_state_sync(snowflake guild_id, snowflake channel_id, bool suppress = false, time_t request_to_speak_timestamp = 0); - -/** - * @brief Set a user's voice state on a stage channel - * - * **Caveats** - * - * There are currently several caveats for this endpoint: - * - * - `channel_id` must currently point to a stage channel. - * - User must already have joined `channel_id`. - * - You must have the `MUTE_MEMBERS` permission. (Since suppression is the only thing that is available currently) - * - When unsuppressed, non-bot users will have their `request_to_speak_timestamp` set to the current time. Bot users will not. - * - When suppressed, the user will have their `request_to_speak_timestamp` removed. - * - * @see dpp::cluster::user_set_voice_state - * @see https://discord.com/developers/docs/resources/guild#modify-user-voice-state - * @param user_id The user to set the voice state of - * @param guild_id Guild to set voice state on - * @param channel_id Stage channel to set voice state on - * @return confirmation returned object on completion - * @param suppress True if the user's audio should be suppressed, false if it should not - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation user_set_voice_state_sync(snowflake user_id, snowflake guild_id, snowflake channel_id, bool suppress = false); - -/** - * @brief Get current user's connections (linked accounts, e.g. steam, xbox). - * This call requires the oauth2 `connections` scope and cannot be executed - * against a bot token. - * @see dpp::cluster::current_user_connections_get - * @see https://discord.com/developers/docs/resources/user#get-user-connections - * @return connection_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -connection_map current_user_connections_get_sync(); - -/** - * @brief Get current (bot) user guilds - * @see dpp::cluster::current_user_get_guilds - * @see https://discord.com/developers/docs/resources/user#get-current-user-guilds - * @return guild_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -guild_map current_user_get_guilds_sync(); - -/** - * @brief Leave a guild - * @see dpp::cluster::current_user_leave_guild - * @see https://discord.com/developers/docs/resources/user#leave-guild - * @param guild_id Guild ID to leave - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation current_user_leave_guild_sync(snowflake guild_id); - -/** - * @brief Get a user by id, without using the cache - * - * @see dpp::cluster::user_get - * @see https://discord.com/developers/docs/resources/user#get-user - * @param user_id User ID to retrieve - * @return user_identified returned object on completion - * @note The user_identified object is a subclass of dpp::user which contains further details if you have the oauth2 identify or email scopes. - * If you do not have these scopes, these fields are empty. You can safely convert a user_identified to user with `dynamic_cast`. - * @note unless you want something special from `dpp::user_identified` or you've turned off caching, you have no need to call this. - * Call `dpp::find_user` instead that looks up the user in the cache rather than a REST call. - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -user_identified user_get_sync(snowflake user_id); - -/** - * @brief Get a user by id, checking in the cache first - * - * @see dpp::cluster::user_get_cached - * @see https://discord.com/developers/docs/resources/user#get-user - * @param user_id User ID to retrieve - * @return user_identified returned object on completion - * @note The user_identified object is a subclass of dpp::user which contains further details if you have the oauth2 identify or email scopes. - * If you do not have these scopes, these fields are empty. You can safely convert a user_identified to user with `dynamic_cast`. - * @note If the user is found in the cache, special values set in `dpp::user_identified` will be undefined. This call should be used - * where you want to for example resolve a user who may no longer be in the bot's guilds, for something like a ban log message. - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -user_identified user_get_cached_sync(snowflake user_id); - -/** - * @brief Get all voice regions - * @see dpp::cluster::get_voice_regions - * @see https://discord.com/developers/docs/resources/voice#list-voice-regions - * @return voiceregion_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -voiceregion_map get_voice_regions_sync(); - -/** - * @brief Get guild voice regions. - * - * Voice regions per guild are somewhat deprecated in preference of per-channel voice regions. - * Returns a list of voice region objects for the guild. Unlike the similar /voice route, this returns VIP servers when - * the guild is VIP-enabled. - * - * @see dpp::cluster::guild_get_voice_regions - * @see https://discord.com/developers/docs/resources/guild#get-guild-voice-regions - * @param guild_id Guild ID to get voice regions for - * @return voiceregion_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -voiceregion_map guild_get_voice_regions_sync(snowflake guild_id); - -/** - * @brief Create a webhook - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::create_webhook - * @see https://discord.com/developers/docs/resources/webhook#create-webhook - * @param w Webhook to create - * @return webhook returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -webhook create_webhook_sync(const class webhook &w); - -/** - * @brief Delete a webhook - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::delete_webhook - * @see https://discord.com/developers/docs/resources/webhook#delete-webhook - * @param webhook_id Webhook ID to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation delete_webhook_sync(snowflake webhook_id); - -/** - * @brief Delete webhook message - * - * @see dpp::cluster::delete_webhook_message - * @see https://discord.com/developers/docs/resources/webhook#delete-webhook-message - * @param wh Webhook to delete message for - * @param message_id Message ID to delete - * @param thread_id ID of the thread the message is in - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation delete_webhook_message_sync(const class webhook &wh, snowflake message_id, snowflake thread_id = 0); - -/** - * @brief Delete webhook with token - * @see dpp::cluster::delete_webhook_with_token - * @see https://discord.com/developers/docs/resources/webhook#delete-webhook-with-token - * @param webhook_id Webhook ID to delete - * @param token Token of webhook to delete - * @return confirmation returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -confirmation delete_webhook_with_token_sync(snowflake webhook_id, const std::string &token); - -/** - * @brief Edit webhook - * @note This method supports audit log reasons set by the cluster::set_audit_reason() method. - * @see dpp::cluster::edit_webhook - * @see https://discord.com/developers/docs/resources/webhook#modify-webhook - * @param wh Webhook to edit - * @return webhook returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -webhook edit_webhook_sync(const class webhook& wh); - -/** - * @brief Edit webhook message - * - * When the content field is edited, the mentions array in the message object will be reconstructed from scratch based on - * the new content. The allowed_mentions field of the edit request controls how this happens. If there is no explicit - * allowed_mentions in the edit request, the content will be parsed with default allowances, that is, without regard to - * whether or not an allowed_mentions was present in the request that originally created the message. - * - * @see dpp::cluster::edit_webhook_message - * @see https://discord.com/developers/docs/resources/webhook#edit-webhook-message - * @note the attachments array must contain all attachments that should be present after edit, including retained and new attachments provided in the request body. - * @param wh Webhook to edit message for - * @param m New message - * @param thread_id ID of the thread the message is in - * @return message returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -message edit_webhook_message_sync(const class webhook &wh, const struct message &m, snowflake thread_id = 0); - -/** - * @brief Edit webhook with token (token is encapsulated in the webhook object) - * @see dpp::cluster::edit_webhook_with_token - * @see https://discord.com/developers/docs/resources/webhook#modify-webhook-with-token - * @param wh Webhook to edit (should include token) - * @return webhook returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -webhook edit_webhook_with_token_sync(const class webhook& wh); - -/** - * @brief Execute webhook - * - * @see dpp::cluster::execute_webhook - * @see https://discord.com/developers/docs/resources/webhook#execute-webhook - * @param wh Webhook to execute - * @param m Message to send - * @param wait waits for server confirmation of message send before response, and returns the created message body - * @param thread_id Send a message to the specified thread within a webhook's channel. The thread will automatically be unarchived - * @param thread_name Name of thread to create (requires the webhook channel to be a forum channel) - * @return message returned object on completion - * @note If the webhook channel is a forum channel, you must provide either `thread_id` or `thread_name`. If `thread_id` is provided, the message will send in that thread. If `thread_name` is provided, a thread with that name will be created in the forum channel. - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -message execute_webhook_sync(const class webhook &wh, const struct message &m, bool wait = false, snowflake thread_id = 0, const std::string& thread_name = ""); - -/** - * @brief Get channel webhooks - * @see dpp::cluster::get_channel_webhooks - * @see https://discord.com/developers/docs/resources/webhook#get-guild-webhooks - * @param channel_id Channel ID to get webhooks for - * @return webhook_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -webhook_map get_channel_webhooks_sync(snowflake channel_id); - -/** - * @brief Get guild webhooks - * @see dpp::cluster::get_guild_webhooks - * @see https://discord.com/developers/docs/resources/webhook#get-guild-webhooks - * @param guild_id Guild ID to get webhooks for - * @return webhook_map returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -webhook_map get_guild_webhooks_sync(snowflake guild_id); - -/** - * @brief Get webhook - * @see dpp::cluster::get_webhook - * @see https://discord.com/developers/docs/resources/webhook#get-webhook - * @param webhook_id Webhook ID to get - * @return webhook returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -webhook get_webhook_sync(snowflake webhook_id); - -/** - * @brief Get webhook message - * - * @see dpp::cluster::get_webhook_message - * @see https://discord.com/developers/docs/resources/webhook#get-webhook-message - * @param wh Webhook to get the original message for - * @param message_id The message ID - * @param thread_id ID of the thread the message is in - * @return message returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -message get_webhook_message_sync(const class webhook &wh, snowflake message_id, snowflake thread_id = 0); - -/** - * @brief Get webhook using token - * @see dpp::cluster::get_webhook_with_token - * @see https://discord.com/developers/docs/resources/webhook#get-webhook-with-token - * @param webhook_id Webhook ID to retrieve - * @param token Token of webhook - * @return webhook returned object on completion - * \memberof dpp::cluster - * @throw dpp::rest_exception upon failure to execute REST function - * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. - * Avoid direct use of this function inside an event handler. - */ -webhook get_webhook_with_token_sync(snowflake webhook_id, const std::string &token); - - -/* End of auto-generated definitions */ diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/collector.h b/Source/ThirdParty/DPPLibrary/include/dpp/collector.h deleted file mode 100644 index a27d0a2..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/collector.h +++ /dev/null @@ -1,435 +0,0 @@ -/* - * Discord erlpack - tidied up for D++, Craig Edwards 2021. - * - * MessagePack system dependencies modified for erlpack. - * - * Copyright (C) 2008-2010 FURUHASHI Sadayuki - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Collects objects from events during a specified time period. - * - * This template must be specialised. There are premade specialisations which you can use - * such as dpp::reaction_collector and dpp::message_collector. For these specialised instances - * all you need to do is derive a simple class from them which implements collector::completed(). - * - * A collector will run for the specified number of seconds, attaching itself to the - * given event. During this time any events pass through the collector and collector::filter(). - * This function can return a pointer to an object to allow a copy of that object to be stored - * to a vector, or it can return nullptr to do nothing with that object. For example a collector - * attached to on_message_create would receive an event with the type message_create_t, and from - * this may decide to extract the message_create_t::msg structure, returning a pointer to it, or - * instead may choose to return a nullptr. - * - * When either the predetermined timeout is reached, or the collector::cancel() method is called, - * or the collector is destroyed, the collector::completed() method is called, which will be - * passed a list of collected objects in the order they were collected. - * - * @tparam T parameter type of the event this collector will monitor - * @tparam C object type this collector will store - */ -template class collector -{ -protected: - /// Owning cluster - class cluster* owner; -private: - /// Timed listener - timed_listener, std::function>* tl; - /// stored list - std::vector stored; - /// Trigger flag - bool triggered; -public: - /** - * @brief Construct a new collector object. - * - * The timer for the collector begins immediately on construction of the object. - * - * @param cl Pointer to cluster which manages this collector - * @param duration Duration in seconds to run the collector for - * @param event Event to attach to, e.g. cluster::on_message_create - */ - collector(class cluster* cl, uint64_t duration, event_router_t & event) : owner(cl), triggered(false) { - std::function f = [this](const T& event) { - const C* v = filter(event); - if (v) { - stored.push_back(*v); - } - }; - tl = new dpp::timed_listener, std::function>(cl, duration, event, f, [this](dpp::timer timer_handle) { - if (!triggered) { - triggered = true; - completed(stored); - } - }); - } - - /** - * @brief You must implement this function to receive the completed list of - * captured objects. - * @param list The list of captured objects in captured order - */ - virtual void completed(const std::vector& list) = 0; - - /** - * @brief Filter the list of elements. - * - * Every time an event is fired on the collector, this method wil be called - * to determine if we should add an object to the list or not. This function - * can then process the `element` value, extract the parts which are to be - * saved to a list (e.g. a dpp::message out of a dpp::message_create_t) and - * return it as the return value. Returning a value of nullptr causes no - * object to be stored. - * - * Here is an example of how to filter messages which have specific text in them. - * This should be used with the specialised type dpp::message_collector - * - * ```cpp - * virtual const dpp::message* filter(const dpp::message_create_t& m) { - * if (m.msg.content.find("something i want") != std::string::npos) { - * return &m.msg; - * } else { - * return nullptr; - * } - * } - * ``` - * - * @param element The event data to filter - * @return const C* Returned object or nullptr - */ - virtual const C* filter(const T& element) = 0; - - /** - * @brief Immediately cancels the collector. - * - * Use this if you have met the conditions for which you are collecting objects - * early, e.g. you were watching for a message containing 'yes' or 'no' and have - * received it before the time is up. - * - * @note Causes calling of the completed() method if it has not yet been called. - */ - virtual void cancel() { - delete tl; - tl = nullptr; - } - - /** - * @brief Destroy the collector object. - * @note Causes calling of the completed() method if it has not yet been called. - */ - virtual ~collector() { - delete tl; - } -}; - -/** - * @brief Represents a reaction. - * Can be filled for use in a collector - */ -class collected_reaction : public managed { -public: - /// Reacting user - user react_user; - /// Reacting guild - guild* react_guild{}; - /// Reacting guild member - guild_member react_member; - /// Reacting channel - channel* react_channel{}; - /// Reacted emoji - emoji react_emoji; -}; - -/** - * @brief Template type for base class of channel collector - */ -typedef dpp::collector channel_collector_t; - -/** - * @brief Template type for base class of thread collector - */ -typedef dpp::collector thread_collector_t; - -/** - * @brief Template type for base class of role collector - */ -typedef dpp::collector role_collector_t; - -/** - * @brief Template type for base class of scheduled event collector - */ -typedef dpp::collector scheduled_event_collector_t; - -/** - * @brief Template type for base class of message collector - */ -typedef dpp::collector message_collector_t; - -/** - * @brief Template type for base class of message reaction collector - */ -typedef dpp::collector reaction_collector_t; - -/** - * @brief Message collector. - * Collects messages during a set timeframe and returns them in a list via the completed() method. - */ -class message_collector : public message_collector_t { -public: - /** - * @brief Construct a new message collector object - * - * @param cl cluster to associate the collector with - * @param duration Duration of time to run the collector for in seconds - */ - message_collector(cluster* cl, uint64_t duration) : message_collector_t::collector(cl, duration, cl->on_message_create) { } - - /** - * @brief Return the completed collection - * - * @param list items collected during the timeframe specified - */ - virtual void completed(const std::vector& list) = 0; - - /** - * @brief Select and filter the items which are to appear in the list - * This is called every time a new event is fired, to filter the event and determine which - * of the items is sent to the list. Returning nullptr excludes the item from the list. - * - * @param element element to filter - * @return Returned item to add to the list, or nullptr to skip adding this element - */ - virtual const dpp::message* filter(const dpp::message_create_t& element) { return &element.msg; } - - /** - * @brief Destroy the message collector object - */ - virtual ~message_collector() = default; -}; - -/** - * @brief Reaction collector. - * Collects message reactions during a set timeframe and returns them in a list via the completed() method. - */ -class reaction_collector : public reaction_collector_t { - snowflake message_id; - collected_reaction react; -public: - /** - * @brief Construct a new reaction collector object - * - * @param cl cluster to associate the collector with - * @param duration Duration of time to run the collector for in seconds - * @param msg_id Optional message ID. If specified, only collects reactions for the given message - */ - reaction_collector(cluster* cl, uint64_t duration, snowflake msg_id = 0) : reaction_collector_t::collector(cl, duration, cl->on_message_reaction_add), message_id(msg_id) { } - - /** - * @brief Return the completed collection - * - * @param list items collected during the timeframe specified - */ - virtual void completed(const std::vector& list) = 0; - - /** - * @brief Select and filter the items which are to appear in the list - * This is called every time a new event is fired, to filter the event and determine which - * of the items is sent to the list. Returning nullptr excludes the item from the list. - * - * @param element element to filter - * @return Returned item to add to the list, or nullptr to skip adding this element - */ - virtual const dpp::collected_reaction* filter(const dpp::message_reaction_add_t& element) { - /* Capture reactions for given message ID only */ - if (message_id.empty() || element.message_id == message_id) { - react.id = element.message_id; - react.react_user = element.reacting_user; - react.react_guild = element.reacting_guild; - react.react_member = element.reacting_member; - react.react_channel = element.reacting_channel; - react.react_emoji = element.reacting_emoji; - return &react; - } else { - return nullptr; - } - } - - /** - * @brief Destroy the reaction collector object - */ - virtual ~reaction_collector() = default; -}; - -/** - * @brief Channel collector. - * Collects channels during a set timeframe and returns them in a list via the completed() method. - */ -class channel_collector : public channel_collector_t { -public: - /** - * @brief Construct a new channel collector object - * - * @param cl cluster to associate the collector with - * @param duration Duration of time to run the collector for in seconds - */ - channel_collector(cluster* cl, uint64_t duration) : channel_collector_t::collector(cl, duration, cl->on_channel_create) { } - - /** - * @brief Return the completed collection - * - * @param list items collected during the timeframe specified - */ - virtual void completed(const std::vector& list) = 0; - - /** - * @brief Select and filter the items which are to appear in the list - * This is called every time a new event is fired, to filter the event and determine which - * of the items is sent to the list. Returning nullptr excludes the item from the list. - * - * @param element element to filter - * @return Returned item to add to the list, or nullptr to skip adding this element - */ - virtual const dpp::channel* filter(const dpp::channel_create_t& element) { return element.created; } - - /** - * @brief Destroy the channel collector object - */ - virtual ~channel_collector() = default; -}; - -/** - * @brief Thread collector. - * Collects threads during a set timeframe and returns them in a list via the completed() method. - */ -class thread_collector : public thread_collector_t { -public: - /** - * @brief Construct a new thread collector object - * - * @param cl cluster to associate the collector with - * @param duration Duration of time to run the collector for in seconds - */ - thread_collector(cluster* cl, uint64_t duration) : thread_collector_t::collector(cl, duration, cl->on_thread_create) { } - - /** - * @brief Return the completed collection - * - * @param list items collected during the timeframe specified - */ - virtual void completed(const std::vector& list) = 0; - - /** - * @brief Select and filter the items which are to appear in the list - * This is called every time a new event is fired, to filter the event and determine which - * of the items is sent to the list. Returning nullptr excludes the item from the list. - * - * @param element element to filter - * @return Returned item to add to the list, or nullptr to skip adding this element - */ - virtual const dpp::thread* filter(const dpp::thread_create_t& element) { return &element.created; } - - /** - * @brief Destroy the thread collector object - */ - virtual ~thread_collector() = default; -}; - -/** - * @brief Role collector. - * Collects guild roles during a set timeframe and returns them in a list via the completed() method. - */ -class role_collector : public role_collector_t { -public: - /** - * @brief Construct a new role collector object - * - * @param cl cluster to associate the collector with - * @param duration Duration of time to run the collector for in seconds - */ - role_collector(cluster* cl, uint64_t duration) : role_collector_t::collector(cl, duration, cl->on_guild_role_create) { } - - /** - * @brief Return the completed collection - * - * @param list items collected during the timeframe specified - */ - virtual void completed(const std::vector& list) = 0; - - /** - * @brief Select and filter the items which are to appear in the list - * This is called every time a new event is fired, to filter the event and determine which - * of the items is sent to the list. Returning nullptr excludes the item from the list. - * - * @param element element to filter - * @return Returned item to add to the list, or nullptr to skip adding this element - */ - virtual const dpp::role* filter(const dpp::guild_role_create_t& element) { return element.created; } - - /** - * @brief Destroy the role collector object - */ - virtual ~role_collector() = default; -}; - -/** - * @brief Scheduled event collector. - * Collects messages during a set timeframe and returns them in a list via the completed() method. - */ -class scheduled_event_collector : public scheduled_event_collector_t { -public: - /** - * @brief Construct a new scheduled event collector object - * - * @param cl cluster to associate the collector with - * @param duration Duration of time to run the collector for in seconds - */ - scheduled_event_collector(cluster* cl, uint64_t duration) : scheduled_event_collector_t::collector(cl, duration, cl->on_guild_scheduled_event_create) { } - - /** - * @brief Return the completed collection - * - * @param list items collected during the timeframe specified - */ - virtual void completed(const std::vector& list) = 0; - - /** - * @brief Select and filter the items which are to appear in the list - * This is called every time a new event is fired, to filter the event and determine which - * of the items is sent to the list. Returning nullptr excludes the item from the list. - * - * @param element element to filter - * @return Returned item to add to the list, or nullptr to skip adding this element - */ - virtual const dpp::scheduled_event* filter(const dpp::guild_scheduled_event_create_t& element) { return &element.created; } - - /** - * @brief Destroy the scheduled event collector object - */ - virtual ~scheduled_event_collector() = default; -}; - -}; \ No newline at end of file diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/colors.h b/Source/ThirdParty/DPPLibrary/include/dpp/colors.h deleted file mode 100644 index 664a11c..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/colors.h +++ /dev/null @@ -1,80 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once - -#include - - /** - * @brief The main namespace for D++ functions. classes and types - */ -namespace dpp { - /** - * @brief predefined color constants - */ - namespace colors { - const uint32_t - white = 0xFFFFFF, - discord_white = 0xFFFFFE, - light_gray = 0xC0C0C0, - gray = 0x808080, - dark_gray = 0x404040, - black = 0x000000, - discord_black = 0x000001, - red = 0xFF0000, - pink = 0xFFAFAF, - orange = 0xFFC800, - yellow = 0xFFFF00, - green = 0x00FF00, - magenta = 0xFF00FF, - cyan = 0x00FFFF, - blue = 0x0000FF, - light_sea_green = 0x1ABC9C, - medium_sea_green = 0x2ECC71, - summer_sky = 0x3498DB, - deep_lilac = 0x9B59B6, - ruby = 0xE91E63, - moon_yellow = 0xF1C40F, - tahiti_gold = 0xE67E22, - cinnabar = 0xE74C3C, - submarine = 0x95A5A6, - blue_aquamarine = 0x607D8B, - deep_sea = 0x11806A, - sea_green = 0x1F8B4C, - endeavour = 0x206694, - vivid_violet = 0x71368A, - jazzberry_jam = 0xAD1457, - dark_goldenrod = 0xC27C0E, - rust = 0xA84300, - brown = 0x992D22, - gray_chateau = 0x979C9F, - bismark = 0x546E7A, - sti_blue = 0x0E4BEF, - wrx_blue = 0x00247D, - rallyart_crimson = 0xE60012, - lime = 0x00FF00, - forest_green = 0x228B22, - cadmium_green = 0x097969, - aquamarine = 0x7FFFD4, - blue_green = 0x088F8F, - raspberry = 0xE30B5C, - scarlet_red = 0xFF2400; - }; -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/commandhandler.h b/Source/ThirdParty/DPPLibrary/include/dpp/commandhandler.h deleted file mode 100644 index f9db425..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/commandhandler.h +++ /dev/null @@ -1,392 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief dpp::resolved_user contains both a dpp::guild_member and a dpp::user. - * The user can be used to obtain in-depth user details such as if they are nitro, - * and the guild member information to check their roles on a guild etc. - * The Discord API provides both if a parameter is a user ping, - * so we offer both in a combined structure. - */ -struct DPP_EXPORT resolved_user { - /** - * @brief Holds user information - */ - dpp::user user; - /** - * @brief Holds member information - */ - dpp::guild_member member; -}; - -/** - * @brief Represents a received parameter. - * We use variant so that multiple non-related types can be contained within. - */ -typedef std::variant command_parameter; - -/** - * @brief Parameter types when registering a command. - * We don't pass these in when triggering the command in the handler, because it is - * expected the developer added the command so they know what types to expect for each named - * parameter. - */ -enum parameter_type { - pt_string, //!< String value - pt_role, //!< Role object - pt_channel, //!< Channel object - pt_user, //!< User object - pt_integer, //!< 64 bit signed integer - pt_double, //!< double floating point - pt_boolean //!< boolean -}; - -/** - * @brief Details of a command parameter used in registration. - * Note that for non-slash commands optional parameters can only be at the end of - * the list of parameters. - */ -struct DPP_EXPORT param_info { - - /** - * @brief Type of parameter - */ - parameter_type type; - - /** - * @brief True if the parameter is optional. - * For non-slash commands optional parameters may only be on the end of the list. - */ - bool optional; - - /** - * @brief Description of command. Displayed only for slash commands - */ - std::string description; - - /** - * @brief Allowed multiple choice options. - * The key name is the string passed to the command handler - * and the key value is its description displayed to the user. - */ - std::map choices; - - /** - * @brief Construct a new param_info object - * - * @param t Type of parameter - * @param o True if parameter is optional - * @param description The parameter description - * @param opts The options for a multiple choice parameter - */ - param_info(parameter_type t, bool o, const std::string &description, const std::map &opts = {}); -}; - -/** - * @brief Parameter list used during registration. - * Note that use of vector/pair is important here to preserve parameter order, - * as opposed to unordered_map (which doesn't guarantee any order at all) and - * std::map, which reorders keys alphabetically. - */ -typedef std::vector> parameter_registration_t; - -/** - * @brief Parameter list for a called command. - * See dpp::parameter_registration_t for an explanation as to why vector is used. - */ -typedef std::vector> parameter_list_t; - -/** - * @brief Represents the sending source of a command. - * This is passed to any command handler and should be passed back to - * commandhandler::reply(), allowing the reply method to route any replies back - * to the origin, which may be a slash command or a message. Both require different - * response facilities but we want this to be transparent if you use the command - * handler class. - * @deprecated commandhandler and message commands are deprecated and dpp::slashcommand is encouraged as a replacement. - */ -struct DPP_EXPORT command_source { - /** - * @brief Sending guild id - */ - snowflake guild_id; - /** - * @brief Source channel id - */ - snowflake channel_id; - /** - * @brief Command ID of a slash command - */ - snowflake command_id; - /** - * @brief Token for sending a slash command reply - */ - std::string command_token; - /** - * @brief The user who issued the command - */ - user issuer; - - /** - * @brief Copy of the underlying message_create_t event, if it was a message create event - */ - std::optional message_event; - - /** - * @brief Copy of the underlying interaction_create_t event, if it was an interaction create event - */ - std::optional interaction_event; - - /** - * @brief Construct a command_source object from a message_create_t event - */ - command_source(const struct message_create_t& event); - - /** - * @brief Construct a command_source object from an interaction_create_t event - */ - command_source(const struct interaction_create_t& event); -}; - -/** - * @brief The function definition for a command handler. Expects a command name string, - * and a list of command parameters. - * @deprecated commandhandler and message commands are deprecated and dpp::slashcommand is encouraged as a replacement. - */ -typedef std::function command_handler; - -/** - * @brief Represents the details of a command added to the command handler class. - * @deprecated commandhandler and message commands are deprecated and dpp::slashcommand is encouraged as a replacement. - */ -struct DPP_EXPORT command_info_t { - /** - * @brief Function reference for the handler. This is std::function so it can represent - * a class member, a lambda or a raw C function pointer. - */ - command_handler func; - /** - * @brief Parameters requested for the command, with their types - */ - parameter_registration_t parameters; - /** - * @brief Guild ID the command exists on, or 0 to be present on all guilds - */ - snowflake guild_id; -}; - - -/** - * @brief The commandhandler class represents a group of commands, prefixed or slash commands with handling functions. - * - * It can automatically register slash commands, and handle routing of messages and interactions to separated command handler - * functions. - * @deprecated commandhandler and message commands are deprecated and dpp::slashcommand is encouraged as a replacement. - */ -class DPP_EXPORT commandhandler { -private: - /** - * @brief List of guild commands to bulk register - */ - std::map> bulk_registration_list_guild; - /** - * @brief List of global commands to bulk register - */ - std::vector bulk_registration_list_global; -public: - /** - * @brief Commands in the handler - */ - std::unordered_map commands; - - /** - * @brief Valid prefixes - */ - std::vector prefixes; - - /** - * @brief Set to true automatically if one of the prefixes added is "/" - */ - bool slash_commands_enabled; - - /** - * @brief Cluster we are attached to for issuing REST calls - */ - class cluster* owner; - - /** - * @brief Application ID - */ - snowflake app_id; - - /** - * @brief Interaction event handle - */ - event_handle interactions; - - /** - * @brief Message event handle - */ - event_handle messages; - - /** - * @brief Returns true if the string has a known prefix on the start. - * Modifies string to remove prefix if it returns true. - * - * @param str String to check and modify - * @return true string contained a prefix, prefix removed from string - * @return false string did not contain a prefix - */ - bool string_has_prefix(std::string &str); - -public: - - /** - * @brief Construct a new commandhandler object - * - * @param o Owning cluster to attach to - * @param auto_hook_events Set to true to automatically hook the on_slashcommand - * and on_message events. You should not need to set this to false unless you have a specific - * use case, as D++ supports multiple listeners to an event, so will allow the commandhandler - * to hook to your command events without disrupting other uses for the events you may have. - * @param application_id The application id of the bot. If not specified, the class will - * look within the cluster object and use cluster::me::id instead. - */ - commandhandler(class cluster* o, bool auto_hook_events = true, snowflake application_id = 0); - - /** - * @brief Destroy the commandhandler object - */ - ~commandhandler(); - - /** - * @brief Set the application id after construction - * - * @param o Owning cluster to attach to - */ - commandhandler& set_owner(class cluster* o); - - /** - * @brief Add a prefix to the command handler - * - * @param prefix Prefix to be handled by the command handler - * @return commandhandler& reference to self - */ - commandhandler& add_prefix(const std::string &prefix); - - /** - * @brief Add a command to the command handler - * - * @param command Command to be handled. - * Note that if any one of your prefixes is "/" this will attempt to register - * a global command using the API and you will receive notification of this command - * via an interaction event. - * @param handler Handler function - * @param parameters Parameters to use for the command - * @param description The description of the command, shown for slash commands - * @param guild_id The guild ID to restrict the command to. For slash commands causes registration of a guild command as opposed to a global command. - * @return commandhandler& reference to self - * @throw dpp::logic_exception if application ID cannot be determined - */ - commandhandler& add_command(const std::string &command, const parameter_registration_t ¶meters, command_handler handler, const std::string &description = "", snowflake guild_id = 0); - - /** - * @brief Register all slash commands with Discord - * This method must be called at least once if you are using the "/" prefix to mark the - * end of commands being added to the handler. Note that this uses bulk registration and will replace any - * existing slash commands. - * - * Note that if you have previously registered your commands and they have not changed, you do - * not need to call this again. Discord retains a cache of previously added commands. - * - * @return commandhandler& Reference to self for chaining method calls - */ - commandhandler& register_commands(); - - /** - * @brief Route a command from the on_message_create function. - * Call this method from within your on_message_create with the received - * dpp::message object if you have disabled automatic registration of events. - * - * @param event message create event to parse - */ - void route(const struct dpp::message_create_t& event); - - /** - * @brief Route a command from the on_slashcommand function. - * Call this method from your on_slashcommand with the received - * dpp::interaction_create_t object if you have disabled automatic registration of events. - * - * @param event command interaction event to parse - */ - void route(const struct slashcommand_t & event); - - /** - * @brief Reply to a command. - * You should use this method rather than cluster::message_create as - * the way you reply varies between slash commands and message commands. - * Note you should ALWAYS reply. Slash commands will emit an ugly error - * to the user if you do not emit some form of reply within 3 seconds. - * - * @param m message to reply with. - * @param source source of the command - * @param callback User function to execute when the api call completes. - */ - void reply(const dpp::message &m, command_source source, command_completion_event_t callback = utility::log_error()); - - /** - * @brief Reply to a command without a message, causing the discord client - * to display "Bot name is thinking...". - * The "thinking" message will persist for a maximum of 15 minutes. - * This counts as a reply for a slash command. Slash commands will emit an - * ugly error to the user if you do not emit some form of reply within 3 - * seconds. - * - * @param source source of the command - * @param callback User function to execute when the api call completes. - */ - void thinking(command_source source, command_completion_event_t callback = utility::log_error()); - - /* Easter egg */ - void thonk(command_source source, command_completion_event_t callback = utility::log_error()); - -}; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/coro.h b/Source/ThirdParty/DPPLibrary/include/dpp/coro.h deleted file mode 100644 index 900a67e..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/coro.h +++ /dev/null @@ -1,158 +0,0 @@ -#ifdef DPP_CORO -#pragma once -#include -#include - -namespace dpp { - - /** - * @brief Shorthand for the coroutine handle's type - */ - using handle_type = std::coroutine_handle; - - class cluster; - - /** - * @brief Return type for coroutines - */ - struct task { - /** - * @brief Required nested promise_type for coroutines - */ - using promise_type = dpp::promise; - }; - - /** - * @brief Implementation of promise_type for dpp's coroutines - */ - struct promise { - /** - * @brief A pointer to the cluster making the requests in the coroutine - */ - cluster* bot = nullptr; - - /** - * @brief The result of the last co_await-ed function - */ - confirmation_callback_t callback; - - /** - * @brief Construct a new promise object - */ - promise() = default; - - /** - * @brief Construct a new promise object - * - * @param ev Base type of all events, only used to get the dpp::cluster pointer - */ - promise(const dpp::event_dispatch_t& ev) : bot(ev.from->creator) { } - - /** - * @brief Get the return object - * - * @return task dpp::task type - */ - task get_return_object() { - return {}; - } - - /** - * @brief Function called when the coroutine is first suspended, never suspends - * - * @return std::suspend_never Never suspend this coroutine at the first suspend point - */ - std::suspend_never initial_suspend() noexcept { - return {}; - } - - /** - * @brief Function called when the coroutine reaches its last suspension point - * - * @return std::suspend_never Never suspend this coroutine at the final suspend point - */ - std::suspend_never final_suspend() noexcept { - return {}; - } - - /** - * @brief Function called when the coroutine returns nothing - */ - void return_void() noexcept {} - - /** - * @brief Function called when coroutine throws a un-catch-ed exception. Does nothing - */ - void unhandled_exception() { - /* try { std::rethrow_exception(std::current_exception()); } */ - /* catch (const std::exception& e) { std::cout << e.what() << '\n'; } */ - } - }; - - /** - * @brief A co_await-able struct which returns the result of stored api call when co_await-ed. Meant to be opaque to the user - * - * @tparam T The type of the function (lambda if auto-generated by the php script) handling the making of api call - */ - template - struct awaitable { - /** - * @brief Pointer to the nested promise object of the coroutine, used for storing and retrieving the result of an api call - */ - promise* p; - - /** - * @brief Pointer to the cluster making the api request - */ - cluster* bot; - - /** - * @brief The function handling the making of request, using the cluster pointer - */ - T api_req; - - /** - * @brief Construct a new awaitable object - * - * @param cl pointer to the cluster making the api request - * @param api_call a function to invoke with the cluster pointer, handles the making of request - */ - awaitable(cluster* cl, T api_call) : bot{cl}, api_req{api_call} {} - - /** - * @brief First function called when this object is co_await-ed, its return type tells if the coroutine should be immediately suspended - * - * @return bool false, signifying immediate suspension - */ - bool await_ready() noexcept { - return false; - } - - /** - * @brief Function called when the coroutine is suspended, makes the api request and queues the resumption of the suspended coroutine, storing the result in promise object - * - * @param handle the handle to the suspended coroutine - */ - void await_suspend(handle_type handle) { - /* p = &handle.promise(); */ - /* if (!p->bot) p->bot = bot; */ - api_req([handle](const confirmation_callback_t& cback) { handle.promise().callback = cback; handle.resume(); }); - } - - /** - * @brief Function called when the coroutine is resumed by its handle, handles the retrieval and return of result from promise object - * - * @return confirmation_callback_t the result of the api call - */ - confirmation_callback_t await_resume() { - return p->callback; - } - }; - -}; - -/* template<> */ -/* struct std::coroutine_traits { */ -/* using promise_type = dpp::promise; */ -/* }; */ -#endif diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/discordclient.h b/Source/ThirdParty/DPPLibrary/include/dpp/discordclient.h deleted file mode 100644 index fa6f243..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/discordclient.h +++ /dev/null @@ -1,525 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using json = nlohmann::json; - -#define DISCORD_API_VERSION "10" -#define API_PATH "/api/v" DISCORD_API_VERSION -namespace dpp { - -// Forward declarations -class cluster; - -/** - * @brief This is an opaque class containing zlib library specific structures. - * We define it this way so that the public facing D++ library doesn't require - * the zlib headers be available to build against it. - */ -class zlibcontext; - -/** - * @brief Represents a connection to a voice channel. - * A client can only connect to one voice channel per guild at a time, so these are stored in a map - * in the dpp::discord_client keyed by guild_id. - */ -class DPP_EXPORT voiceconn { - /** - * @brief Owning dpp::discord_client instance - */ - class discord_client* creator; -public: - /** - * @brief Voice Channel ID - */ - snowflake channel_id; - - /** - * @brief Websocket hostname for status - */ - std::string websocket_hostname; - - /** - * @brief Voice Voice session ID - */ - std::string session_id; - - /** - * @brief Voice websocket token - */ - std::string token; - - /** - * @brief voice websocket client - */ - class discord_voice_client* voiceclient; - - /** - * @brief Construct a new voiceconn object - */ - voiceconn() = default; - - /** - * @brief Construct a new voiceconn object - * - * @param o owner - * @param _channel_id voice channel id - */ - voiceconn(class discord_client* o, snowflake _channel_id); - - /** - * @brief Destroy the voiceconn object - */ - ~voiceconn(); - - /** - * @brief return true if the connection is ready to connect - * (has hostname, token and session id) - * - * @return true if ready to connect - */ - bool is_ready(); - - /** - * @brief return true if the connection is active (websocket exists) - * - * @return true if has an active websocket - */ - bool is_active(); - - /** - * @brief Create websocket object and connect it. - * Needs hostname, token and session_id to be set or does nothing. - * - * @param guild_id Guild to connect to the voice channel on - * @return reference to self - * @note It can spawn a thread to establish the connection, so this is NOT a synchronous blocking call! - * You shouldn't call this directly. Use a wrapper function instead. e.g. dpp::guild::connect_member_voice - */ - voiceconn& connect(snowflake guild_id); - - /** - * @brief Disconnect from the currently connected voice channel - * @return reference to self - */ - voiceconn& disconnect(); -}; - -/** @brief Implements a discord client. Each discord_client connects to one shard and derives from a websocket client. */ -class DPP_EXPORT discord_client : public websocket_client -{ -protected: - /** - * @brief Needed so that voice_state_update can call dpp::discord_client::disconnect_voice_internal - */ - friend class dpp::events::voice_state_update; - - /** - * @brief Needed so that guild_create can request member chunks if you have the correct intents - */ - friend class dpp::events::guild_create; - - /** - * @brief Needed to allow cluster::set_presence to use the ETF functions - */ - friend class dpp::cluster; - - /** - * @brief True if the shard is terminating - */ - bool terminating; - - /** - * @brief Disconnect from the connected voice channel on a guild - * - * @param guild_id The guild who's voice channel you wish to disconnect from - * @param send_json True if we should send a json message confirming we are leaving the VC - * Should be set to false if we already receive this message in an event. - */ - void disconnect_voice_internal(snowflake guild_id, bool send_json = true); - -private: - - /** - * @brief Mutex for message queue - */ - std::shared_mutex queue_mutex; - - /** - * @brief Queue of outbound messages - */ - std::deque message_queue; - - /** - * @brief Thread this shard is executing on - */ - std::thread* runner; - - /** - * @brief Run shard loop under a thread. - * Calls discord_client::run() from within a std::thread. - */ - void thread_run(); - - /** - * @brief If true, stream compression is enabled - */ - bool compressed; - - /** - * @brief ZLib decompression buffer - */ - unsigned char* decomp_buffer; - - /** - * @brief Decompressed string - */ - std::string decompressed; - - /** - * @brief This object contains the various zlib structs which - * are not usable by the user of the library directly. They - * are wrapped within this opaque object so that this header - * file does not bring in a dependency on zlib.h. - */ - zlibcontext* zlib; - - /** - * @brief Total decompressed received bytes - */ - uint64_t decompressed_total; - - /** - * @brief Last connect time of cluster - */ - time_t connect_time; - - /** - * @brief Time last ping sent to websocket, in fractional seconds - */ - double ping_start; - - /** - * @brief ETF parser for when in ws_etf mode - */ - class etf_parser* etf; - - /** - * @brief Convert a JSON object to string. - * In JSON protocol mode, call json.dump(), and in ETF mode, - * call etf::build(). - * - * @param json nlohmann::json object to convert - * @return std::string string output in the correct format - */ - std::string jsonobj_to_string(const nlohmann::json& json); - - /** - * @brief Initialise ZLib (websocket compression) - * @throw dpp::exception if ZLib cannot be initialised - */ - void setup_zlib(); - - /** - * @brief Shut down ZLib (websocket compression) - */ - void end_zlib(); - - /** - * @brief Update the websocket hostname with the resume url - * from the last READY event - */ - void set_resume_hostname(); - - /** - * @brief Clean up resources - */ - void cleanup(); -public: - /** - * @brief Owning cluster - */ - class dpp::cluster* creator; - - /** - * @brief Heartbeat interval for sending heartbeat keepalive - * @note value in milliseconds - */ - uint32_t heartbeat_interval; - - /** - * @brief Last heartbeat - */ - time_t last_heartbeat; - - /** - * @brief Shard ID of this client - */ - uint32_t shard_id; - - /** - * @brief Total number of shards - */ - uint32_t max_shards; - - /** - * @brief Thread ID - */ - std::thread::native_handle_type thread_id; - - /** - * @brief Last sequence number received, for resumes and pings - */ - uint64_t last_seq; - - /** - * @brief Discord bot token - */ - std::string token; - - /** - * @brief Privileged gateway intents - * @see dpp::intents - */ - uint32_t intents; - - /** - * @brief Discord session id - */ - std::string sessionid; - - /** - * @brief Mutex for voice connections map - */ - std::shared_mutex voice_mutex; - - /** - * @brief Resume count - */ - uint32_t resumes; - - /** - * @brief Reconnection count - */ - uint32_t reconnects; - - /** - * @brief Websocket latency in fractional seconds - */ - double websocket_ping; - - /** - * @brief True if READY or RESUMED has been received - */ - bool ready; - - /** - * @brief Last heartbeat ACK (opcode 11) - */ - time_t last_heartbeat_ack; - - /** - * @brief Current websocket protocol, currently either ETF or JSON - */ - websocket_protocol_t protocol; - - /** - * @brief List of voice channels we are connecting to keyed by guild id - */ - std::unordered_map connecting_voice_channels; - - /** - * @brief The gateway address we reconnect to when we resume a session - */ - std::string resume_gateway_url; - - /** - * @brief Log a message to whatever log the user is using. - * The logged message is passed up the chain to the on_log event in user code which can then do whatever - * it wants to do with it. - * @param severity The log level from dpp::loglevel - * @param msg The log message to output - */ - virtual void log(dpp::loglevel severity, const std::string &msg) const; - - /** - * @brief Handle an event (opcode 0) - * @param event Event name, e.g. MESSAGE_CREATE - * @param j JSON object for the event content - * @param raw Raw JSON event string - */ - virtual void handle_event(const std::string &event, json &j, const std::string &raw); - - /** - * @brief Get the Guild Count for this shard - * - * @return uint64_t guild count - */ - uint64_t get_guild_count(); - - /** - * @brief Get the Member Count for this shard - * - * @return uint64_t member count - */ - uint64_t get_member_count(); - - /** - * @brief Get the Channel Count for this shard - * - * @return uint64_t channel count - */ - uint64_t get_channel_count(); - - /** Fires every second from the underlying socket I/O loop, used for sending heartbeats */ - virtual void one_second_timer(); - - /** - * @brief Queue a message to be sent via the websocket - * - * @param j The JSON data of the message to be sent - * @param to_front If set to true, will place the message at the front of the queue not the back - * (this is for urgent messages such as heartbeat, presence, so they can take precedence over - * chunk requests etc) - */ - void queue_message(const std::string &j, bool to_front = false); - - /** - * @brief Clear the outbound message queue - * @return reference to self - */ - discord_client& clear_queue(); - - /** - * @brief Get the size of the outbound message queue - * - * @return The size of the queue - */ - size_t get_queue_size(); - - /** - * @brief Returns true if the shard is connected - * - * @return True if connected - */ - bool is_connected(); - - /** - * @brief Returns the connection time of the shard - * - * @return dpp::utility::uptime Detail of how long the shard has been connected for - */ - dpp::utility::uptime get_uptime(); - - /** - * @brief Construct a new discord_client object - * - * @param _cluster The owning cluster for this shard - * @param _shard_id The ID of the shard to start - * @param _max_shards The total number of shards across all clusters - * @param _token The bot token to use for identifying to the websocket - * @param intents Privileged intents to use, a bitmask of values from dpp::intents - * @param compressed True if the received data will be gzip compressed - * @param ws_protocol Websocket protocol to use for the connection, JSON or ETF - * - * @throws std::bad_alloc Passed up to the caller if any internal objects fail to allocate, after cleanup has completed - */ - discord_client(dpp::cluster* _cluster, uint32_t _shard_id, uint32_t _max_shards, const std::string &_token, uint32_t intents = 0, bool compressed = true, websocket_protocol_t ws_protocol = ws_json); - - /** - * @brief Destroy the discord client object - */ - virtual ~discord_client(); - - /** - * @brief Get the decompressed bytes in objectGet decompressed total bytes received - * @return uint64_t bytes received - */ - uint64_t get_decompressed_bytes_in(); - - /** - * @brief Handle JSON from the websocket. - * @param buffer The entire buffer content from the websocket client - * @returns True if a frame has been handled - */ - virtual bool handle_frame(const std::string &buffer); - - /** - * @brief Handle a websocket error. - * @param errorcode The error returned from the websocket - */ - virtual void error(uint32_t errorcode); - - /** - * @brief Start and monitor I/O loop. - * @note this is a blocking call and is usually executed within a - * thread by whatever creates the object. - */ - void run(); - - /** - * @brief Connect to a voice channel - * - * @param guild_id Guild where the voice channel is - * @param channel_id Channel ID of the voice channel - * @param self_mute True if the bot should mute itself - * @param self_deaf True if the bot should deafen itself - * @return reference to self - * @note This is NOT a synchronous blocking call! The bot isn't instantly ready to send or listen for audio, - * as we have to wait for the connection to the voice server to be established! - * e.g. wait for dpp::cluster::on_voice_ready event, and then send the audio within that event. - */ - discord_client& connect_voice(snowflake guild_id, snowflake channel_id, bool self_mute = false, bool self_deaf = false); - - /** - * @brief Disconnect from the connected voice channel on a guild - * - * @param guild_id The guild who's voice channel you wish to disconnect from - * @return reference to self - * @note This is NOT a synchronous blocking call! The bot isn't instantly disconnected. - */ - discord_client& disconnect_voice(snowflake guild_id); - - /** - * @brief Get the dpp::voiceconn object for a specific guild on this shard. - * - * @param guild_id The guild ID to retrieve the voice connection for - * @return voiceconn* The voice connection for the guild, or nullptr if there is no - * voice connection to this guild. - */ - voiceconn* get_voice(snowflake guild_id); -}; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/discordevents.h b/Source/ThirdParty/DPPLibrary/include/dpp/discordevents.h deleted file mode 100644 index 24de681..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/discordevents.h +++ /dev/null @@ -1,171 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once - -#include -#include - -namespace dpp { - -/** @brief Returns a snowflake id from a json field value, if defined, else returns 0 - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @return found value - */ -uint64_t DPP_EXPORT snowflake_not_null(const nlohmann::json* j, const char *keyname); - -/** @brief Sets a snowflake id from a json field value, if defined, else does nothing - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @param v Value to change - */ -void DPP_EXPORT set_snowflake_not_null(const nlohmann::json* j, const char *keyname, uint64_t &v); - -/** @brief Returns a string from a json field value, if defined, else returns an empty string. - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @return found value - */ -std::string DPP_EXPORT string_not_null(const nlohmann::json* j, const char *keyname); - -/** @brief Sets a string from a json field value, if defined, else does nothing - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @param v Value to change - */ -void DPP_EXPORT set_string_not_null(const nlohmann::json* j, const char *keyname, std::string &v); - -/** @brief Returns a double from a json field value, if defined, else returns 0. - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @return found value - */ -double DPP_EXPORT double_not_null(const nlohmann::json* j, const char *keyname); - -/** @brief Sets a double from a json field value, if defined, else does nothing - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @param v Value to change - */ -void DPP_EXPORT set_double_not_null(const nlohmann::json* j, const char *keyname, double &v); - -/** @brief Returns a 64 bit unsigned integer from a json field value, if defined, else returns 0. - * DO NOT use this for snowflakes, as usually snowflakes are wrapped in a string! - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @return found value - */ -uint64_t DPP_EXPORT int64_not_null(const nlohmann::json* j, const char *keyname); - -/** @brief Sets an unsigned 64 bit integer from a json field value, if defined, else does nothing - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @param v Value to change - */ -void DPP_EXPORT set_int64_not_null(const nlohmann::json* j, const char *keyname, uint64_t &v); - -/** @brief Returns a 32 bit unsigned integer from a json field value, if defined, else returns 0 - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @return found value - */ -uint32_t DPP_EXPORT int32_not_null(const nlohmann::json* j, const char *keyname); - -/** @brief Sets an unsigned 32 bit integer from a json field value, if defined, else does nothing - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @param v Value to change - */ -void DPP_EXPORT set_int32_not_null(const nlohmann::json* j, const char *keyname, uint32_t &v); - -/** @brief Returns a 16 bit unsigned integer from a json field value, if defined, else returns 0 - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @return found value - */ -uint16_t DPP_EXPORT int16_not_null(const nlohmann::json* j, const char *keyname); - -/** @brief Sets an unsigned 16 bit integer from a json field value, if defined, else does nothing - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @param v Value to change - */ -void DPP_EXPORT set_int16_not_null(const nlohmann::json* j, const char *keyname, uint16_t &v); - -/** @brief Returns an 8 bit unsigned integer from a json field value, if defined, else returns 0 - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @return found value - */ -uint8_t DPP_EXPORT int8_not_null(const nlohmann::json* j, const char *keyname); - -/** @brief Sets an unsigned 8 bit integer from a json field value, if defined, else does nothing - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @param v Value to change - */ -void DPP_EXPORT set_int8_not_null(const nlohmann::json* j, const char *keyname, uint8_t &v); - -/** @brief Returns a boolean value from a json field value, if defined, else returns false - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @return found value - */ -bool DPP_EXPORT bool_not_null(const nlohmann::json* j, const char *keyname); - -/** @brief Sets a boolean from a json field value, if defined, else does nothing - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @param v Value to change - */ -void DPP_EXPORT set_bool_not_null(const nlohmann::json* j, const char *keyname, bool &v); - -/** @brief Returns a time_t from an ISO8601 timestamp field in a json value, if defined, else returns - * epoch value of 0. - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @return found value - */ -time_t DPP_EXPORT ts_not_null(const nlohmann::json* j, const char *keyname); - -/** @brief Sets an timestamp from a json field value containing an ISO8601 string, if defined, else does nothing - * @param j nlohmann::json instance to retrieve value from - * @param keyname key name to check for a value - * @param v Value to change - */ -void DPP_EXPORT set_ts_not_null(const nlohmann::json* j, const char *keyname, time_t &v); - -/** @brief Base64 encode data into a string. - * @param buf Raw binary buffer - * @param buffer_length Buffer length to encode - * @return The base64 encoded string - */ -std::string DPP_EXPORT base64_encode(unsigned char const* buf, unsigned int buffer_length); - -/** - * @brief Convert time_t unix epoch to std::string ISO date/time - * - * @param ts Timestamp to convert - * @return std::string Converted time/date string - */ -std::string DPP_EXPORT ts_to_string(time_t ts); - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/discordvoiceclient.h b/Source/ThirdParty/DPPLibrary/include/dpp/discordvoiceclient.h deleted file mode 100644 index 39b6c03..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/discordvoiceclient.h +++ /dev/null @@ -1,873 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using json = nlohmann::json; - -struct OpusDecoder; -struct OpusEncoder; -struct OpusRepacketizer; - -namespace dpp { - -// Forward declaration -class cluster; - -/** - * @brief An opus-encoded RTP packet to be sent out to a voice channel - */ -struct DPP_EXPORT voice_out_packet { - /** - * @brief Each string is a UDP packet. - * Generally these will be RTP. - */ - std::string packet; - /** - * @brief Duration of packet - */ - uint64_t duration; -}; - -#define AUDIO_TRACK_MARKER (uint16_t)0xFFFF - -#define AUDIO_OVERLAP_SLEEP_SAMPLES 30 - -/** @brief Implements a discord voice connection. - * Each discord_voice_client connects to one voice channel and derives from a websocket client. - */ -class DPP_EXPORT discord_voice_client : public websocket_client -{ - /** - * @brief Clean up resources - */ - void cleanup(); - - /** - * @brief Mutex for outbound packet stream - */ - std::mutex stream_mutex; - - /** - * @brief Mutex for message queue - */ - std::shared_mutex queue_mutex; - - /** - * @brief Queue of outbound messages - */ - std::deque message_queue; - - /** - * @brief Thread this connection is executing on - */ - std::thread* runner; - - /** - * @brief Run shard loop under a thread - */ - void thread_run(); - - /** - * @brief Last connect time of voice session - */ - time_t connect_time; - - /** - * @brief IP of UDP/RTP endpoint - */ - std::string ip; - - /** - * @brief Port number of UDP/RTP endpoint - */ - uint16_t port; - - /** - * @brief SSRC value - */ - uint64_t ssrc; - - /** - * @brief List of supported audio encoding modes - */ - std::vector modes; - - /** - * @brief Timescale in nanoseconds - */ - uint64_t timescale; - - /** - * @brief Output buffer - */ - std::vector outbuf; - - /** - * @brief Data type of RTP packet sequence number field. - */ - using rtp_seq_t = uint16_t; - using rtp_timestamp_t = uint32_t; - - /** - * @brief Keeps track of the voice payload to deliver to voice handlers. - */ - struct voice_payload { - /** - * @brief The sequence number of the RTP packet that generated this - * voice payload. - */ - rtp_seq_t seq; - /** - * @brief The timestamp of the RTP packet that generated this voice - * payload. - * - * The timestamp is used to detect the order around where sequence - * number wraps around. - */ - rtp_timestamp_t timestamp; - /** - * @brief The event payload that voice handlers receive. - */ - std::unique_ptr vr; - - /** - * @brief For priority_queue sorting. - * @return true if "this" has lower priority that "other", - * i.e. appears later in the queue; false otherwise. - */ - bool operator<(const voice_payload& other) const; - }; - - struct voice_payload_parking_lot { - /** - * @brief The range of RTP packet sequence number and timestamp in the lot. - * - * The minimum is used to drop packets that arrive too late. Packets - * less than the minimum have been delivered to voice handlers and - * there is no going back. Unfortunately we just have to drop them. - * - * The maximum is used, at flush time, to calculate the minimum for - * the next batch. The maximum is also updated every time we receive an - * RTP packet with a larger value. - */ - struct seq_range_t { - rtp_seq_t min_seq, max_seq; - rtp_timestamp_t min_timestamp, max_timestamp; - } range; - /** - * @brief The queue of parked voice payloads. - * - * We group payloads and deliver them to handlers periodically as the - * handling of out-of-order RTP packets. Payloads in between flushes - * are parked and sorted in this queue. - */ - std::priority_queue parked_payloads; - /** - * @brief The decoder ctls to be set on the decoder. - */ - std::vector> pending_decoder_ctls; - /** - * @brief libopus decoder - * - * Shared with the voice courier thread that does the decoding. - * This is not protected by a mutex because only the courier thread - * uses the decoder. - */ - std::shared_ptr decoder; - }; - /** - * @brief Thread used to deliver incoming voice data to handlers. - */ - std::thread voice_courier; - /** - * @brief Shared state between this voice client and the courier thread. - */ - struct courier_shared_state_t { - /** - * @brief Protects all following members. - */ - std::mutex mtx; - /** - * @brief Signaled when there is a new payload to deliver or terminating state has changed. - */ - std::condition_variable signal_iteration; - /** - * @brief Voice buffers to be reported to handler, grouped by speaker. - * - * Buffers are parked here and flushed every 500ms. - */ - std::map parked_voice_payloads; - /** - * @brief Used to signal termination. - * - * @note Pending payloads are delivered first before termination. - */ - bool terminating = false; - } voice_courier_shared_state; - /** - * @brief The run loop of the voice courier thread. - */ - static void voice_courier_loop(discord_voice_client&, courier_shared_state_t&); - - /** - * @brief If true, audio packet sending is paused - */ - bool paused; - -#ifdef HAVE_VOICE - /** - * @brief libopus encoder - */ - OpusEncoder* encoder; - - /** - * @brief libopus repacketizer - * (merges frames into one packet) - */ - OpusRepacketizer* repacketizer; -#else - /** - * @brief libopus encoder - */ - void* encoder; - - /** - * @brief libopus repacketizer - * (merges frames into one packet) - */ - void* repacketizer; -#endif - - /** - * @brief File descriptor for UDP connection - */ - dpp::socket fd; - - /** - * @brief Secret key for encrypting voice. - * If it has been sent, this is non-null and points to a - * sequence of exactly 32 bytes. - */ - uint8_t* secret_key; - - /** - * @brief Sequence number of outbound audio. This is incremented - * once per frame sent. - */ - uint16_t sequence; - - /** - * @brief Timestamp value used in outbound audio. Each packet - * has the timestamp value which is incremented to match - * how many frames are sent. - */ - uint32_t timestamp; - - /** - * @brief Last sent packet high-resolution timestamp - */ - std::chrono::high_resolution_clock::time_point last_timestamp; - - /** - * @brief Fraction of the sleep that was not executed after the last audio packet was sent - */ - std::chrono::nanoseconds last_sleep_remainder; - - /** - * @brief Maps receiving ssrc to user id - */ - std::unordered_map ssrc_map; - - /** - * @brief This is set to true if we have started sending audio. - * When this moves from false to true, this causes the - * client to send the 'talking' notification to the websocket. - */ - bool sending; - - /** - * @brief Number of track markers in the buffer. For example if there - * are two track markers in the buffer there are 3 tracks. - * - * **Special case:** - * - * If the buffer is empty, there are zero tracks in the - * buffer. - */ - uint32_t tracks; - - /** - * @brief Meta data associated with each track. - * Arbitrary string that the user can set via - * dpp::discord_voice_client::add_marker - */ - std::vector track_meta; - - /** - * @brief Encoding buffer for opus repacketizer and encode - */ - uint8_t encode_buffer[65536]; - - /** - * @brief Send data to UDP socket immediately. - * - * @param data data to send - * @param length length of data to send - * @return int bytes sent. Will return -1 if we cannot send - */ - int udp_send(const char* data, size_t length); - - /** - * @brief Receive data from UDP socket immediately. - * - * @param data data to receive - * @param max_length size of data receiving buffer - * @return int bytes received. -1 if there is an error - * (e.g. EAGAIN) - */ - int udp_recv(char* data, size_t max_length); - - /** - * @brief This hooks the ssl_client, returning the file - * descriptor if we want to send buffered data, or - * -1 if there is nothing to send - * - * @return int file descriptor or -1 - */ - dpp::socket want_write(); - - /** - * @brief This hooks the ssl_client, returning the file - * descriptor if we want to receive buffered data, or - * -1 if we are not wanting to receive - * - * @return int file descriptor or -1 - */ - dpp::socket want_read(); - - /** - * @brief Called by ssl_client when the socket is ready - * for writing, at this point we pick the head item off - * the buffer and send it. So long as it doesn't error - * completely, we pop it off the head of the queue. - */ - void write_ready(); - - /** - * @brief Called by ssl_client when there is data to be - * read. At this point we insert that data into the - * input queue. - */ - void read_ready(); - - /** - * @brief Send data to the UDP socket, using the buffer. - * - * @param packet packet data - * @param len length of packet - * @param duration duration of opus packet - */ - void send(const char* packet, size_t len, uint64_t duration); - - /** - * @brief Queue a message to be sent via the websocket - * - * @param j The JSON data of the message to be sent - * @param to_front If set to true, will place the message at the front of the queue not the back - * (this is for urgent messages such as heartbeat, presence, so they can take precedence over - * chunk requests etc) - */ - void queue_message(const std::string &j, bool to_front = false); - - /** - * @brief Clear the outbound message queue - * - */ - void clear_queue(); - - /** - * @brief Get the size of the outbound message queue - * - * @return The size of the queue - */ - size_t get_queue_size(); - - /** - * @brief Encode a byte buffer using opus codec. - * Multiple opus frames (2880 bytes each) will be encoded into one packet for sending. - * - * @param input Input data as raw bytes of PCM data - * @param inDataSize Input data length - * @param output Output data as an opus encoded packet - * @param outDataSize Output data length, should be at least equal to the input size. - * Will be adjusted on return to the actual compressed data size. - * @return size_t The compressed data size that was encoded. - * @throw dpp::voice_exception If data length to encode is invalid or voice support not compiled into D++ - */ - size_t encode(uint8_t *input, size_t inDataSize, uint8_t *output, size_t &outDataSize); - -public: - - /** - * @brief Owning cluster - */ - class dpp::cluster* creator; - - /** - * @brief This needs to be static, we only initialise libsodium once per program start, - * so initialising it on first use in a voice connection is best. - */ - static bool sodium_initialised; - - /** - * @brief True when the thread is shutting down - */ - bool terminating; - - /** - * @brief Heartbeat interval for sending heartbeat keepalive - */ - uint32_t heartbeat_interval; - - /** - * @brief Last voice channel websocket heartbeat - */ - time_t last_heartbeat; - - /** - * @brief Thread ID - */ - std::thread::native_handle_type thread_id; - - /** - * @brief Discord voice session token - */ - std::string token; - - /** - * @brief Discord voice session id - */ - std::string sessionid; - - /** - * @brief Server ID - */ - snowflake server_id; - - /** - * @brief Channel ID - */ - snowflake channel_id; - - /** - * @brief The audio type to be sent. The default type is recorded audio. - * - * If the audio is recorded, the sending of audio packets is throttled. - * Otherwise, if the audio is live, the sending is not throttled. - * - * Discord voice engine is expecting audio data as if they were from - * some audio device, e.g. microphone, where the data become available - * as they get captured from the audio device. - * - * In case of recorded audio, unlike from a device, the audio data are - * usually instantly available in large chunks. Throttling is needed to - * simulate audio data coming from an audio device. In case of live audio, - * the throttling is by nature, so no extra throttling is needed. - * - * Using live audio mode for recorded audio can cause Discord to skip - * audio data because Discord does not expect to receive, say, 3 minutes' - * worth of audio data in 1 second. - * - * There are some inaccuracies in the throttling method used by the recorded - * audio mode on some systems (mainly Windows) which causes gaps and stutters - * in the resulting audio stream. The overlap audio mode provides a different - * implementation that fixes the issue. This method is slightly more CPU - * intensive, and should only be used if you encounter issues with recorded audio - * on your system. - * - * Use discord_voice_client::set_send_audio_type to change this value as - * it ensures thread safety. - */ - enum send_audio_type_t - { - satype_recorded_audio, - satype_live_audio, - satype_overlap_audio - } send_audio_type = satype_recorded_audio; - - /** - * @brief Sets the gain for the specified user. - * - * Similar to the User Volume slider, controls the listening volume per user. - * Uses native Opus gain control, so clients don't have to perform extra - * audio processing. - * - * The gain setting will affect the both individual and combined voice audio. - * - * The gain value can also be set even before the user connects to the voice - * channel. - * - * @param user_id The ID of the user where the gain is to be controlled. - * @param factor Nonnegative factor to scale the amplitude by, where 1.f reverts - * to the default volume. - */ - void set_user_gain(snowflake user_id, float factor); - - /** - * @brief Log a message to whatever log the user is using. - * The logged message is passed up the chain to the on_log event in user code which can then do whatever - * it wants to do with it. - * @param severity The log level from dpp::loglevel - * @param msg The log message to output - */ - virtual void log(dpp::loglevel severity, const std::string &msg) const; - - /** - * @brief Fires every second from the underlying socket I/O loop, used for sending heartbeats - * @throw dpp::exception if the socket needs to disconnect - */ - virtual void one_second_timer(); - - /** - * @brief voice client is ready to stream audio. - * The voice client is considered ready if it has a secret key. - * - * @return true if ready to stream audio - */ - bool is_ready(); - - /** - * @brief Returns true if the voice client is connected to the websocket - * - * @return True if connected - */ - bool is_connected(); - - /** - * @brief Returns the connection time of the voice client - * - * @return dpp::utility::uptime Detail of how long the voice client has been connected for - */ - dpp::utility::uptime get_uptime(); - - /** Constructor takes shard id, max shards and token. - * @param _cluster The cluster which owns this voice connection, for related logging, REST requests etc - * @param _channel_id The channel id to identify the voice connection as - * @param _server_id The server id (guild id) to identify the voice connection as - * @param _token The voice session token to use for identifying to the websocket - * @param _session_id The voice session id to identify with - * @param _host The voice server hostname to connect to (hostname:port format) - * @throw dpp::voice_exception Sodium or Opus failed to initialise, or D++ is not compiled with voice support - */ - discord_voice_client(dpp::cluster* _cluster, snowflake _channel_id, snowflake _server_id, const std::string &_token, const std::string &_session_id, const std::string &_host); - - /** - * @brief Destroy the discord voice client object - */ - virtual ~discord_voice_client(); - - /** - * @brief Handle JSON from the websocket. - * @param buffer The entire buffer content from the websocket client - * @return bool True if a frame has been handled - * @throw dpp::exception If there was an error processing the frame, or connection to UDP socket failed - */ - virtual bool handle_frame(const std::string &buffer); - - /** - * @brief Handle a websocket error. - * @param errorcode The error returned from the websocket - */ - virtual void error(uint32_t errorcode); - - /** - * @brief Start and monitor I/O loop - */ - void run(); - - /** - * @brief Send raw audio to the voice channel. - * - * You should send an audio packet of 11520 bytes. - * Note that this function can be costly as it has to opus encode - * the PCM audio on the fly, and also encrypt it with libsodium. - * - * @note Because this function encrypts and encodes packets before - * pushing them onto the output queue, if you have a complete stream - * ready to send and know its length it is advisable to call this - * method multiple times to enqueue the entire stream audio so that - * it is all encoded at once (unless you have set use_opus to false). - * Constantly calling this from the dpp::on_voice_buffer_send callback - * can and will eat a TON of cpu! - * - * @param audio_data Raw PCM audio data. Channels are interleaved, - * with each channel's amplitude being a 16 bit value. - * - * The audio data should be 48000Hz signed 16 bit audio. - * - * @param length The length of the audio data. The length should - * be a multiple of 4 (2x 16 bit stereo channels) with a maximum - * length of 11520, which is a complete opus frame at highest - * quality. - * - * @return discord_voice_client& Reference to self - * - * @throw dpp::voice_exception If data length is invalid or voice support not compiled into D++ - */ - discord_voice_client& send_audio_raw(uint16_t* audio_data, const size_t length); - - /** - * @brief Send opus packets to the voice channel - * - * Some containers such as .ogg may contain OPUS - * encoded data already. In this case, we don't need to encode the - * frames using opus here. We can bypass the codec, only applying - * libsodium to the stream. - * - * @param opus_packet Opus packets. Discord expects opus frames - * to be encoded at 48000Hz - * - * @param length The length of the audio data. - * - * @param duration Generally duration is 2.5, 5, 10, 20, 40 or 60 - * if the timescale is 1000000 (1ms) - * - * @return discord_voice_client& Reference to self - * - * @note It is your responsibility to ensure that packets of data - * sent to send_audio are correctly repacketized for streaming, - * e.g. that audio frames are not too large or contain - * an incorrect format. Discord will still expect the same frequency - * and bit width of audio and the same signedness. - * - * @throw dpp::voice_exception If data length is invalid or voice support not compiled into D++ - */ - discord_voice_client& send_audio_opus(uint8_t* opus_packet, const size_t length, uint64_t duration); - - /** - * @brief Send opus packets to the voice channel - * - * Some containers such as .ogg may contain OPUS - * encoded data already. In this case, we don't need to encode the - * frames using opus here. We can bypass the codec, only applying - * libsodium to the stream. - * - * Duration is calculated internally - * - * @param opus_packet Opus packets. Discord expects opus frames - * to be encoded at 48000Hz - * - * @param length The length of the audio data. - * - * @return discord_voice_client& Reference to self - * - * @note It is your responsibility to ensure that packets of data - * sent to send_audio are correctly repacketized for streaming, - * e.g. that audio frames are not too large or contain - * an incorrect format. Discord will still expect the same frequency - * and bit width of audio and the same signedness. - * - * @throw dpp::voice_exception If data length is invalid or voice support not compiled into D++ - */ - discord_voice_client& send_audio_opus(uint8_t* opus_packet, const size_t length); - - /** - * @brief Send silence to the voice channel - * - * @param duration How long to send silence for. With the standard - * timescale this is in milliseconds. Allowed values are 2.5, - * 5, 10, 20, 40 or 60 milliseconds. - * @return discord_voice_client& Reference to self - * @throw dpp::voice_exception if voice support is not compiled into D++ - */ - discord_voice_client& send_silence(const uint64_t duration); - - /** - * @brief Sets the audio type that will be sent with send_audio_* methods. - * - * @see send_audio_type_t - */ - discord_voice_client& set_send_audio_type(send_audio_type_t type); - - /** - * @brief Set the timescale in nanoseconds. - * - * @param new_timescale Timescale to set. This defaults to 1000000, - * which means 1 millisecond. - * @return discord_voice_client& Reference to self - * @throw dpp::voice_exception If data length is invalid or voice support not compiled into D++ - */ - discord_voice_client& set_timescale(uint64_t new_timescale); - - /** - * @brief Get the current timescale, this will default to 1000000 - * which means 1 millisecond. - * - * @return uint64_t timescale in nanoseconds - */ - uint64_t get_timescale(); - - /** - * @brief Mark the voice connection as 'speaking'. - * This sends a JSON message to the voice websocket which tells discord - * that the user is speaking. The library automatically calls this for you - * whenever you send audio. - * - * @return discord_voice_client& Reference to self - */ - discord_voice_client& speak(); - - /** - * @brief Pause sending of audio - * - * @param pause True to pause, false to resume - * @return reference to self - */ - discord_voice_client& pause_audio(bool pause); - - /** - * @brief Immediately stop all audio. - * Clears the packet queue. - * @return reference to self - */ - discord_voice_client& stop_audio(); - - /** - * @brief Returns true if we are playing audio - * - * @return true if audio is playing - */ - bool is_playing(); - - /** - * @brief Get the number of seconds remaining - * of the audio output buffer - * - * @return float number of seconds remaining - */ - float get_secs_remaining(); - - /** - * @brief Get the number of tracks remaining - * in the output buffer. - * This is calculated by the number of track - * markers plus one. - * @return uint32_t Number of tracks in the - * buffer - */ - uint32_t get_tracks_remaining(); - - /** - * @brief Get the time remaining to send the - * audio output buffer in hours:minutes:seconds - * - * @return dpp::utility::uptime length of buffer - */ - dpp::utility::uptime get_remaining(); - - /** - * @brief Insert a track marker into the audio - * output buffer. - * A track marker is an arbitrary flag in the - * buffer contents that indicates the end of some - * block of audio of significance to the sender. - * This may be a song from a streaming site, or - * some voice audio/speech, a sound effect, or - * whatever you choose. You can later skip - * to the next marker using the - * dpp::discord_voice_client::skip_to_next_marker - * function. - * @param metadata Arbitrary information related to this - * track - * @return reference to self - */ - discord_voice_client& insert_marker(const std::string& metadata = ""); - - /** - * @brief Skip tp the next track marker, - * previously inserted by using the - * dpp::discord_voice_client::insert_marker - * function. If there are no markers in the - * output buffer, then this skips to the end - * of the buffer and is equivalent to the - * dpp::discord_voice_client::stop_audio - * function. - * @note It is possible to use this function - * while the output stream is paused. - * @return reference to self - */ - discord_voice_client& skip_to_next_marker(); - - /** - * @brief Get the metadata string associated with each inserted marker. - * - * @return const std::vector& list of metadata strings - */ - const std::vector get_marker_metadata(); - - /** - * @brief Returns true if the audio is paused. - * You can unpause with - * dpp::discord_voice_client::pause_audio. - * - * @return true if paused - */ - bool is_paused(); - - /** - * @brief Discord external IP detection. - * @return std::string Your external IP address - * @note This is a blocking operation that waits - * for a single packet from Discord's voice servers. - */ - std::string discover_ip(); -}; - -}; - diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/dispatcher.h b/Source/ThirdParty/DPPLibrary/include/dpp/dispatcher.h deleted file mode 100644 index dcd875b..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/dispatcher.h +++ /dev/null @@ -1,1762 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/* Forward declaration */ -struct confirmation_callback_t; - -/** - * @brief A function used as a callback for any REST based command - */ -typedef std::function command_completion_event_t; - -/** @brief Base event parameter struct. - * Each event you receive from the library will have its parameter derived from this class. - * The class contains the raw event data, and a pointer to the current shard's dpp::discord_client object. - * You can also use this object to cancel the current event, meaning that any listeners after yours do - * not get notified of the current event if you call it. - */ -struct DPP_EXPORT event_dispatch_t { - /** - * @brief Raw event data. - * If you are using json on your websocket, this will contain json, and if you are using - * ETF as your websocket protocol, it will contain raw ETF data. - */ - const std::string raw_event; - - /** - * @brief Shard the event came from. - * Note that for some events, notably voice events, this may be nullptr. - */ - class discord_client* from; - - /** - * @brief Construct a new event_dispatch_t object - * - * @param client The shard the event originated on. May be a nullptr, e.g. for voice events - * @param raw Raw event data as JSON or ETF - */ - event_dispatch_t(class discord_client* client, const std::string& raw); - - /** - * @brief Cancels the event in progress. Any other attached lambdas for this event after this one are not called. - * Note that event cancellation is a thread local state, and not stored in the object (because object which can - * be cancelled is `const` during the event, and cannot itself contain the changeable state). - * @return const event_dispatch_t& reference to self for chaining - */ - const event_dispatch_t& cancel_event() const; - - /** - * @brief Returns true if the event is cancelled. - * Note that event cancellation is a thread local state, and not stored in the object (because object which can - * be cancelled is `const` during the event, and cannot itself contain the changeable state). - * @return true if the event is cancelled - */ - bool is_cancelled() const; -}; - -/** @brief Log messages */ -struct DPP_EXPORT log_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on. CAN BE NULL - * for log events originating from the cluster object - * @param raw Raw event text as JSON - */ - log_t(class discord_client* client, const std::string& raw); - /** Severity */ - loglevel severity; - /** Log Message */ - std::string message; - - log_t(const log_t&) = default; -}; - -namespace utility { - /** - * @brief Get a default logger that outputs to std::cout. - * e.g. - * ``` - * bot.on_log(dpp::utility::cout_logger()); - * ``` - * - * @return A logger for attaching to on_log - */ - std::function DPP_EXPORT cout_logger(); - - /** - * @brief The default callback handler for API calls. - * on error, sends the error to the logger. - * - * @return A lambda for attaching to an API callback - */ - std::function DPP_EXPORT log_error(); -}; - -/** @brief Add user to scheduled event */ -struct DPP_EXPORT guild_scheduled_event_user_add_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on. CAN BE NULL - * for log events originating from the cluster object - * @param raw Raw event text as JSON - */ - guild_scheduled_event_user_add_t(class discord_client* client, const std::string& raw); - /** - * @brief event user added to - */ - snowflake event_id; - - /** - * @brief User being added - * - */ - snowflake user_id; - - /** - * @brief Guild being added to - * - */ - snowflake guild_id; -}; - -/** @brief Delete user from scheduled event */ -struct DPP_EXPORT guild_scheduled_event_user_remove_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on. CAN BE NULL - * for log events originating from the cluster object - * @param raw Raw event text as JSON - */ - guild_scheduled_event_user_remove_t(class discord_client* client, const std::string& raw); - /** - * @brief event user removed from - */ - snowflake event_id; - - /** - * @brief User being removed - * - */ - snowflake user_id; - - /** - * @brief Guild being removed from - * - */ - snowflake guild_id; -}; - -/** @brief Create scheduled event */ -struct DPP_EXPORT guild_scheduled_event_create_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on. CAN BE NULL - * for log events originating from the cluster object - * @param raw Raw event text as JSON - */ - guild_scheduled_event_create_t(class discord_client* client, const std::string& raw); - /** - * @brief created event - */ - scheduled_event created; -}; - -/** @brief Create scheduled event */ -struct DPP_EXPORT guild_scheduled_event_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on. CAN BE NULL - * for log events originating from the cluster object - * @param raw Raw event text as JSON - */ - guild_scheduled_event_update_t(class discord_client* client, const std::string& raw); - /** - * @brief updated event - */ - scheduled_event updated; -}; - -/** @brief Delete scheduled event */ -struct DPP_EXPORT guild_scheduled_event_delete_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on. CAN BE NULL - * for log events originating from the cluster object - * @param raw Raw event text as JSON - */ - guild_scheduled_event_delete_t(class discord_client* client, const std::string& raw); - /** - * @brief deleted event - */ - scheduled_event deleted; -}; - -/** @brief Create automod rule */ -struct DPP_EXPORT automod_rule_create_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on. CAN BE NULL - * for log events originating from the cluster object - * @param raw Raw event text as JSON - */ - automod_rule_create_t(class discord_client* client, const std::string& raw); - /** - * @brief updated event - */ - automod_rule created; -}; - -/** @brief Update automod rule */ -struct DPP_EXPORT automod_rule_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on. CAN BE NULL - * for log events originating from the cluster object - * @param raw Raw event text as JSON - */ - automod_rule_update_t(class discord_client* client, const std::string& raw); - /** - * @brief updated event - */ - automod_rule updated; -}; - -/** @brief Delete automod rule */ -struct DPP_EXPORT automod_rule_delete_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on. CAN BE NULL - * for log events originating from the cluster object - * @param raw Raw event text as JSON - */ - automod_rule_delete_t(class discord_client* client, const std::string& raw); - /** - * @brief updated event - */ - automod_rule deleted; -}; - -/** @brief Execute/trigger automod rule */ -struct DPP_EXPORT automod_rule_execute_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on. CAN BE NULL - * for log events originating from the cluster object - * @param raw Raw event text as JSON - */ - automod_rule_execute_t(class discord_client* client, const std::string& raw); - - snowflake guild_id; //!< the id of the guild in which action was executed - automod_action action; //!< the action which was executed - snowflake rule_id; //!< the id of the rule which action belongs to - automod_trigger_type rule_trigger_type; //!< the trigger type of rule which was triggered - snowflake user_id; //!< the id of the user which generated the content which triggered the rule - snowflake channel_id; //!< Optional: the id of the channel in which user content was posted - snowflake message_id; //!< Optional: the id of any user message which content belongs to - snowflake alert_system_message_id; //!< Optional: the id of any system auto moderation messages posted as a result of this action - std::string content; //!< the user generated text content - std::string matched_keyword; //!< the word or phrase configured in the rule that triggered the rule (may be empty) - std::string matched_content; //!< the substring in content that triggered the rule (may be empty) -}; - - - -/** @brief Create stage instance */ -struct DPP_EXPORT stage_instance_create_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on. CAN BE NULL - * for log events originating from the cluster object - * @param raw Raw event text as JSON - */ - stage_instance_create_t(class discord_client* client, const std::string& raw); - /** - * @brief created stage instance - */ - stage_instance created; -}; - -/** @brief Update stage instance */ -struct DPP_EXPORT stage_instance_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on. CAN BE NULL - * for log events originating from the cluster object - * @param raw Raw event text as JSON - */ - stage_instance_update_t(class discord_client* client, const std::string& raw); - /** - * @brief updated stage instance - */ - stage_instance updated; -}; - -/** @brief Delete stage instance */ -struct DPP_EXPORT stage_instance_delete_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on. CAN BE NULL - * for log events originating from the cluster object - * @param raw Raw event text as JSON - */ - stage_instance_delete_t(class discord_client* client, const std::string& raw); - /** - * @brief deleted stage instance - */ - stage_instance deleted; -}; - -/** @brief Voice state update */ -struct DPP_EXPORT voice_state_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - voice_state_update_t(class discord_client* client, const std::string& raw); - /** Voice state */ - voicestate state; -}; - -/** - * @brief Create interaction - */ -struct DPP_EXPORT interaction_create_t : public event_dispatch_t { - - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - interaction_create_t(class discord_client* client, const std::string& raw); - - - /** - * @brief Acknowledge interaction without displaying a message to the user, - * for use with button and select menu components. - * - * @param callback User function to execute when the api call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void reply(command_completion_event_t callback = utility::log_error()) const; - - /** - * @brief Send a reply for this interaction - * - * @param t Type of reply to send - * @param m Message object to send. Not all fields are supported by Discord. - * @param callback User function to execute when the api call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void reply(interaction_response_type t, const message & m, command_completion_event_t callback = utility::log_error()) const; - - /** - * @brief Send a reply for this interaction - * - * @param t Type of reply to send - * @param mt The string value to send, for simple text only messages - * @param callback User function to execute when the api call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void reply(interaction_response_type t, const std::string & mt, command_completion_event_t callback = utility::log_error()) const; - - /** - * @brief Send a reply for this interaction. - * Uses the default type of dpp::ir_channel_message_with_source, a simple message reply. - * - * @param m Message object to send. Not all fields are supported by Discord. - * @param callback User function to execute when the api call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void reply(const message & m, command_completion_event_t callback = utility::log_error()) const; - - /** - * @brief Send a reply for this interaction. - * Uses the default type of dpp::ir_channel_message_with_source, a simple message reply. - * - * @param mt The string value to send, for simple text only messages - * @param callback User function to execute when the api call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void reply(const std::string & mt, command_completion_event_t callback = utility::log_error()) const; - - /** - * @brief Reply to interaction with a dialog box - * - * @param mr Dialog box response to send - * @param callback User function to execute when the api call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void dialog(const interaction_modal_response& mr, command_completion_event_t callback = utility::log_error()) const; - - /** - * @brief Edit the response for this interaction - * - * @param m Message object to send. Not all fields are supported by Discord. - * @param callback User function to execute when the api call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void edit_response(const message & m, command_completion_event_t callback = utility::log_error()) const; - - /** - * @brief Edit the response for this interaction - * - * @param mt The string value to send, for simple text only messages - * @param callback User function to execute when the api call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void edit_response(const std::string & mt, command_completion_event_t callback = utility::log_error()) const; - - /** - * @brief Set the bot to 'thinking' state where you have up to 15 minutes to respond - * - * @param ephemeral True if the thinking state should be ephemeral - * @param callback User function to execute when the api call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void thinking(bool ephemeral = false, command_completion_event_t callback = utility::log_error()) const; - - /** - * @brief Get original response message for this interaction - * - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::message object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void get_original_response(command_completion_event_t callback) const; - - /** - * @brief Edit original response message for this interaction - * - * @param m Message object to send. Not all fields are supported by Discord. - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::message object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void edit_original_response(const message & m, command_completion_event_t callback = utility::log_error()) const; - - /** - * @brief Delete original response message for this interaction. This cannot be used on an ephemeral interaction response. - * - * @param callback Function to call when the API call completes. - * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). - */ - void delete_original_response(command_completion_event_t callback = utility::log_error()) const; - - /** - * @brief Get a command line parameter - * - * @note Doesn't work on subcommands. If you want to get a parameter from a subcommand, you have to loop through the options by yourself. - * - * @param name The command line parameter to retrieve - * @return const command_value& If the command line parameter does not - * exist, an empty variant is returned. - */ - const virtual command_value& get_parameter(const std::string& name) const; - - /** - * @brief command interaction - */ - interaction command; - - /** - * @brief Destroy this object - */ - virtual ~interaction_create_t() = default; -}; - -/** - * @brief User has issued a slash command - */ -struct DPP_EXPORT slashcommand_t : public interaction_create_t { -public: - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - slashcommand_t(class discord_client* client, const std::string& raw); -}; - -/** - * @brief Click on button - */ -struct DPP_EXPORT button_click_t : public interaction_create_t { -private: - using interaction_create_t::get_parameter; -public: - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - button_click_t(class discord_client* client, const std::string& raw); - - /** - * @brief button custom id - */ - std::string custom_id; - /** - * @brief component type - */ - uint8_t component_type; -}; - -struct DPP_EXPORT form_submit_t : public interaction_create_t { -private: - using interaction_create_t::get_parameter; -public: - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - form_submit_t(class discord_client* client, const std::string& raw); - - /** - * @brief button custom id - */ - std::string custom_id; - /** - * @brief Message components for form reply - */ - std::vector components; -}; - -/** - * @brief Discord requests that we fill a list of auto completion choices for a command option - */ -struct DPP_EXPORT autocomplete_t : public interaction_create_t { -private: - using interaction_create_t::get_parameter; -public: - - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - autocomplete_t(class discord_client* client, const std::string& raw); - - /** - * @brief Command ID - */ - dpp::snowflake id; - - /** - * @brief Command name - */ - std::string name; - - /** - * @brief auto completion options - */ - std::vector options; -}; - -/** - * @brief Base class for context menu interactions, e.g. right click on - * user or message. - */ -struct DPP_EXPORT context_menu_t : public interaction_create_t { -public: - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - context_menu_t(class discord_client* client, const std::string& raw); -}; - -/** - * @brief Event parameter for context menu interactions for messages - */ -struct DPP_EXPORT message_context_menu_t : public context_menu_t { - - /** - * @brief Related message - */ - message ctx_message; -public: - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - message_context_menu_t(class discord_client* client, const std::string& raw); - - /** - * @brief Get the message which was right-clicked on - * - * @return message right-clicked on - */ - message get_message() const; - - /** - * @brief Set the message object for this event - * - * @param m message to set - * @return message_context_menu_t& reference to self for fluent chaining - */ - message_context_menu_t& set_message(const message& m); -}; - -/** - * @brief Event parameter for context menu interactions for users - */ -struct DPP_EXPORT user_context_menu_t : public context_menu_t { - - /** - * @brief Related user - */ - user ctx_user; -public: - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - user_context_menu_t(class discord_client* client, const std::string& raw); - - /** - * @brief Get the user which was right-clicked on - * - * @return user right clicked on - */ - user get_user() const; - - /** - * @brief Set the user object for this event - * - * @param u user to set - * @return user_context_menu_t& reference to self for fluent chaining - */ - user_context_menu_t& set_user(const user& u); - -}; - -/** - * @brief Click on select - */ -struct DPP_EXPORT select_click_t : public interaction_create_t { -private: - using interaction_create_t::get_parameter; -public: - - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - select_click_t(class discord_client* client, const std::string& raw); - - /** - * @brief select menu custom id - */ - std::string custom_id; - /** - * @brief select menu values - */ - std::vector values; - /** - * @brief select menu component type (dpp::component_type) - */ - uint8_t component_type; -}; - - -/** @brief Delete guild */ -struct DPP_EXPORT guild_delete_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_delete_t(class discord_client* client, const std::string& raw); - /** Deleted guild */ - guild* deleted; -}; - -/** @brief Update guild stickers */ -struct DPP_EXPORT guild_stickers_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_stickers_update_t(class discord_client* client, const std::string& raw); - /** Updating guild */ - guild* updating_guild; - /** - * @brief stickers being updated - */ - std::vector stickers; -}; - -/** @brief Guild join request delete (user declined membership screening) */ -struct DPP_EXPORT guild_join_request_delete_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_join_request_delete_t(class discord_client* client, const std::string& raw); - /** Deleted guild */ - snowflake guild_id; - /** - * @brief user id - */ - snowflake user_id; -}; - -/** @brief Delete channel */ -struct DPP_EXPORT channel_delete_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - channel_delete_t(class discord_client* client, const std::string& raw); - /** - * @brief guild channel is being deleted from - */ - guild* deleting_guild; - /** - * @brief channel being deleted - */ - channel* deleted; -}; - -/** @brief Update channel */ -struct DPP_EXPORT channel_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - channel_update_t(class discord_client* client, const std::string& raw); - /** - * @brief guild channel is being updated on - */ - guild* updating_guild; - /** - * @brief channel being updated - */ - channel* updated; -}; - -/** @brief Session ready */ -struct DPP_EXPORT ready_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - ready_t(class discord_client* client, const std::string& raw); - /** - * @brief websocket session id - */ - std::string session_id; - /** - * @brief shard id - */ - uint32_t shard_id; -}; - -/** @brief Message Deleted */ -struct DPP_EXPORT message_delete_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - message_delete_t(class discord_client* client, const std::string& raw); - /** - * @brief message being deleted - */ - message* deleted; -}; - -/** @brief Guild member remove */ -struct DPP_EXPORT guild_member_remove_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_member_remove_t(class discord_client* client, const std::string& raw); - /** - * @brief guild user is being removed from - */ - guild* removing_guild; - /** - * @brief user being removed - */ - user* removed; -}; - -/** @brief Session resumed */ -struct DPP_EXPORT resumed_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - resumed_t(class discord_client* client, const std::string& raw); - /** - * @brief websocket session id - */ - std::string session_id; - /** - * @brief shard id - */ - uint32_t shard_id; -}; - -/** @brief Guild role create */ -struct DPP_EXPORT guild_role_create_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_role_create_t(class discord_client* client, const std::string& raw); - /** - * @brief guild role is being created on - */ - guild* creating_guild; - /** - * @brief role being created - */ - role* created; -}; - -/** @brief Typing start */ -struct DPP_EXPORT typing_start_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - typing_start_t(class discord_client* client, const std::string& raw); - /** - * @brief guild user is typing on - */ - guild* typing_guild; - /** - * @brief channel user is typing on - */ - channel* typing_channel; - /** - * @brief user who is typing. - * Can be nullptr if user is not cached - */ - user* typing_user; - /** - * @brief User id of user typing. - * Always set regardless of caching - */ - snowflake user_id; - /** - * @brief Time of typing event - */ - time_t timestamp; -}; - -/** @brief Voice state update */ -struct DPP_EXPORT voice_track_marker_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on. - * Will always be null. - * @param raw Raw event text as JSON. - * Will always be empty. - */ - voice_track_marker_t(class discord_client* client, const std::string& raw); - /** Voice client */ - class discord_voice_client* voice_client; - /** Track metadata */ - std::string track_meta; -}; - - -/** @brief Message reaction add */ -struct DPP_EXPORT message_reaction_add_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - message_reaction_add_t(class discord_client* client, const std::string& raw); - /** - * @brief Guild reaction occurred on - */ - guild* reacting_guild; - /** - * @brief User who reacted - */ - user reacting_user; - /** - * @brief member data of user who reacted - */ - guild_member reacting_member; - /** - * @brief channel the reaction happened on - */ - channel* reacting_channel; - /** - * @brief emoji of reaction - */ - emoji reacting_emoji; - /** - * @brief message id of the message reacted upon - */ - snowflake message_id; -}; - -/** @brief Guild members chunk */ -struct DPP_EXPORT guild_members_chunk_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_members_chunk_t(class discord_client* client, const std::string& raw); - /** - * @brief guild the members chunk is for - */ - guild* adding; - /** - * @brief list of members in the chunk - */ - guild_member_map* members; -}; - -/** @brief Message reaction remove */ -struct DPP_EXPORT message_reaction_remove_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - message_reaction_remove_t(class discord_client* client, const std::string& raw); - /** - * @brief Guild reaction occurred on - */ - guild* reacting_guild; - /** - * @brief User who reacted - */ - dpp::snowflake reacting_user_id; - /** - * @brief channel the reaction happened on - */ - channel* reacting_channel; - /** - * @brief emoji of reaction - */ - emoji reacting_emoji; - /** - * @brief message id of the message reacted upon - */ - snowflake message_id; -}; - -/** @brief Create guild */ -struct DPP_EXPORT guild_create_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_create_t(class discord_client* client, const std::string& raw); - /** - * @brief guild that was created - */ - guild* created; - /** - * @brief List of presences of all users on the guild. - * - * This is only filled if you have the GUILD_PRESENCES - * privileged intent. - */ - presence_map presences; - /** - * @brief List of scheduled events in the guild - */ - scheduled_event_map scheduled_events; - /** - * @brief List of stage instances in the guild - */ - stage_instance_map stage_instances; - /** - * @brief List of threads in the guild - */ - thread_map threads; - /** - * @brief List of stickers in the guild - */ - sticker_map stickers; -}; - -/** @brief Create channel */ -struct DPP_EXPORT channel_create_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - channel_create_t(class discord_client* client, const std::string& raw); - /** - * @brief guild channel was created on - */ - guild* creating_guild; - /** - * @brief channel that was created - */ - channel* created; -}; - -/** @brief Message remove emoji */ -struct DPP_EXPORT message_reaction_remove_emoji_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - message_reaction_remove_emoji_t(class discord_client* client, const std::string& raw); - /** - * @brief Guild reaction occurred on - */ - guild* reacting_guild; - /** - * @brief channel the reaction happened on - */ - channel* reacting_channel; - /** - * @brief emoji of reaction - */ - emoji reacting_emoji; - /** - * @brief message id of the message reacted upon - */ - snowflake message_id; -}; - -/** @brief Message delete bulk */ -struct DPP_EXPORT message_delete_bulk_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - message_delete_bulk_t(class discord_client* client, const std::string& raw); - /** - * @brief guild messages are being deleted upon - */ - guild* deleting_guild; - /** - * @brief user who is deleting the messages - */ - user* deleting_user; - /** - * @brief channel messages are being deleted from - */ - channel* deleting_channel; - /** - * @brief list of message ids of deleted messages - */ - std::vector deleted; -}; - -/** @brief Guild role update */ -struct DPP_EXPORT guild_role_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_role_update_t(class discord_client* client, const std::string& raw); - /** - * @brief guild where roles are being updated - */ - guild* updating_guild; - /** - * @brief the role being updated - */ - role* updated; -}; - -/** @brief Guild role delete */ -struct DPP_EXPORT guild_role_delete_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_role_delete_t(class discord_client* client, const std::string& raw); - /** - * @brief guild where role is being deleted - */ - guild* deleting_guild; - /** - * @brief role being deleted - */ - role* deleted; - /** - * @brief ID of the deleted role - */ - snowflake role_id; -}; - -/** @brief Channel pins update */ -struct DPP_EXPORT channel_pins_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - channel_pins_update_t(class discord_client* client, const std::string& raw); - /** - * @brief guild where message is being pinned - */ - guild* pin_guild; - /** - * @brief channel where message is being pinned - */ - channel* pin_channel; - /** - * @brief timestamp of pin - */ - time_t timestamp; -}; - -/** @brief Message remove all reactions */ -struct DPP_EXPORT message_reaction_remove_all_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - message_reaction_remove_all_t(class discord_client* client, const std::string& raw); - /** - * @brief Guild reaction occurred on - */ - guild* reacting_guild; - /** - * @brief channel the reaction happened on - */ - channel* reacting_channel; - /** - * @brief message id of the message reacted upon - */ - snowflake message_id; - -}; - -/** @brief Voice server update */ -struct DPP_EXPORT voice_server_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - voice_server_update_t(class discord_client* client, const std::string& raw); - /** - * @brief guild id where voice server updated - */ - snowflake guild_id; - /** - * @brief voice server token, used to connect to vc - */ - std::string token; - /** - * @brief voice server endpoint wss:// address - * - */ - std::string endpoint; -}; - -/** @brief Guild emojis update */ -struct DPP_EXPORT guild_emojis_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_emojis_update_t(class discord_client* client, const std::string& raw); - /** - * @brief snowflake ids of list of emojis - */ - std::vector emojis; - /** - * @brief guild where emojis are being updated - */ - guild* updating_guild; -}; - -/** - * @brief Presence update - * - */ -struct DPP_EXPORT presence_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - presence_update_t(class discord_client* client, const std::string& raw); - /** - * @brief rich presence being updated - */ - presence rich_presence; -}; - -/** @brief Webhooks update */ -struct DPP_EXPORT webhooks_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - webhooks_update_t(class discord_client* client, const std::string& raw); - /** - * @brief guild where webhooks are being updated - */ - guild* webhook_guild; - /** - * @brief channel where webhooks are being updated - */ - channel* webhook_channel; -}; - -/** @brief Guild member add */ -struct DPP_EXPORT guild_member_add_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_member_add_t(class discord_client* client, const std::string& raw); - /** - * @brief guild which gained new member - */ - guild* adding_guild; - /** - * @brief member which was added - */ - guild_member added; -}; - -/** @brief Invite delete */ -struct DPP_EXPORT invite_delete_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - invite_delete_t(class discord_client* client, const std::string& raw); - /** - * @brief the deleted invite - */ - invite deleted_invite; -}; - -/** @brief Guild update */ -struct DPP_EXPORT guild_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_update_t(class discord_client* client, const std::string& raw); - /** - * @brief guild being updated - */ - guild* updated; -}; - -/** @brief Guild integrations update */ -struct DPP_EXPORT guild_integrations_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_integrations_update_t(class discord_client* client, const std::string& raw); - /** - * @brief guild where integrations are being updated - */ - guild* updating_guild; -}; - -/** @brief Guild member update */ -struct DPP_EXPORT guild_member_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_member_update_t(class discord_client* client, const std::string& raw); - /** - * @brief guild where member is being updated - */ - guild* updating_guild; - /** - * @brief member being updated - */ - guild_member updated; -}; - -/** @brief Invite create */ -struct DPP_EXPORT invite_create_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - invite_create_t(class discord_client* client, const std::string& raw); - /** - * @brief created invite - */ - invite created_invite; -}; - -/** @brief Message update */ -struct DPP_EXPORT message_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - message_update_t(class discord_client* client, const std::string& raw); - /** - * @brief message being updated - */ - message msg; -}; - -/** @brief User update */ -struct DPP_EXPORT user_update_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - user_update_t(class discord_client* client, const std::string& raw); - /** - * @brief user being updated - */ - user updated; -}; - -/** @brief Create message */ -struct DPP_EXPORT message_create_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - message_create_t(class discord_client* client, const std::string& raw); - /** - * @brief message that was created (sent). - */ - message msg; - /** - * @brief Send a text to the same channel as the channel_id in received event. - * @param m Text to send - * @param callback User function to execute once the API call completes. - * @note confirmation_callback_t::value contains a message object on success. On failure, value is undefined and confirmation_callback_t::is_error() is true. - */ - void send(const std::string& m, command_completion_event_t callback = utility::log_error()) const; - /** - * @brief Send a message to the same channel as the channel_id in received event. - * @param msg Message to send - * @param callback User function to execute once the API call completes. - * @note confirmation_callback_t::value contains a message object on success. On failure, value is undefined and confirmation_callback_t::is_error() is true. - */ - void send(message& msg, command_completion_event_t callback = utility::log_error()) const; - /** - * @brief Send a message to the same channel as the channel_id in received event. - * @param msg Message to send - * @param callback User function to execute once the API call completes. - * @note confirmation_callback_t::value contains a message object on success. On failure, value is undefined and confirmation_callback_t::is_error() is true. - */ - void send(message&& msg, command_completion_event_t callback = utility::log_error()) const; - /** - * @brief Reply to the message received in the event. - * @param m Text to send - * @param mention_replied_user mentions (pings) the author of message replied to, if true - * @param callback User function to execute once the API call completes. - * @note confirmation_callback_t::value contains a message object on success. On failure, value is undefined and confirmation_callback_t::is_error() is true. - */ - void reply(const std::string& m, bool mention_replied_user = false, command_completion_event_t callback = utility::log_error()) const; - /** - * @brief Reply to the message received in the event. - * @param msg Message to send as a reply. - * @param mention_replied_user mentions (pings) the author of message replied to, if true - * @param callback User function to execute once the API call completes. - * @note confirmation_callback_t::value contains a message object on success. On failure, value is undefined and confirmation_callback_t::is_error() is true. - */ - void reply(message& msg, bool mention_replied_user = false, command_completion_event_t callback = utility::log_error()) const; - /** - * @brief Reply to the message received in the event. - * @param msg Message to send as a reply. - * @param mention_replied_user mentions (pings) the author of message replied to, if true - * @param callback User function to execute once the API call completes. - * @note confirmation_callback_t::value contains a message object on success. On failure, value is undefined and confirmation_callback_t::is_error() is true. - */ - void reply(message&& msg, bool mention_replied_user = false, command_completion_event_t callback = utility::log_error()) const; -}; - -/** @brief Guild ban add */ -struct DPP_EXPORT guild_ban_add_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_ban_add_t(class discord_client* client, const std::string& raw); - /** - * @brief guild where ban was added - */ - guild* banning_guild; - /** - * @brief user being banned - */ - user banned; -}; - -/** @brief Guild ban remove */ -struct DPP_EXPORT guild_ban_remove_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - guild_ban_remove_t(class discord_client* client, const std::string& raw); - /** - * @brief guild where ban is being removed - */ - guild* unbanning_guild; - /** - * @brief user being unbanned - */ - user unbanned; -}; - -/** @brief Integration create */ -struct DPP_EXPORT integration_create_t : public event_dispatch_t { - /** Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - integration_create_t(class discord_client* client, const std::string& raw); - /** - * @brief created integration - */ - integration created_integration; -}; - -/** @brief Integration update */ -struct DPP_EXPORT integration_update_t : public event_dispatch_t { - /** - * @brief Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - integration_update_t(class discord_client* client, const std::string& raw); - /** - * @brief updated integration - */ - integration updated_integration; -}; - -/** @brief Integration delete */ -struct DPP_EXPORT integration_delete_t : public event_dispatch_t { - /** - * @brief Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - integration_delete_t(class discord_client* client, const std::string& raw); - /** - * @brief deleted integration - */ - integration deleted_integration; -}; - -/** @brief Thread Create*/ -struct DPP_EXPORT thread_create_t : public event_dispatch_t { - /** - * @brief Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - thread_create_t(class discord_client* client, const std::string& raw); - /** - * @brief guild where thread was created - */ - guild* creating_guild; - /** - * @brief thread created - */ - thread created; -}; - -/** @brief Thread Update -*/ -struct DPP_EXPORT thread_update_t : public event_dispatch_t { - /** - * @brief Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - thread_update_t(class discord_client* client, const std::string& raw); - /** - * @brief guild where thread was updated - */ - guild* updating_guild; - /** - * @brief thread updated - */ - thread updated; -}; - -/** @brief Thread Delete - */ -struct DPP_EXPORT thread_delete_t : public event_dispatch_t { - /** - * @brief Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - thread_delete_t(class discord_client* client, const std::string& raw); - /** - * @brief guild where thread was deleted - */ - guild* deleting_guild; - /** - * @brief thread deleted - */ - thread deleted; -}; - -/** @brief Thread List Sync - */ -struct DPP_EXPORT thread_list_sync_t : public event_dispatch_t { - /** - * @brief Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - thread_list_sync_t(class discord_client* client, const std::string& raw); - /** - * @brief guild where thread list was synchronised - */ - guild* updating_guild; - /** - * @brief list of threads (channels) synchronised - */ - std::vector threads; - /** - * @brief list of thread members for the channels (threads) - */ - std::vector members; -}; - -/** @brief Thread Member Update - */ -struct DPP_EXPORT thread_member_update_t : public event_dispatch_t { - /** - * @brief Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - thread_member_update_t(class discord_client* client, const std::string& raw); - /** - * @brief updated thread member - */ - thread_member updated; -}; - -/** @brief Thread Members Update - */ -struct DPP_EXPORT thread_members_update_t : public event_dispatch_t { - /** - * @brief Constructor - * @param client The shard the event originated on - * @param raw Raw event text as JSON - */ - thread_members_update_t(class discord_client* client, const std::string& raw); - /** - * @brief thread (channel) id - */ - snowflake thread_id; - /** - * @brief guild thread members updated on - */ - guild* updating_guild; - /** - * @brief new approximate member count - */ - uint8_t member_count; - /** - * @brief added members - */ - std::vector added; - /** - * @brief ids only of removed members - */ - std::vector removed_ids; -}; - -/** @brief voice buffer send - */ -struct DPP_EXPORT voice_buffer_send_t : public event_dispatch_t { - /** - * @brief Constructor - * @param client The shard the event originated on - * WILL ALWAYS be NULL. - * @param raw Raw event text as JSON - */ - voice_buffer_send_t(class discord_client* client, const std::string &raw); - /** - * @brief voice client where buffer was sent - */ - class discord_voice_client* voice_client; - /** - * @brief encoded size of sent buffer - */ - int buffer_size; -}; - -/** @brief voice user talking */ -struct DPP_EXPORT voice_user_talking_t : public event_dispatch_t { - /** - * @brief Constructor - * @param client The shard the event originated on - * WILL ALWAYS be NULL. - * @param raw Raw event text as JSON - */ - voice_user_talking_t(class discord_client* client, const std::string &raw); - /** - * @brief voice client where user is talking - */ - class discord_voice_client* voice_client; - /** - * @brief talking user id - */ - snowflake user_id; - /** - * @brief flags for talking user - */ - uint8_t talking_flags; -}; - -/** @brief voice user talking */ -struct DPP_EXPORT voice_ready_t : public event_dispatch_t { - /** - * @brief Constructor - * @param client The shard the event originated on - * WILL ALWAYS be NULL. - * @param raw Raw event text as JSON - */ - voice_ready_t(class discord_client* client, const std::string &raw); - /** - * @brief voice client which is ready - */ - class discord_voice_client* voice_client; - /** - * @brief id of voice channel - */ - snowflake voice_channel_id; -}; - -/** @brief voice receive packet */ -struct DPP_EXPORT voice_receive_t : public event_dispatch_t { - -friend class discord_voice_client; - - /** - * @brief Constructor - * @param client The shard the event originated on. - * WILL ALWAYS be NULL. - * @param raw Raw event text as UDP packet. - */ - voice_receive_t(class discord_client* client, const std::string &raw); - /** - * @brief Construct a new voice receive t object - * - * @param client The shard the event originated on. - * WILL ALWAYS be NULL. - * @param raw Raw event text as UDP packet. - * @param vc owning voice client pointer - * @param _user_id user id who is speaking, 0 for a mix of all user audio - * @param pcm user audio to set - * @param length length of user audio in bytes - */ - voice_receive_t(class discord_client* client, const std::string &raw, class discord_voice_client* vc, snowflake _user_id, uint8_t* pcm, size_t length); - /** - * @brief Voice client - */ - class discord_voice_client* voice_client; - /** - * @brief Audio data, encoded as 48kHz stereo PCM or Opus, - * @deprecated Please switch to using audio_data. - */ - uint8_t* audio = nullptr; - /** - * @brief Size of audio buffer - * @deprecated Please switch to using audio_data. - */ - size_t audio_size = 0; - /** - * @brief Audio data, encoded as 48kHz stereo PCM or Opus, - */ - std::basic_string audio_data; - /** - * @brief User ID of speaker (zero if unknown) - */ - snowflake user_id; -protected: - /** - * @brief Reassign values outside of the constructor for use within discord_voice_client - * - * @param vc owning voice client pointer - * @param _user_id user id who is speaking, 0 for a mix of all user audio - * @param pcm user audio to set - * @param length length of user audio in bytes - */ - void reassign(class discord_voice_client* vc, snowflake _user_id, uint8_t* pcm, size_t length); -}; - -/** @brief voice client speaking event */ -struct DPP_EXPORT voice_client_speaking_t : public event_dispatch_t { - /** - * @brief Constructor - * @param client The shard the event originated on. - * WILL ALWAYS be NULL. - * @param raw Raw event text as JSON - */ - voice_client_speaking_t(class discord_client* client, const std::string &raw); - /** - * @brief voice client where user is speaking - */ - class discord_voice_client* voice_client; - /** - * @brief speaking user id - * - */ - snowflake user_id; - /** - * @brief ssrc value of speaking user - */ - uint32_t ssrc; -}; - -/** @brief voice client disconnect event */ -struct DPP_EXPORT voice_client_disconnect_t : public event_dispatch_t { - /** - * @brief Constructor - * @param client The shard the event originated on. - * WILL ALWAYS be NULL. - * @param raw Raw event text as JSON - */ - voice_client_disconnect_t(class discord_client* client, const std::string &raw); - /** - * @brief voice client where user disconnected - */ - class discord_voice_client* voice_client; - /** - * @brief user id of user who left vc - */ - snowflake user_id; -}; - -}; - diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/dns.h b/Source/ThirdParty/DPPLibrary/include/dpp/dns.h deleted file mode 100644 index 23d5b1b..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/dns.h +++ /dev/null @@ -1,76 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#ifdef _WIN32 -#include -#include -#else -#include -#include -#include -#endif -#include -#include -#include - -namespace dpp { - - /** - * @brief Represents a cached DNS result. - * Used by the ssl_client class to store cached copies of dns lookups. - */ - struct dns_cache_entry { - /** - * @brief Resolved address information - */ - addrinfo addr; - - /** - * @brief Socket address. - * Discord only supports ipv4, but sockaddr_in6 is larger - * than sockaddr_in, sockaddr_storage will hold either. This - * means that if discord ever do support ipv6 we just flip - * one value in dns.cpp and that should be all that is needed. - */ - sockaddr_storage ai_addr; - - /** - * @brief Time at which this cache entry is invalidated - */ - time_t expire_timestamp; - }; - - /** - * @brief Cache container type - */ - using dns_cache_t = std::unordered_map; - - /** - * @brief Resolve a hostname to an addrinfo - * - * @param hostname Hostname to resolve - * @param port A port number or named service, e.g. "80" - * @return dns_cache_entry* First IP address associated with the hostname DNS record - * @throw dpp::connection_exception On failure to resolve hostname - */ - const dns_cache_entry* resolve_hostname(const std::string& hostname, const std::string& port); -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/dpp.h b/Source/ThirdParty/DPPLibrary/include/dpp/dpp.h deleted file mode 100644 index 3e3d0b5..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/dpp.h +++ /dev/null @@ -1,74 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/dtemplate.h b/Source/ThirdParty/DPPLibrary/include/dpp/dtemplate.h deleted file mode 100644 index ceb9ee0..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/dtemplate.h +++ /dev/null @@ -1,103 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Represents a guild template - */ -class DPP_EXPORT dtemplate : public json_interface { -public: - /** - * @brief Template code - */ - std::string code; - /** - * @brief Template name - */ - std::string name; - /** - * @brief Template description - */ - std::string description; - /** - * @brief Usage counter - */ - uint32_t usage_count; - /** - * @brief User ID of creator - */ - snowflake creator_id; - /** - * @brief Creation date/time - * - */ - time_t created_at; - /** - * @brief Last update date/time - */ - time_t updated_at; - /** - * @brief Guild id the template is created from - */ - snowflake source_guild_id; - /** - * @brief True if needs synchronising - */ - bool is_dirty; - - /** - * @brief Construct a new dtemplate object - */ - dtemplate(); - - /** - * @brief Destroy the dtemplate object - */ - virtual ~dtemplate() = default; - - /** Read class values from json object - * @param j A json object to read from - * @return A reference to self - */ - dtemplate& fill_from_json(nlohmann::json* j); - - /** - * @brief Build the JSON for this object - * - * @param with_id Add ID to output - * @return std::string JSON content - */ - std::string build_json(bool with_id = false) const; - -}; - -/** A container of invites */ -typedef std::unordered_map dtemplate_map; - - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/emoji.h b/Source/ThirdParty/DPPLibrary/include/dpp/emoji.h deleted file mode 100644 index 0dd7b7f..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/emoji.h +++ /dev/null @@ -1,177 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include - -namespace dpp { - -#define MAX_EMOJI_SIZE 256 * 1024 - -/** - * @brief Flags for dpp::emoji - */ -enum emoji_flags : uint8_t { - /// Emoji requires colons - e_require_colons = 0b00000001, - /// Managed (introduced by application) - e_managed = 0b00000010, - /// Animated - e_animated = 0b00000100, - /// Available (false if the guild doesn't meet boosting criteria, etc) - e_available = 0b00001000, -}; - -/** - * @brief Represents an emoji for a dpp::guild - */ -class DPP_EXPORT emoji : public managed, public json_interface { -public: - /** - * @brief Emoji name - */ - std::string name; - /** - * @brief User id who uploaded the emoji - */ - snowflake user_id; - /** - * @brief Flags for the emoji from dpp::emoji_flags - */ - uint8_t flags; - /** - * @brief Image data for the emoji if uploading - */ - std::string* image_data; - - /** - * @brief Construct a new emoji object - */ - emoji(); - - /** - * @brief Construct a new emoji object with name, ID and flags - * - * @param n The emoji's name - * @param i ID, if it has one (unicode does not) - * @param f Emoji flags (emoji_flags) - */ - emoji(const std::string n, const snowflake i = 0, const uint8_t f = 0); - - /** - * @brief Destroy the emoji object - */ - virtual ~emoji(); - - /** - * @brief Create a mentionable emoji - * @param name The name of the emoji. - * @param id The ID of the emoji. - * @param is_animated is emoji animated. - * @return std::string The formatted mention of the emoji. - */ - static std::string get_mention(const std::string& name, const snowflake& id, bool is_animated = false); - - /** - * @brief Read class values from json object - * - * @param j A json object to read from - * @return A reference to self - */ - emoji& fill_from_json(nlohmann::json* j); - - /** - * @brief Build the json for this object - * - * @param with_id include the id in the JSON - * @return std::string json data - */ - std::string build_json(bool with_id = false) const; - - /** - * @brief Emoji requires colons - * - * @return true Requires colons - * @return false Does not require colons - */ - bool requires_colons() const; - - /** - * @brief Emoji is managed - * - * @return true Is managed - * @return false Is not managed - */ - bool is_managed() const; - - /** - * @brief Emoji is animated - * - * @return true Is animated - * @return false Is noy animated - */ - bool is_animated() const; - - /** - * @brief Is available - * - * @return true Is available - * @return false Is unavailable - */ - bool is_available() const; - - /** - * @brief Load an image into the object as base64 - * - * @param image_blob Image binary data - * @param type Type of image. It can be one of `i_gif`, `i_jpg` or `i_png`. - * @return emoji& Reference to self - * @throw dpp::length_exception Image content exceeds discord maximum of 256 kilobytes - */ - emoji& load_image(const std::string &image_blob, const image_type type); - - /** - * @brief Format to name if unicode, name:id if has id or a:name:id if animated - * - * @return Formatted name for reactions - */ - std::string format() const; - - /** - * @brief Get the mention/ping for the emoji - * - * @return std::string mention - */ - std::string get_mention() const; -}; - -/** - * @brief Group of emojis - */ -typedef std::unordered_map emoji_map; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/etf.h b/Source/ThirdParty/DPPLibrary/include/dpp/etf.h deleted file mode 100644 index 4856bcd..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/etf.h +++ /dev/null @@ -1,642 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Parts of this file inspired by, or outright copied from erlpack: - * https://github.com/discord/erlpack/ - * - * Acknowledgements: - * - * sysdep.h: - * Based on work by FURUHASHI Sadayuki in msgpack-python - * (https://github.com/msgpack/msgpack-python) - * - * Copyright (C) 2008-2010 FURUHASHI Sadayuki - * Licensed under the Apache License, Version 2.0 (the "License"). - * - ************************************************************************************/ - -#pragma once -#include -#include -#include - -namespace dpp { - -/** Current ETF format version in use */ -const uint8_t FORMAT_VERSION = 131; - -/** - * @brief Represents a token which identifies the type of value which follows it - * in the ETF binary structure. - */ -enum etf_token_type : uint8_t { - /// 68 [Distribution header] - ett_distribution = 'D', - /// 70 [Float64:IEEE float] - ett_new_float = 'F', - /// 77 [UInt32:Len, UInt8:Bits, Len:Data] - ett_bit_binary = 'M', - /// 80 [UInt4:UncompressedSize, N:ZlibCompressedData] - ett_compressed = 'P', - /// 97 [UInt8:Int] - ett_smallint = 'a', - /// 98 [Int32:Int] - ett_integer = 'b', - /// 99 [31:Float String] Float in string format (formatted "%.20e", sscanf "%lf"). Superseded by ett_new_float - ett_float = 'c', - /// 100 [UInt16:Len, Len:AtomName] max Len is 255 - ett_atom = 'd', - /// 101 [atom:Node, UInt32:ID, UInt8:Creation] - ett_reference = 'e', - /// 102 [atom:Node, UInt32:ID, UInt8:Creation] - ett_port = 'f', - /// 103 [atom:Node, UInt32:ID, UInt32:Serial, UInt8:Creation] - ett_pid = 'g', - /// 104 [UInt8:Arity, N:Elements] - ett_small_tuple = 'h', - /// 105 [UInt32:Arity, N:Elements] - ett_large_tuple = 'i', - /// 106 empty list - ett_nil = 'j', - /// 107 [UInt16:Len, Len:Characters] - ett_string = 'k', - /// 108 [UInt32:Len, Elements, Tail] - ett_list = 'l', - /// 109 [UInt32:Len, Len:Data] - ett_binary = 'm', - /// 110 [UInt8:n, UInt8:Sign, n:nums] - ett_bigint_small = 'n', - /// 111 [UInt32:n, UInt8:Sign, n:nums] - ett_bigint_large = 'o', - /// 112 [UInt32:Size, UInt8:Arity, 16*Uint6-MD5:Uniq, UInt32:Index, UInt32:NumFree, atom:Module, int:OldIndex, int:OldUniq, pid:Pid, NunFree*ext:FreeVars] - ett_new_function = 'p', - /// 113 [atom:Module, atom:Function, smallint:Arity] - ett_export = 'q', - /// 114 [UInt16:Len, atom:Node, UInt8:Creation, Len*UInt32:ID] - ett_new_reference = 'r', - /// 115 [UInt8:Len, Len:AtomName] - ett_atom_small = 's', - /// 116 [UInt32:Airty, N:Pairs] - ett_map = 't', - /// 117 [UInt4:NumFree, pid:Pid, atom:Module, int:Index, int:Uniq, NumFree*ext:FreeVars] - ett_function = 'u', - /// 118 [UInt16:Len, Len:AtomName] max Len is 255 characters (up to 4 bytes per) - ett_atom_utf8 = 'v', - /// 119 [UInt8:Len, Len:AtomName] - ett_atom_utf8_small = 'w' -}; - -/** - * @brief A horrible structure used within the ETF parser to convert uint64_t to double and back. - * This is horrible, but it is the official way erlang term format does this, so we can't really - * mess with it much. - */ -union type_punner { - /** - * @brief binary integer value - */ - uint64_t ui64; - /** - * @brief double floating point value - */ - double df; -}; - -/** - * @brief Represents a buffer of bytes being encoded into ETF - */ -struct DPP_EXPORT etf_buffer { - /** - * @brief Raw buffer - */ - std::vector buf; - /** - * @brief Current used length of buffer - * (this is different from buf.size() as it is pre-allocated - * using resize and may not all be in use) - */ - size_t length; - - /** - * @brief Construct a new etf buffer object - * - * @param initial initial buffer size to allocate - */ - etf_buffer(size_t initial); - - /** - * @brief Destroy the etf buffer object - */ - ~etf_buffer(); -}; - -/** - * @brief The etf_parser class can serialise and deserialise ETF (Erlang Term Format) - * into and out of an nlohmann::json object, so that layers above the websocket don't - * have to be any different for handling ETF. - */ -class DPP_EXPORT etf_parser { - - /** - * @brief Current size of binary data - */ - size_t size; - - /** - * @brief Current offset into binary data - */ - size_t offset; - - /** - * @brief Pointer to binary ETF data to be decoded - */ - uint8_t* data; - - /** - * @brief Parse a single value, and if that value contains other - * values (e.g. an array or map) then call itself recursively. - * - * @return nlohmann::json JSON value from the ETF - */ - nlohmann::json inner_parse(); - - /** - * @brief Read 8 bits of data from the buffer - * - * @return uint8_t data retrieved - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - uint8_t read_8_bits(); - - /** - * @brief Read 16 bits of data from the buffer - * - * @return uint16_t data retrieved - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - uint16_t read_16_bits(); - - /** - * @brief Read 32 bits of data from the buffer - * - * @return uint32_t data retrieved - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - uint32_t read_32_bits(); - - /** - * @brief Read 64 bits of data from the buffer - * - * @return uint64_t data retrieved - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - uint64_t read_64_bits(); - - /** - * @brief Read string data from the buffer - * - * @param length Length of string to retrieve - * @return const char* data retrieved - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - const char* read_string(uint32_t length); - - /** - * @brief Process an 'atom' value. - * An atom is a "label" or constant value within the data, - * such as a key name, nullptr, or false. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json process_atom(const char* atom, uint16_t length); - - /** - * @brief Decode an 'atom' value. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_atom(); - - /** - * @brief Decode a small 'atom' value. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_small_atom(); - - /** - * @brief Decode a small integer value (0-255). - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_small_integer(); - - /** - * @brief Decode an integer value (-MAXINT -> MAXINT-1). - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_integer(); - - /** - * @brief Decode an array of values. - * - * @return nlohmann::json values converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_array(uint32_t length); - - /** - * @brief Decode a list of values. - * - * @return nlohmann::json values converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_list(); - - /** - * @brief Decode a 'tuple' value. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_tuple(uint32_t length); - - /** - * @brief Decode a nil 'atom' value. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_nil(); - - /** - * @brief Decode a map (object) value. - * Will recurse to evaluate each member variable. - * - * @return nlohmann::json values converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_map(); - - /** - * @brief Decode a floating point numeric value. - * (depreciated in erlang but still expected to be supported) - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_float(); - - /** - * @brief Decode a floating type numeric value. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_new_float(); - - /** - * @brief Decode a 'bigint' value. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_bigint(uint32_t digits); - - /** - * @brief Decode a small 'bigint' value. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_bigint_small(); - - /** - * @brief Decode a large 'bigint' value. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_bigint_large(); - - /** - * @brief Decode a binary value. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_binary(); - - /** - * @brief Decode a string value. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_string(); - - /** - * @brief Decode a string list value. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_string_as_list(); - - /** - * @brief Decode a 'small tuple' value. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_tuple_small(); - - /** - * @brief Decode a 'large tuple' value. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_tuple_large(); - - /** - * @brief Decode a compressed value. - * This is a zlib-compressed binary blob which contains another - * ETF object. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_compressed(); - - /** - * @brief Decode a 'reference' value. - * Erlang expects this to be supported, in practice Discord doesn't send these right now. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_reference(); - - /** - * @brief Decode a 'new reference' value. - * Erlang expects this to be supported, in practice Discord doesn't send these right now. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_new_reference(); - - /** - * @brief Decode a 'port' value. - * Erlang expects this to be supported, in practice Discord doesn't send these right now. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_port(); - - /** - * @brief Decode a 'PID' value. - * Erlang expects this to be supported, in practice Discord doesn't send these right now. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_pid(); - - /** - * @brief Decode an 'export' value. - * Erlang expects this to be supported, in practice Discord doesn't send these right now. - * - * @return nlohmann::json value converted to JSON - * @throw dpp::exception Data stream isn't long enough to fetch requested bits - */ - nlohmann::json decode_export(); - - /** - * @brief Write to output buffer for creation of ETF from JSON - * - * @param pk buffer struct - * @param bytes byte buffer to write - * @param l number of bytes to write - * @throw std::exception Buffer cannot be extended - */ - void buffer_write(etf_buffer *pk, const char *bytes, size_t l); - - /** - * @brief Append version number to ETF buffer - * - * @param b buffer to append to - * @throw std::exception Buffer cannot be extended - */ - void append_version(etf_buffer *b); - - /** - * @brief Append nil value to ETF buffer - * - * @param b buffer to append to - * @throw std::exception Buffer cannot be extended - */ - void append_nil(etf_buffer *b); - - /** - * @brief Append false value to ETF buffer - * - * @param b buffer to append to - * @throw std::exception Buffer cannot be extended - */ - void append_false(etf_buffer *b); - - /** - * @brief Append true value to ETF buffer - * - * @param b buffer to append to - * @throw std::exception Buffer cannot be extended - */ - void append_true(etf_buffer *b); - - /** - * @brief Append small integer value to ETF buffer - * - * @param b buffer to append to - * @param d double to append - * @throw std::exception Buffer cannot be extended - */ - void append_small_integer(etf_buffer *b, unsigned char d); - - /** - * @brief Append integer value to ETF buffer - * - * @param b buffer to append to - * @param d integer to append - * @throw std::exception Buffer cannot be extended - */ - void append_integer(etf_buffer *b, int32_t d); - - /** - * @brief Append 64 bit integer value to ETF buffer - * - * @param b buffer to append to - * @param d integer to append - * @throw std::exception Buffer cannot be extended - */ - void append_unsigned_long_long(etf_buffer *b, unsigned long long d); - - /** - * @brief Append 64 bit integer value to ETF buffer - * - * @param b buffer to append to - * @param d integer to append - * @throw std::exception Buffer cannot be extended - */ - void append_long_long(etf_buffer *b, long long d); - - /** - * @brief Append double value to ETF buffer - * - * @param b buffer to append to - * @param f double to append - * @throw std::exception Buffer cannot be extended - */ - void append_double(etf_buffer *b, double f); - - /** - * @brief Append atom value to ETF buffer - * - * @param b buffer to append to - * @param bytes pointer to string to append - * @param size size of string to append - * @throw std::exception Buffer cannot be extended - */ - void append_atom(etf_buffer *b, const char *bytes, size_t size); - - /** - * @brief Append utf8 atom value to ETF buffer - * - * @param b buffer to append to - * @param bytes pointer to string to append - * @param size size of string to append - * @throw std::exception Buffer cannot be extended - */ - void append_atom_utf8(etf_buffer *b, const char *bytes, size_t size); - - /** - * @brief Append binary value to ETF buffer - * - * @param b buffer to append to - * @param bytes pointer to string to append - * @param size size of string to append - * @throw std::exception Buffer cannot be extended - */ - void append_binary(etf_buffer *b, const char *bytes, size_t size); - - /** - * @brief Append string value to ETF buffer - * - * @param b buffer to append to - * @param bytes pointer to string to append - * @param size size of string to append - * @throw std::exception Buffer cannot be extended - */ - void append_string(etf_buffer *b, const char *bytes, size_t size); - - /** - * @brief Append tuple value to ETF buffer - * - * @param b buffer to append to - * @param size size of value to append - * @throw std::exception Buffer cannot be extended - */ - void append_tuple_header(etf_buffer *b, size_t size); - - /** - * @brief Append list terminator to ETF buffer - * - * @param b buffer to append to - * @throw std::exception Buffer cannot be extended - */ - void append_nil_ext(etf_buffer *b); - - /** - * @brief Append a list header value to ETF buffer - * - * @param b buffer to append to - * @param size size of values to append - * @throw std::exception Buffer cannot be extended - */ - void append_list_header(etf_buffer *b, size_t size); - - /** - * @brief Append a map header value to ETF buffer - * - * @param b buffer to append to - * @param size size of values to append - * @throw std::exception Buffer cannot be extended - */ - void append_map_header(etf_buffer *b, size_t size); - - /** - * @brief Build ETF buffer - * - * @param j JSON object to build from - * @param b Buffer to append to - * @throw std::exception Buffer cannot be extended - */ - void inner_build(const nlohmann::json* j, etf_buffer* b); - -public: - /** - * @brief Construct a new etf parser object - */ - etf_parser(); - - /** - * @brief Destroy the etf parser object - */ - ~etf_parser(); - - /** - * @brief Convert ETF binary content to nlohmann::json - * - * @param in Raw binary ETF data (generally from a websocket) - * @return nlohmann::json JSON data for use in the library - * @throw dpp::exception Malformed or otherwise invalid ETF content - */ - nlohmann::json parse(const std::string& in); - - /** - * @brief Create ETF binary data from nlohmann::json - * - * @param j JSON value to encode to ETF - * @return std::string raw ETF data. Note that this can - * and probably will contain null values, use std::string::data() - * and std::string::size() to manipulate or send it. - * @throw std::exception Not enough memory, or invalid data types/values - */ - std::string build(const nlohmann::json& j); -}; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/event.h b/Source/ThirdParty/DPPLibrary/include/dpp/event.h deleted file mode 100644 index f4e4398..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/event.h +++ /dev/null @@ -1,151 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include - -#define event_decl(x,wstype) /** @brief Internal event handler for wstype websocket events. Called for each websocket message of this type. @internal */ \ - class x : public event { public: virtual void handle(dpp::discord_client* client, nlohmann::json &j, const std::string &raw); }; - -namespace dpp { - -class discord_client; - -/** - * @brief The events namespace holds the internal event handlers for each websocket event. - * These are handled internally and also dispatched to the user code if the event is hooked. - */ -namespace events { - -/** - * @brief An event object represents an event handled internally, passed from the websocket e.g. MESSAGE_CREATE. - */ -class DPP_EXPORT event { -public: - /** Pure virtual method for event handler code - * @param client The creating shard - * @param j The json data of the event - * @param raw The raw event json - */ - virtual void handle(class discord_client* client, nlohmann::json &j, const std::string &raw) = 0; -}; - -/* Internal logger */ -event_decl(logger,LOG); - -/* Guilds */ -event_decl(guild_create,GUILD_CREATE); -event_decl(guild_update,GUILD_UPDATE); -event_decl(guild_delete,GUILD_DELETE); -event_decl(guild_ban_add,GUILD_BAN_ADD); -event_decl(guild_ban_remove,GUILD_BAN_REMOVE); -event_decl(guild_emojis_update,GUILD_EMOJIS_UPDATE); -event_decl(guild_integrations_update,GUILD_INTEGRATIONS_UPDATE); -event_decl(guild_join_request_delete,GUILD_JOIN_REQUEST_DELETE); -event_decl(guild_stickers_update,GUILD_STICKERS_UPDATE); - -/* Stage channels */ -event_decl(stage_instance_create,STAGE_INSTANCE_CREATE); -event_decl(stage_instance_update,STAGE_INSTANCE_UPDATE); -event_decl(stage_instance_delete,STAGE_INSTANCE_DELETE); - -/* Guild members */ -event_decl(guild_member_add,GUILD_MEMBER_ADD); -event_decl(guild_member_remove,GUILD_MEMBER_REMOVE); -event_decl(guild_members_chunk,GUILD_MEMBERS_CHUNK); -event_decl(guild_member_update,GUILD_MEMBERS_UPDATE); - -/* Guild roles */ -event_decl(guild_role_create,GUILD_ROLE_CREATE); -event_decl(guild_role_update,GUILD_ROLE_UPDATE); -event_decl(guild_role_delete,GUILD_ROLE_DELETE); - -/* Session state */ -event_decl(resumed,RESUMED); -event_decl(ready,READY); - -/* Channels */ -event_decl(channel_create,CHANNEL_CREATE); -event_decl(channel_update,CHANNEL_UPDATE); -event_decl(channel_delete,CHANNEL_DELETE); -event_decl(channel_pins_update,CHANNEL_PINS_UPDATE); - -/* Threads */ -event_decl(thread_create,THREAD_CREATE); -event_decl(thread_update,THREAD_UPDATE); -event_decl(thread_delete,THREAD_DELETE); -event_decl(thread_list_sync,THREAD_LIST_SYNC); -event_decl(thread_member_update,THREAD_MEMBER_UPDATE); -event_decl(thread_members_update,THREAD_MEMBERS_UPDATE); - -/* Messages */ -event_decl(message_create,MESSAGE_CREATE); -event_decl(message_update,MESSAGE_UPDATE); -event_decl(message_delete,MESSAGE_DELETE); -event_decl(message_delete_bulk,MESSAGE_DELETE_BULK); - -/* Presence/typing */ -event_decl(presence_update,PRESENCE_UPDATE); -event_decl(typing_start,TYPING_START); - -/* Users (outside of guild) */ -event_decl(user_update,USER_UPDATE); - -/* Message reactions */ -event_decl(message_reaction_add,MESSAGE_REACTION_ADD); -event_decl(message_reaction_remove,MESSAGE_REACTION_REMOVE); -event_decl(message_reaction_remove_all,MESSAGE_REACTION_REMOVE_ALL); -event_decl(message_reaction_remove_emoji,MESSAGE_REACTION_REMOVE_EMOJI); - -/* Invites */ -event_decl(invite_create,INVITE_CREATE); -event_decl(invite_delete,INVITE_DELETE); - -/* Voice */ -event_decl(voice_state_update,VOICE_STATE_UPDATE); -event_decl(voice_server_update,VOICE_SERVER_UPDATE); - -/* Webhooks */ -event_decl(webhooks_update,WEBHOOKS_UPDATE); - -/* Application commands */ -event_decl(interaction_create,INTERACTION_CREATE); - -/* Integrations */ -event_decl(integration_create,INTEGRATION_CREATE); -event_decl(integration_update,INTEGRATION_UPDATE); -event_decl(integration_delete,INTEGRATION_DELETE); - -/* Scheduled events */ -event_decl(guild_scheduled_event_create,GUILD_SCHEDULED_EVENT_CREATE); -event_decl(guild_scheduled_event_update,GUILD_SCHEDULED_EVENT_UPDATE); -event_decl(guild_scheduled_event_delete,GUILD_SCHEDULED_EVENT_DELETE); -event_decl(guild_scheduled_event_user_add,GUILD_SCHEDULED_EVENT_USER_ADD); -event_decl(guild_scheduled_event_user_remove,GUILD_SCHEDULED_EVENT_USER_REMOVE); - -/* Auto moderation */ -event_decl(automod_rule_create, AUTO_MODERATION_RULE_CREATE); -event_decl(automod_rule_update, AUTO_MODERATION_RULE_UPDATE); -event_decl(automod_rule_delete, AUTO_MODERATION_RULE_DELETE); -event_decl(automod_rule_execute, AUTO_MODERATION_ACTION_EXECUTION); - -}}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/event_router.h b/Source/ThirdParty/DPPLibrary/include/dpp/event_router.h deleted file mode 100644 index 4f901fd..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/event_router.h +++ /dev/null @@ -1,246 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using json = nlohmann::json; - -namespace dpp { - -/** - * @brief A returned event handle for an event which was attached - */ -typedef size_t event_handle; - -/** - * @brief Handles routing of an event to multiple listeners. - * - * Multiple listeners may attach to the event_router_t by means of operator(). Passing a - * lambda into operator() attaches to the event. - * - * Dispatchers of the event may call the event_router_t::call() method to cause all listeners - * to receive the event. - * - * The event_router_t::empty() method will return true if there are no listeners attached - * to the event_router_t (this can be used to save time by not constructing objects that - * nobody will ever see). - * - * The event_router_t::detach() method removes an existing listener from the event, - * using the event_handle ID returned by operator(). - * - * This class is used by the library to route all websocket events to listening code. - * - * Example: - * - * ```cpp - * // Declare an event that takes log_t as its parameter - * event_router_t my_event; - * - * // Attach a listener to the event - * event_handle id = my_event([&](const log_t& cc) { - * std::cout << cc.message << "\n"; - * }); - * - * // Construct a log_t and call the event (listeners will receive the log_t object) - * log_t lt; - * lt.message = "foo"; - * my_event.call(lt); - * - * // Detach from an event using the handle returned by operator() - * my_event.detach(id); - * ``` - * - * @tparam T type of single parameter passed to event lambda derived from event_dispatch_t - */ -template class event_router_t { -private: - friend class cluster; - - event_handle next_handle = 1; - - /** - * @brief Thread safety mutex - */ - mutable std::shared_mutex lock; - /** - * @brief Container of event listeners keyed by handle, - * as handles are handed out sequentially they will always - * be called in they order they are bound to the event - * as std::map is an ordered container. - */ - std::map> dispatch_container; - - -#ifdef DPP_CORO - /** - * @brief Container for event listeners (coroutines only) - */ - std::map> coroutine_container; -#else - /** - * @brief Dummy container to keep the struct size same - */ - std::map> dummy_container; -#endif - - - /** - * @brief A function to be called whenever the method is called, to check - * some condition that is required for this event to trigger correctly. - */ - std::function warning; - - /** - * @brief Next handle to be given out by the event router - */ - -protected: - - /** - * @brief Set the warning callback object used to check that this - * event is capable of running properly - * - * @param warning_function A checking function to call - */ - void set_warning_callback(std::function warning_function) { - warning = warning_function; - } - -public: - /** - * @brief Construct a new event_router_t object. - */ - event_router_t() = default; - - /** - * @brief Call all attached listeners. - * Listeners may cancel, by calling the event.cancel method. - * - * @param event Class to pass as parameter to all listeners. - */ - void call(const T& event) const { - if (warning) { - warning(event); - } - std::shared_lock l(lock); - std::for_each(dispatch_container.begin(), dispatch_container.end(), [&](auto &ev) { - if (!event.is_cancelled()) { - ev.second(event); - } - }); -#ifdef DPP_CORO - std::for_each(coroutine_container.begin(), coroutine_container.end(), [&](auto &ev) { - if (!event.is_cancelled()) { - ev.second(event); - } - }); -#endif - }; - - /** - * @brief Returns true if the container of listeners is empty, - * i.e. there is nothing listening for this event right now. - * - * @return true if there are no listeners - * @return false if there are some listeners - */ - bool empty() const { - std::shared_lock l(lock); - return dispatch_container.empty(); - } - - /** - * @brief Returns true if any listeners are attached. - * - * This is the boolean opposite of event_router_t::empty(). - * @return true if listeners are attached - * @return false if no listeners are attached - */ - operator bool() const { - return !empty(); - } - - /** - * @brief Attach a lambda to the event, adding a listener. - * The lambda should follow the signature specified when declaring - * the event object and should take exactly one parameter derived - * from event_dispatch_t. - * - * @param func Function lambda to attach to event - * @return event_handle An event handle unique to this event, used to - * detach the listener from the event later if necessary. - */ - event_handle operator()(std::function func) { - return this->attach(func); - } - - /** - * @brief Attach a lambda to the event, adding a listener. - * The lambda should follow the signature specified when declaring - * the event object and should take exactly one parameter derived - * from event_dispatch_t. - * - * @param func Function lambda to attach to event - * @return event_handle An event handle unique to this event, used to - * detach the listener from the event later if necessary. - */ - event_handle attach(std::function func) { - std::unique_lock l(lock); - event_handle h = next_handle++; - dispatch_container.emplace(h, func); - return h; - } - -#ifdef DPP_CORO - event_handle co_attach(std::function func) { - std::unique_lock l(lock); - event_handle h = next_handle++; - coroutine_container.emplace(h, func); - return h; - } -#endif - /** - * @brief Detach a listener from the event using a previously obtained ID. - * - * @param handle An ID obtained from event_router_t::operator() - * @return true The event was successfully detached - * @return false The ID is invalid (possibly already detached, or does not exist) - */ - bool detach(const event_handle& handle) { - std::unique_lock l(lock); - return this->dispatch_container.erase(handle); - } -}; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/exception.h b/Source/ThirdParty/DPPLibrary/include/dpp/exception.h deleted file mode 100644 index 576e67a..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/exception.h +++ /dev/null @@ -1,201 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief The dpp::exception class derives from std::exception and supports some other - * ways of passing in error details such as via std::string. - */ -class exception : public std::exception -{ -protected: - /** - * @brief Exception message - */ - std::string msg; - -public: - - using std::exception::exception; - - /** - * @brief Construct a new exception object - */ - exception() = default; - - /** - * @brief Construct a new exception object - * - * @param what reason message - */ - explicit exception(const char* what) : msg(what) { } - - /** - * @brief Construct a new exception object - * - * @param what reason message - * @param len length of reason message - */ - exception(const char* what, size_t len) : msg(what, len) { } - - /** - * @brief Construct a new exception object - * - * @param what reason message - */ - explicit exception(const std::string& what) : msg(what) { } - - /** - * @brief Construct a new exception object - * - * @param what reason message - */ - explicit exception(std::string&& what) : msg(std::move(what)) { } - - /** - * @brief Construct a new exception object (copy constructor) - */ - exception(const exception&) = default; - - /** - * @brief Construct a new exception object (move constructor) - */ - exception(exception&&) = default; - - /** - * @brief Destroy the exception object - */ - ~exception() override = default; - - /** - * @brief Copy assignment operator - * - * @return exception& reference to self - */ - exception & operator = (const exception &) = default; - - /** - * @brief Move assignment operator - * - * @return exception& reference to self - */ - exception & operator = (exception&&) = default; - - /** - * @brief Get exception message - * - * @return const char* error message - */ - [[nodiscard]] const char* what() const noexcept override { return msg.c_str(); }; - -}; - -#ifndef _DOXYGEN_ - #define derived_exception(name, ancestor) class name : public dpp::ancestor { \ - public: \ - using dpp::ancestor::ancestor; \ - name() = default; \ - explicit name(const char* what) : ancestor(what) { } \ - name(const char* what, size_t len) : ancestor(what, len) { } \ - explicit name(const std::string& what) : ancestor(what) { } \ - explicit name(std::string&& what) : ancestor(what) { } \ - name(const name&) = default; \ - name(name&&) = default; \ - ~name() override = default; \ - name & operator = (const name &) = default; \ - name & operator = (name&&) = default; \ - [[nodiscard]] const char* what() const noexcept override { return msg.c_str(); }; \ - }; -#endif - -#ifdef _DOXYGEN_ - /* - * THESE DEFINITIONS ARE NOT THE REAL DEFINITIONS USED BY PROGRAM CODE. - * - * They exist only to cause Doxygen to emit proper documentation for the derived exception types. - * Proper definitions are emitted by the `derived_exception` macro in the "else" section. - */ - - /** - * @brief Represents an error in logic, e.g. you asked the library to do something the Discord API does not support - * @note This is a stub for documentation purposes. For full information on supported methods please see dpp::exception. - */ - class logic_exception : public dpp::exception { }; - /** - * @brief Represents an error reading or writing to a file - * @note This is a stub for documentation purposes. For full information on supported methods please see dpp::exception. - */ - class file_exception : public dpp::exception { }; - /** - * @brief Represents an error establishing or maintaining a connection - * @note This is a stub for documentation purposes. For full information on supported methods please see dpp::exception. - */ - class connection_exception : public dpp::exception { }; - /** - * @brief Represents an error with voice processing - * @note This is a stub for documentation purposes. For full information on supported methods please see dpp::exception. - */ - class voice_exception : public dpp::exception { }; - /** - * @brief Represents an error on a REST API call, e.g. a HTTPS request - * @note This is a stub for documentation purposes. For full information on supported methods please see dpp::exception. - */ - class rest_exception : public dpp::exception { }; - /** - * @brief Represents invalid length of argument being passed to a function - * @note This is a stub for documentation purposes. For full information on supported methods please see dpp::exception. - */ - class length_exception : public dpp::exception { }; - /** - * @brief Represents inability to parse data, usually caused by malformed JSON or ETF - * @note This is a stub for documentation purposes. For full information on supported methods please see dpp::exception. - */ - class parse_exception : public dpp::exception { }; - /** - * @brief Represents invalid access to dpp's cache or its members, which may or may not exist. - * @note This is a stub for documentation purposes. For full information on supported methods please see dpp::exception. - */ - class cache_exception : public dpp::exception { }; - /** - * @brief Represents an attempt to construct a cluster with an invalid bot token. - * @note This is a stub for documentation purposes. For full information on supported methods please see dpp::exception. - */ - class invalid_token_exception : public dpp::rest_exception { }; -#else - derived_exception(logic_exception, exception); - derived_exception(file_exception, exception); - derived_exception(connection_exception, exception); - derived_exception(voice_exception, exception); - derived_exception(rest_exception, exception); - derived_exception(invalid_token_exception, rest_exception); - derived_exception(length_exception, exception); - derived_exception(parse_exception, exception); - derived_exception(cache_exception, exception); -#endif - -}; - diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/export.h b/Source/ThirdParty/DPPLibrary/include/dpp/export.h deleted file mode 100644 index 423729c..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/export.h +++ /dev/null @@ -1,66 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once - -/* Compile-time check for C++17. - * Either one of the following causes a compile time error: - * __cplusplus not defined at all (this means we are being compiled on a C compiler) - * MSVC defined and _MSVC_LANG < 201703L (Visual Studio, but not C++17 or newer) - * MSVC not defined and __cplusplus < 201703L (Non-visual studio, but not C++17 or newer) - * The additional checks are required because MSVC doesn't correctly set __cplusplus to 201703L, - * which is hugely non-standard, but apparently "it broke stuff" so they dont ever change it - * from C++98. Ugh. - */ -#if (!defined(__cplusplus) || (defined(_MSC_VER) && (!defined(_MSVC_LANG) || _MSVC_LANG < 201703L)) || (!defined(_MSC_VER) && __cplusplus < 201703L)) - #error "D++ Requires a C++17 compatible C++ compiler. Please ensure that you have enabled C++17 in your compiler flags." -#endif - -#ifndef DPP_STATIC - /* Dynamic linked build as shared object or dll */ - #ifdef DPP_BUILD - /* Building the library */ - #ifdef _WIN32 - #include - #define DPP_EXPORT __declspec(dllexport) - #else - #define DPP_EXPORT - #endif - #else - /* Including the library */ - #ifdef _WIN32 - #define DPP_EXPORT __declspec(dllimport) - #else - #define DPP_EXPORT - #endif - #endif -#else - /* Static linked build */ - #if defined(_WIN32) && defined(DPP_BUILD) - #include - #endif - #define DPP_EXPORT -#endif - -#ifndef _WIN32 - #define SOCKET int -#else - #include -#endif \ No newline at end of file diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/guild.h b/Source/ThirdParty/DPPLibrary/include/dpp/guild.h deleted file mode 100644 index d7d812f..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/guild.h +++ /dev/null @@ -1,1022 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace dpp { - -class channel; - -/** - * @brief Represents voice regions for guilds and channels. - * @deprecated Deprecated in favour of per-channel regions. - * Please use channel::rtc_region instead. - */ -enum region : uint8_t { - r_brazil, //!< Brazil - r_central_europe, //!< Central Europe - r_hong_kong, //!< Hong Kong - r_india, //!< India - r_japan, //!< Japan - r_russia, //!< Russia - r_singapore, //!< Singapore - r_south_africa, //!< South Africa - r_sydney, //!< Sydney - r_us_central, //!< US Central - r_us_east, //!< US East Coast - r_us_south, //!< US South - r_us_west, //!< US West Coast - r_western_europe //!< Western Europe -}; - -/** - * @brief The various flags that represent the status of a dpp::guild object - */ -enum guild_flags : uint32_t { - /** Large guild */ - g_large = 0b00000000000000000000000000000001, - /** Unavailable guild (inaccessible due to an outage) */ - g_unavailable = 0b00000000000000000000000000000010, - /** Guild has widget enabled */ - g_widget_enabled = 0b00000000000000000000000000000100, - /** Guild can have an invite splash image */ - g_invite_splash = 0b00000000000000000000000000001000, - /** Guild can have VIP regions */ - g_vip_regions = 0b00000000000000000000000000010000, - /** Guild can have a vanity url */ - g_vanity_url = 0b00000000000000000000000000100000, - /** Guild is verified */ - g_verified = 0b00000000000000000000000001000000, - /** Guild is partnered */ - g_partnered = 0b00000000000000000000000010000000, - /** Community features enabled */ - g_community = 0b00000000000000000000000100000000, - /** Guild has enabled role subscriptions */ - g_role_subscription_enabled = 0b00000000000000000000001000000000, - /** Guild has access to create announcement channels */ - g_news = 0b00000000000000000000010000000000, - /** Guild is discoverable in discovery */ - g_discoverable = 0b00000000000000000000100000000000, - /** Guild is featureable */ - g_featureable = 0b00000000000000000001000000000000, - /** Guild can have an animated icon (doesn't mean it actually has one though) */ - g_animated_icon = 0b00000000000000000010000000000000, - /** Guild can have a banner image */ - g_banner = 0b00000000000000000100000000000000, - /** Guild has a welcome screen */ - g_welcome_screen_enabled = 0b00000000000000001000000000000000, - /** Guild has a member verification gate */ - g_member_verification_gate = 0b00000000000000010000000000000000, - /** Guild has a preview */ - g_preview_enabled = 0b00000000000000100000000000000000, - /** Guild join notifications are off */ - g_no_join_notifications = 0b00000000000001000000000000000000, - /** Guild boost notifications are off */ - g_no_boost_notifications = 0b00000000000010000000000000000000, - /** Guild has an actual animated icon (set by the icon hash starting with 'a_') */ - g_has_animated_icon = 0b00000000000100000000000000000000, - /** Guild has an actual animated banner (set by the icon hash starting with 'a_') */ - g_has_animated_banner = 0b00000000001000000000000000000000, - /** Guild setup tips are off */ - g_no_setup_tips = 0b00000000010000000000000000000000, - /** "Wave to say hi" sticker prompt buttons are off */ - g_no_sticker_greeting = 0b00000000100000000000000000000000, - /** guild has enabled monetization */ - g_monetization_enabled = 0b00000001000000000000000000000000, - /** guild has increased custom sticker slots */ - g_more_stickers = 0b00000010000000000000000000000000, - /** Guild has enabled the role subscription promo page */ - g_creator_store_page_enabled = 0b00000100000000000000000000000000, - /** guild is able to set role icons */ - g_role_icons = 0b00001000000000000000000000000000, - /** guild has access to the seven day archive time for threads - * @deprecated Removed by Discord - */ - g_seven_day_thread_archive = 0b00010000000000000000000000000000, - /** guild has access to the three day archive time for threads - * @deprecated Removed by Discord - */ - g_three_day_thread_archive = 0b00100000000000000000000000000000, - /** guild has enabled ticketed events */ - g_ticketed_events = 0b01000000000000000000000000000000, - /** guild can have channel banners - * @deprecated Removed by Discord - */ - g_channel_banners = 0b10000000000000000000000000000000, -}; - -/** - * @brief Additional boolean flag values for guild, as guild_flags is full - */ -enum guild_flags_extra : uint8_t { - /** Guild has premium progress bar enabled */ - g_premium_progress_bar_enabled = 0b00000001, - /** Guild can have an animated banner (doesn't mean it actually has one though) */ - g_animated_banner = 0b00000010, - /** Guild has auto moderation */ - g_auto_moderation = 0b00000100, - /** Guild has paused invites, preventing new users from joining */ - g_invites_disabled = 0b00001000, - /** Guild has been set as support server of an app in the App Directory */ - g_developer_support_server = 0b00010000, - /** Guild role subscription purchase and renewal notifications are off */ - g_no_role_subscription_notifications = 0b00100000, - /** Guild role subscription sticker reply buttons are off */ - g_no_role_subscription_notification_replies = 0b01000000, - /** Guild has role subscriptions that can be purchased */ - g_role_subscriptions_available_for_purchase = 0b10000000, -}; - -/** - * @brief Various flags that can be used to indicate the status of a guild member. - * @note Use set_mute and set_deaf member functions and do not toggle the bits yourself. - */ -enum guild_member_flags : uint8_t { - /** Member deafened in voice channels */ - gm_deaf = 0b00000001, - /** Member muted in voice channels */ - gm_mute = 0b00000010, - /** Member pending verification by membership screening */ - gm_pending = 0b00000100, - /** Member has animated guild-specific avatar */ - gm_animated_avatar = 0b00001000, - /** gm_deaf or gm_mute has been toggled */ - gm_voice_action = 0b00010000, -}; - -/** - * @brief Represents dpp::user membership upon a dpp::guild. - * This contains the user's nickname, guild roles, and any other guild-specific flags. - */ -class DPP_EXPORT guild_member { -public: - /** Nickname, or empty string if they don't have a nickname on this guild */ - std::string nickname; - /** List of roles this user has on this guild */ - std::vector roles; - /** Guild id */ - snowflake guild_id; - /** User id */ - snowflake user_id; - /** User avatar (per-server avatar is a nitro only feature) */ - utility::iconhash avatar; - /** timestamp of when the time out will be removed; until then, they cannot interact with the guild */ - time_t communication_disabled_until; - /** Date and time the user joined the guild */ - time_t joined_at; - /** Boosting since */ - time_t premium_since; - /** A set of flags built from the bitmask defined by dpp::guild_member_flags */ - uint8_t flags; - - /** Default constructor */ - guild_member(); - - /** Fill this object from a json object. - * @param j The json object to get data from - * @param g_id The guild id to associate the member with - * @param u_id The user id to associate the member with - * @return Reference to self for call chaining - */ - guild_member& fill_from_json(nlohmann::json* j, snowflake g_id, snowflake u_id); - - /** - * @brief Build json string for the member object - * - * @param with_id Add ID to output - * @return std::string json string - */ - std::string build_json(bool with_id = false) const; - - /** - * @brief Returns true if the user is in time-out (communication disabled) - * - * @return true user is in time-out - * @return false user is not in time-out - */ - bool is_communication_disabled() const; - - /** - * @brief Returns true if the user is deafened - * - * @return true user is deafened - * @return false user is not deafened - */ - bool is_deaf() const; - - /** - * @brief Returns true if the user is muted - * - * @return true user muted - * @return false user not muted - */ - bool is_muted() const; - - /** - * @brief Returns true if pending verification by membership screening - * - * @return true user has completed membership screening - * @return false user has not completed membership screening - */ - bool is_pending() const; - - /** - * @brief Returns true if the user's per-guild custom avatar is animated - * - * @return true user's custom avatar is animated - * @return false user's custom avatar is not animated - */ - bool has_animated_guild_avatar() const; - - /** - * @brief Returns the member's per guild avatar url if they have one, otherwise returns an empty string. - * - * @note per-server avatar is a nitro only feature so it might be not set. If you need the user avatar, use user::get_avatar_url. - * - * @param size The size of the avatar in pixels. It can be any power of two between 16 and 4096, - * otherwise the default sized avatar is returned. - * @param format The format to use for the avatar. It can be one of `i_webp`, `i_jpg`, `i_png` or `i_gif`. - * Passing `i_gif` might result in an invalid url for non-animated images. Consider using the `prefer_animated` parameter instead. - * @param prefer_animated Whether you prefer gif format. - * If true, it'll return gif format whenever the image is available as animated. - * @return std::string avatar url or an empty string, if required attributes are missing or an invalid format was passed - */ - std::string get_avatar_url(uint16_t size = 0, const image_type format = i_png, bool prefer_animated = true) const; - - /** - * @brief Set the nickname - * - * @param nick Nickname to set - * - * @return guild_member& reference to self - */ - guild_member& set_nickname(const std::string& nick); - - /** - * @brief Get the dpp::user object for this member - * @return dpp::user user object. If not in cache, it returns nullptr - * - * - */ - user* get_user() const; - - /** - * @brief Check if this member is equal to another member object. - * @param other_member other member object to compare - * @return true if their user ids are equal, false otherwise. - */ - - bool operator == (guild_member const& other_member) const; - - /** - * @brief Set whether the user is muted in voice channels - * - * @param is_muted value to set, true if mute in voice channels - * - * @return guild_member& reference to self - */ - guild_member& set_mute(const bool is_muted); - - /** - * @brief Set whether the user is deafened in voice channels - * - * @param is_deafened value to set, true if deaf in voice channels - * - * @return guild_member& reference to self - */ - guild_member& set_deaf(const bool is_deafened); - - /** - * @brief Set communication_disabled_until - * - * @param timestamp timestamp until communication is disabled - * - * @return guild_member& reference to self - */ - guild_member& set_communication_disabled_until(const time_t timestamp); - - /** - * @brief Return a ping/mention for the user by nickname - * - * @return std::string mention - */ - std::string get_mention() const; -}; - -/** - * @brief Defines a channel on a server's welcome screen - */ -struct welcome_channel_t { - /// the description shown for the channel - std::string description; - /// the emoji name if custom, the unicode character if standard, or null if no emoji is set - std::string emoji_name; - /// the channel's id - snowflake channel_id = 0; - /// the emoji id, if the emoji is custom - snowflake emoji_id = 0; -}; - - -/** - * @brief Defines a server's welcome screen - */ -struct welcome_screen_t { - /// the server description shown in the welcome screen - std::string description; - /// the channels shown in the welcome screen, up to 5 - std::vector welcome_channels; -}; - -/** - * @brief Guild NSFW level. - * Used to represent just how naughty this guild is. Naughty guild, go sit in the corner. - * @note This is set by Discord, and cannot be set by any bot or user on the guild. - */ -enum guild_nsfw_level_t : uint8_t { - /// Default setting, not configured - nsfw_default = 0, - /// Explicit content may be in this guild - nsfw_explicit = 1, - /// Safe for work content only - nsfw_safe = 2, - /// Age restricted, 18+ - nsfw_age_restricted = 3 -}; - -/** - * @brief explicit content filter level. - * This is set by a guild admin, but can be forced to a setting if the server is verified, - * partnered, official etc. - */ -enum guild_explicit_content_t : uint8_t { - /// media content will not be scanned - expl_disabled = 0, - /// media content sent by members without roles will be scanned - expl_members_without_roles = 1, - /// media content sent by all members will be scanned - expl_all_members = 2 -}; - -/** - * @brief MFA level for server. If set to elevated all moderators need MFA to perform specific - * actions such as kick or ban. - */ -enum mfa_level_t : uint8_t { - /// MFA not elevated - mfa_none = 0, - /// MFA elevated - mfa_elevated = 1 -}; - -/** - * @brief Guild verification level - */ -enum verification_level_t : uint8_t { - /// unrestricted - ver_none = 0, - /// must have verified email on account - ver_low = 1, - /// must be registered on Discord for longer than 5 minutes - ver_medium = 2, - /// must be a member of the server for longer than 10 minutes - ver_high = 3, - /// must have a verified phone number - ver_very_high = 4, -}; - -/** - * @brief Default message notification level - */ -enum default_message_notification_t: uint8_t { - /// members will receive notifications for all messages by default - dmn_all = 0, - /// members will receive notifications only for messages that \@mention them by default - dmn_only_mentions = 1, -}; - -/** - * @brief Premium tier - */ -enum guild_premium_tier_t: uint8_t { - /// guild has not unlocked any Server Boost perks - tier_none = 0, - /// guild has unlocked Server Boost level 1 perks - tier_1 = 1, - /// guild has unlocked Server Boost level 2 perks - tier_2 = 2, - /// guild has unlocked Server Boost level 3 perks - tier_3 = 3, -}; - -/** - * @brief Voice AFK timeout values for guild::afk_timeout - */ -enum guild_afk_timeout_t: uint8_t { - /// AFK timeout disabled - afk_off, - /// AFK timeout of 1 Minute - afk_60, - /// AFK timeout of 5 Minutes - afk_300, - /// AFK timeout of 15 Minutes - afk_900, - /// AFK timeout of 30 Minutes - afk_1800, - /// AFK timeout of 1 Hour - afk_3600, -}; - -/** @brief Guild members container - */ -typedef std::unordered_map members_container; - -/** - * @brief Represents a guild on Discord (AKA a server) - */ -class DPP_EXPORT guild : public managed, public json_interface { -public: - /** Guild name */ - std::string name; - - /** Server description */ - std::string description; - - /** - * @brief Vanity url code for verified or partnered servers and boost level 3 - * @note This field cannot be set from the API. Attempts to change this value will be - * silently ignored even if the correct number of boosts or verified/partnered status exist. - * See: https://github.com/discord/discord-api-docs/issues/519 - */ - std::string vanity_url_code; - - /** Roles defined on this server */ - std::vector roles; - - /** List of channels on this server */ - std::vector channels; - - /** List of threads on this server */ - std::vector threads; - - /** List of emojis - */ - std::vector emojis; - - /** List of members in voice channels in the guild. - */ - std::map voice_members; - - /** List of guild members. Note that when you first receive the - * guild create event, this may be empty or near empty. - * This depends upon your dpp::intents and the size of your bot. - * It will be filled by guild member chunk requests. - */ - members_container members; - - /** Welcome screen - */ - welcome_screen_t welcome_screen; - - /** Guild icon hash */ - utility::iconhash icon; - - /** Guild splash hash */ - utility::iconhash splash; - - /** Guild discovery splash hash */ - utility::iconhash discovery_splash; - - /** Server banner hash */ - utility::iconhash banner; - - /** Snowflake id of guild owner */ - snowflake owner_id; - - /** Snowflake ID of AFK voice channel or 0 */ - snowflake afk_channel_id; - - /** ID of creating application, if any, or 0 */ - snowflake application_id; - - /** ID of system channel where discord update messages are sent */ - snowflake system_channel_id; - - /** ID of rules channel for communities */ - snowflake rules_channel_id; - - /** Public updates channel id or 0 */ - snowflake public_updates_channel_id; - - /** Snowflake ID of widget channel, or 0 */ - snowflake widget_channel_id; - - /** Approximate member count. May be sent as zero */ - uint32_t member_count; - - /** Flags bitmask as defined by values within dpp::guild_flags */ - uint32_t flags; - - /** - * @brief the maximum number of presences for the guild. - * @note Generally Discord always fills this with 0, apart from for the largest of guilds - */ - uint32_t max_presences; - - /** - * @brief the maximum number of members for the guild - */ - uint32_t max_members; - - /** Shard ID of the guild */ - uint16_t shard_id; - - /** Number of boosters */ - uint16_t premium_subscription_count; - - /** Voice AFK timeout before moving users to AFK channel */ - guild_afk_timeout_t afk_timeout; - - /** Maximum users in a video channel, or 0 */ - uint8_t max_video_channel_users; - - /** Setting for how notifications are to be delivered to users */ - default_message_notification_t default_message_notifications; - - /** Boost level */ - guild_premium_tier_t premium_tier; - - /** Verification level of server */ - verification_level_t verification_level; - - /** Whether or not explicit content filtering is enable and what setting it is */ - guild_explicit_content_t explicit_content_filter; - - /** If multi factor authentication is required for moderators or not */ - mfa_level_t mfa_level; - - /** - * @brief Guild NSFW level - */ - guild_nsfw_level_t nsfw_level; - - /** - * @brief Additional flags - */ - uint8_t flags_extra; - - /** Default constructor, zeroes all values */ - guild(); - - /** - * @brief Destroy the guild object - */ - virtual ~guild() = default; - - /** Read class values from json object - * @param j A json object to read from - * @return A reference to self - */ - guild& fill_from_json(nlohmann::json* j); - - /** Read class values from json object - * @param shard originating shard - * @param j A json object to read from - * @return A reference to self - */ - guild& fill_from_json(class discord_client* shard, nlohmann::json* j); - - /** Build a JSON string from this object. - * @param with_id True if an ID is to be included in the JSON - * @return JSON string - */ - std::string build_json(bool with_id = false) const; - - /** - * @brief Compute the base permissions for a member on this guild, - * before channel overwrites are applied. - * This method takes into consideration the following cases: - * - Guild owner - * - Guild roles including \@everyone - * - * @param user User to get permissions for - * @return permission permissions bitmask - * @note Requires role cache to be enabled (it's enabled by default). - * - * @warning The method will search for the guild member in the cache by the users id. - * If the guild member is not in cache, the method will always return 0. - */ - permission base_permissions(const class user* user) const; - - /** - * @brief Compute the base permissions for a member on this guild, - * before channel overwrites are applied. - * This method takes into consideration the following cases: - * - Guild owner - * - Guild roles including \@everyone - * - * @param member member to get permissions for - * @return permission permissions bitmask - * @note Requires role cache to be enabled (it's enabled by default). - */ - permission base_permissions(const guild_member &member) const; - - /** - * @brief Get the overall permissions for a member in this channel, including channel overwrites, role permissions and admin privileges. - * - * @param base_permissions base permissions before overwrites, - * from guild::base_permissions - * @param user The user to resolve the permissions for - * @param channel Channel to compute permission overwrites for - * @return permission Permission overwrites for the member. Made of bits in dpp::permissions. - * @note Requires role cache to be enabled (it's enabled by default). - * - * @warning The method will search for the guild member in the cache by the users id. - * If the guild member is not in cache, the method will always return 0. - */ - permission permission_overwrites(const uint64_t base_permissions, const user* user, const channel* channel) const; - - /** - * @brief Get the overall permissions for a member in this channel, including channel overwrites, role permissions and admin privileges. - * - * @param member The member to resolve the permissions for - * @param channel Channel to compute permission overwrites for - * @return permission Permission overwrites for the member. Made of bits in dpp::permissions. - * @note Requires role cache to be enabled (it's enabled by default). - */ - permission permission_overwrites(const guild_member &member, const channel &channel) const; - - /** - * @brief Rehash members map - */ - void rehash_members(); - - /** - * @brief Connect to a voice channel another guild member is in - * - * @param user_id User id to join - * @param self_mute True if the bot should mute itself - * @param self_deaf True if the bot should deafen itself - * @return True if the user specified is in a vc, false if they aren't - * @note This is NOT a synchronous blocking call! The bot isn't instantly ready to send or listen for audio, - * as we have to wait for the connection to the voice server to be established! - * e.g. wait for dpp::cluster::on_voice_ready event, and then send the audio within that event. - */ - bool connect_member_voice(snowflake user_id, bool self_mute = false, bool self_deaf = false); - - /** - * @brief Get the banner url of the guild if it have one, otherwise returns an empty string - * - * @param size The size of the banner in pixels. It can be any power of two between 16 and 4096, - * otherwise the default sized banner is returned. - * @param format The format to use for the avatar. It can be one of `i_webp`, `i_jpg`, `i_png` or `i_gif`. - * Passing `i_gif` might result in an invalid url for non-animated images. Consider using the `prefer_animated` parameter instead. - * @param prefer_animated Whether you prefer gif format. - * If true, it'll return gif format whenever the image is available as animated. - * @return std::string banner url or an empty string, if required attributes are missing or an invalid format was passed - */ - std::string get_banner_url(uint16_t size = 0, const image_type format = i_png, bool prefer_animated = true) const; - - /** - * @brief Get the discovery splash url of the guild if it have one, otherwise returns an empty string - * - * @param size The size of the discovery splash in pixels. It can be any power of two between 16 and 4096, - * otherwise the default sized discovery splash is returned. - * @param format The format to use for the avatar. It can be one of `i_webp`, `i_jpg` or `i_png`. - * @return std::string discovery splash url or an empty string, if required attributes are missing or an invalid format was passed - */ - std::string get_discovery_splash_url(uint16_t size = 0, const image_type format = i_png) const; - - /** - * @brief Get the icon url of the guild if it have one, otherwise returns an empty string - * - * @param size The size of the icon in pixels. It can be any power of two between 16 and 4096, - * otherwise the default sized icon is returned. - * @param format The format to use for the avatar. It can be one of `i_webp`, `i_jpg`, `i_png` or `i_gif`. - * Passing `i_gif` might result in an invalid url for non-animated images. Consider using the `prefer_animated` parameter instead. - * @param prefer_animated Whether you prefer gif format. - * If true, it'll return gif format whenever the image is available as animated. - * @return std::string icon url or an empty string, if required attributes are missing or an invalid format was passed - */ - std::string get_icon_url(uint16_t size = 0, const image_type format = i_png, bool prefer_animated = true) const; - - /** - * @brief Get the splash url of the guild if it have one, otherwise returns an empty string - * - * @param size The size of the splash in pixels. It can be any power of two between 16 and 4096, - * otherwise the default sized splash is returned. - * @param format The format to use for the avatar. It can be one of `i_webp`, `i_jpg` or `i_png`. - * @return std::string splash url or an empty string, if required attributes are missing or an invalid format was passed - */ - std::string get_splash_url(uint16_t size = 0, const image_type format = i_png) const; - - /** - * @brief Set the name of the guild in the object - * Min length: 2, Max length: 100 (not including leading/trailing spaces) - * @param n Guild name - * @return guild& reference to self - * @throw dpp::length_exception if guild name is too short - */ - guild& set_name(const std::string& n); - - /** - * @brief Is a large server (>250 users) - * @return bool is a large guild - */ - bool is_large() const; - - /** - * @brief Is unavailable due to outage (most other fields will be blank or outdated - * @return bool is unavailable - */ - bool is_unavailable() const; - - /** - * @brief Widget is enabled for this server - * @return bool widget enabled - */ - bool widget_enabled() const; - - /** - * @brief Guild has access to set an invite splash background - * @return bool can have an invite splash - */ - bool has_invite_splash() const; - - /** - * @brief Guild has access to set 384kbps bitrate in voice - * @return bool can have VIP voice regions - */ - bool has_vip_regions() const; - - /** - * @brief Guild has access to set a vanity URL - * @return bool can have vanity url - */ - bool has_vanity_url() const; - - /** - * @brief Guild is a verified server - * @return bool is verified - */ - bool is_verified() const; - - /** - * @brief Guild is a discord partnered server - * @return bool is discord partnered - */ - bool is_partnered() const; - - /** - * @brief Has enabled community - * @return bool has enabled community - */ - bool is_community() const; - - /** - * @brief Has enabled role subscriptions - * @return bool has enabled role subscriptions - */ - bool has_role_subscriptions() const; - - /** - * @brief Guild has access to create announcement channels - * @return bool has announcement channels features enabled - */ - bool has_news() const; - - /** - * @brief Guild is discoverable - * @return bool is discoverable - */ - bool is_discoverable() const; - - /** - * @brief Guild is featurable - * @return bool is featurable - */ - bool is_featureable() const; - - /** - * @brief Guild has access to set an animated guild banner image - * @return bool can have animated banner image - */ - bool has_animated_banner() const; - - /** - * @brief Guild has auto moderation features - * @return bool has auto moderation features - */ - bool has_auto_moderation() const; - - /** - * @brief Guild has been set as a support server on the App Directory - * @return bool has been set as a support server of an app in the app directory - */ - bool has_support_server() const; - - /** - * @brief Guild has role subscriptions that can be purchased - * @return bool has role subscriptions that can be purchased - */ - bool has_role_subscriptions_available_for_purchase() const; - - /** - * @brief Guild has access to set an animated guild icon - * @return bool can have animated icon - */ - bool has_animated_icon() const; - - /** - * @brief Guild has access to set a guild banner image - * @return bool can have banner image - */ - bool has_banner() const; - - /** - * @brief Guild has enabled the welcome screen - * @return bool enabled welcome screen - */ - bool is_welcome_screen_enabled() const; - - /** - * @brief Guild has enabled membership screening - * @return bool has membership screening - */ - bool has_member_verification_gate() const; - - /** - * @brief Guild has preview enabled - * @return bool has preview - */ - bool is_preview_enabled() const; - - /** - * @brief Guild icon is actually an animated gif - * @return bool is animated gif - */ - bool has_animated_icon_hash() const; - - /** - * @brief Guild banner is actually an animated gif - * @return bool is animated gif - */ - bool has_animated_banner_hash() const; - - - /** - * @brief guild has access to monetization features - * @return bool - */ - bool has_monetization_enabled() const; - - /** - * @brief guild has increased custom sticker slots - * @return bool has more stickers - */ - bool has_more_stickers() const; - - /** - * @brief guild has enabled the role subscription promo page - * @return bool has role subscription promo page enabled - */ - bool has_creator_store_page() const; - - /** - * @brief guild is able to set role icons - * @return bool has role icons - */ - bool has_role_icons() const; - - /** - * @brief guild has access to the seven day archive time for threads - * @return bool has seven day thread archive - * @deprecated Removed by Discord - */ - bool has_seven_day_thread_archive() const; - - /** - * @brief guild has access to the three day archive time for threads - * @return bool has three day thread archive - * @deprecated Removed by Discord - */ - bool has_three_day_thread_archive() const; - - /** - * @brief guild has enabled ticketed events - * @return bool has ticketed events - */ - bool has_ticketed_events() const; - - /** - * @brief guild has access to channel banners feature - * @return bool has channel banners - * @deprecated Removed by Discord - */ - bool has_channel_banners() const; - - /** - * @brief True if the premium progress bar is enabled - * @return bool has progress bar enabled - */ - bool has_premium_progress_bar_enabled() const; - - /** - * @brief True if has paused invites, preventing new users from joining - * @return bool has paused invites - */ - bool has_invites_disabled() const; -}; - -/** A container of guilds */ -typedef std::unordered_map guild_map; - -/** - * @brief Represents a guild widget, simple web widget of member list - */ -class DPP_EXPORT guild_widget { -public: - /** - * @brief Channel widget points to - */ - snowflake channel_id; - - /** - * @brief True if enabled - */ - bool enabled; - - /** - * @brief Construct a new guild widget object - */ - guild_widget(); - - /** - * @brief Build a guild widget from json - * - * @param j json to build from - * @return guild_widget& reference to self - */ - guild_widget& fill_from_json(nlohmann::json* j); - - /** - * @brief Build json for a guild widget - * - * @param with_id Add ID to output - * @return std::string guild widget stringified json - */ - std::string build_json(bool with_id = false) const; -}; - -/** - * @brief helper function to deserialize a guild_member from json - * - * @see https://github.com/nlohmann/json#arbitrary-types-conversions - * - * @param j output json object - * @param gm guild_member to be deserialized - */ -void from_json(const nlohmann::json& j, guild_member& gm); - -/** A container of guild members */ -typedef std::unordered_map guild_member_map; - -/** - * @brief Get the guild_member from cache of given IDs - * - * @param guild_id ID of the guild to find guild_member for - * @param user_id ID of the user to find guild_member for - * - * @throw dpp::cache_exception if the guild or guild_member is not found in the cache - * @return guild_member the cached object, if found - */ -guild_member DPP_EXPORT find_guild_member(const snowflake guild_id, const snowflake user_id); - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/httpsclient.h b/Source/ThirdParty/DPPLibrary/include/dpp/httpsclient.h deleted file mode 100644 index 20e766a..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/httpsclient.h +++ /dev/null @@ -1,316 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include - -namespace dpp { - - -/** - * @brief HTTP connection status - */ -enum http_state : uint8_t { - /** - * @brief Sending/receiving HTTP headers and request body - */ - HTTPS_HEADERS, - - /** - * @brief Receiving body content. - */ - HTTPS_CONTENT, - - /** - * @brief Completed connection, as it was closed or the body is >= Content-Length - * - */ - HTTPS_DONE, - - /** - * @brief Received chunk length - * - */ - HTTPS_CHUNK_LEN, - - /** - * @brief Received chunk trailing CRLF - */ - HTTPS_CHUNK_TRAILER, - - /** - * @brief The last received chunk is the final chunk - */ - HTTPS_CHUNK_LAST, - - /** - * @brief Receiving contents of a chunk - */ - HTTPS_CHUNK_CONTENT -}; - -/** - * @brief Request headers - */ -typedef std::multimap http_headers; - -/** - * @brief Represents a multipart mime body and the correct top-level mime type - * If a non-multipart request is passed in, this is represented as a plain body - * and the application/json mime type. - */ -struct multipart_content { - /** - * @brief Multipart body - */ - std::string body; - /** - * @brief MIME type - */ - std::string mimetype; -}; - -/** - * @brief Represents a HTTP scheme, hostname and port - * split into parts for easy use in https_client. - */ -struct http_connect_info { - /** - * @brief True if the connection should be SSL - */ - bool is_ssl; - /** - * @brief The request scheme, e.g. 'https' or 'http' - */ - std::string scheme; - /** - * @brief The request hostname part, e.g. 'discord.com' - */ - std::string hostname; - /** - * @brief The port number, either determined from the scheme, - * or from the part of the hostname after a colon ":" character - */ - uint16_t port; -}; - -/** - * @brief Implements a HTTPS socket client based on the SSL client. - * @note plaintext HTTP without SSL is also supported via a "downgrade" setting - */ -class DPP_EXPORT https_client : public ssl_client -{ - /** - * @brief Current connection state - */ - http_state state; - - /** - * @brief The type of the request, e.g. GET, POST - */ - std::string request_type; - - /** - * @brief Path part of URL for HTTPS connection - */ - std::string path; - - /** - * @brief The request body, e.g. form data - */ - std::string request_body; - - /** - * @brief The response body, e.g. file content or JSON - */ - std::string body; - - /** - * @brief The reported length of the content. If this is - * UULONG_MAX, then no length was reported by the server. - */ - uint64_t content_length; - - /** - * @brief Headers for the request, e.g. Authorization, etc. - */ - http_headers request_headers; - - /** - * @brief The status of the HTTP request from the server, - * e.g. 200 for OK, 404 for not found. A value of 0 means - * no request has been completed. - */ - uint16_t status; - - /** - * @brief Time at which the request should be abandoned - */ - time_t timeout; - - /** - * @brief If true the content is chunked encoding - */ - bool chunked; - - /** - * @brief Size of current chunk - */ - size_t chunk_size; - - /** - * @brief Number of bytes received in current chunk - */ - size_t chunk_receive; - - /** - * @brief Headers from the server's response, e.g. RateLimit - * headers, cookies, etc. - */ - std::map response_headers; - - /** - * @brief Handle input buffer - * - * @param buffer Buffer to read - * @return returns true if the connection should remain open - */ - bool do_buffer(std::string& buffer); - -protected: - - /** - * @brief Start the connection - */ - virtual void connect(); - - /** - * @brief Get request state - * @return request state - */ - http_state get_state(); - -public: - - /** - * @brief Connect to a specific HTTP(S) server and complete a request. - * - * The constructor will attempt the connection, and return the content. - * By the time the constructor completes, the HTTP request will be stored - * in the object. - * - * @note This is a blocking call. It starts a loop which runs non-blocking - * functions within it, but does not return until the request completes. - * See queues.cpp for how to make this asynchronous. - * - * @param hostname Hostname to connect to - * @param port Port number to connect to, usually 443 for SSL and 80 for plaintext - * @param urlpath path part of URL, e.g. "/api" - * @param verb Request verb, e.g. GET or POST - * @param req_body Request body, use dpp::https_client::build_multipart() to build a multipart MIME body (e.g. for multiple file upload) - * @param extra_headers Additional request headers, e.g. user-agent, authorization, etc - * @param plaintext_connection Set to true to make the connection plaintext (turns off SSL) - * @param request_timeout How many seconds before the connection is considered failed if not finished - */ - https_client(const std::string &hostname, uint16_t port = 443, const std::string &urlpath = "/", const std::string &verb = "GET", const std::string &req_body = "", const http_headers& extra_headers = {}, bool plaintext_connection = false, uint16_t request_timeout = 5); - - /** - * @brief Destroy the https client object - */ - virtual ~https_client(); - - /** - * @brief Build a multipart content from a set of files and some json - * - * @param json The json content - * @param filenames File names of files to send - * @param contents Contents of each of the files to send - * @return multipart mime content and headers - */ - static multipart_content build_multipart(const std::string &json, const std::vector& filenames = {}, const std::vector& contents = {}); - - /** - * @brief Processes incoming data from the SSL socket input buffer. - * - * @param buffer The buffer contents. Can modify this value removing the head elements when processed. - */ - virtual bool handle_buffer(std::string &buffer); - - /** - * @brief Close HTTPS socket - */ - virtual void close(); - - /** - * @brief Fires every second from the underlying socket I/O loop, used for timeouts - */ - virtual void one_second_timer(); - - /** - * @brief Get a HTTP response header - * - * @param header_name Header name to find, case insensitive - * @return Header content or empty string if not found - */ - const std::string get_header(std::string header_name) const; - - /** - * @brief Get all HTTP response headers - * - * @return headers as a map - */ - const std::map get_headers() const; - - /** - * @brief Get the response content - * - * @return response content - */ - const std::string get_content() const; - - /** - * @brief Get the response HTTP status, e.g. - * 200 for OK, 404 for not found, 429 for rate limited. - * A value of 0 indicates the request was not completed. - * - * @return uint16_t HTTP status - */ - uint16_t get_status() const; - - /** - * @brief Break down a scheme, hostname and port into - * a http_connect_info. - * - * All but the hostname portion are optional. The path component - * should not be passed to this function. - * - * @param url URL to break down - * @return Split URL - */ - static http_connect_info get_host_info(std::string url); - -}; - -}; \ No newline at end of file diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/integration.h b/Source/ThirdParty/DPPLibrary/include/dpp/integration.h deleted file mode 100644 index 817b0ea..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/integration.h +++ /dev/null @@ -1,171 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Integration types - */ -enum integration_type { - /// Twitch integration - i_twitch, - /// YouTube integration - i_youtube, - /// Discord integration - i_discord -}; - -/** - * @brief Integration flags - */ -enum integration_flags { - /// Integration enabled - if_enabled = 0b00000001, - /// Integration syncing - if_syncing = 0b00000010, - /// Emoji integration - if_emoticons = 0b00000100, - /// Integration revoked - if_revoked = 0b00001000, - /// Kick users when their subscription expires - if_expire_kick = 0b00010000, -}; - -/** - * @brief An application that has been integrated - */ -struct DPP_EXPORT integration_app { - /// Integration id - snowflake id; - /// Name - std::string name; - /// Icon - std::string icon; - /// Description - std::string description; - /// Integration summary @deprecated Removed by Discord - std::string summary; - /// Pointer to bot user - class user* bot; -}; - -/** - * @brief Represents an integration on a guild, e.g. a connection to twitch. - */ -class DPP_EXPORT integration : public managed, public json_interface { -public: - /** Integration name */ - std::string name; - /** Integration type */ - integration_type type; - /** Integration flags from dpp::integration_flags */ - uint8_t flags; - /** Role id */ - snowflake role_id; - /** User id */ - snowflake user_id; - /** The grace period (in days) before expiring subscribers */ - uint32_t expire_grace_period; - /** Sync time */ - time_t synced_at; - /** Subscriber count */ - uint32_t subscriber_count; - /** Account id */ - std::string account_id; - /** Account name */ - std::string account_name; - /** The bot/OAuth2 application for discord integrations */ - integration_app app; - - /** Default constructor */ - integration(); - - /** Default destructor */ - ~integration(); - - /** Read class values from json object - * @param j A json object to read from - * @return A reference to self - */ - integration& fill_from_json(nlohmann::json* j); - - /** Build a json string from this object. - * @param with_id Add ID to output - * @return JSON string of the object - */ - virtual std::string build_json(bool with_id = false) const; - - /** True if emoticons are enabled */ - bool emoticons_enabled() const; - /** True if integration is enabled */ - bool is_enabled() const; - /** True if is syncing */ - bool is_syncing() const; - /** True if has been revoked */ - bool is_revoked() const; - /** True if expiring kicks the user */ - bool expiry_kicks_user() const; -}; - -/** - * @brief The connection object that the user has attached. - */ -class DPP_EXPORT connection { -public: - std::string id; //!< id of the connection account - std::string name; //!< the username of the connection account - std::string type; //!< the service of the connection (twitch, youtube, discord, or guild_subscription) - bool revoked; //!< Optional: whether the connection is revoked - std::vector integrations; //!< Optional: an array of partial server integrations - bool verified; //!< whether the connection is verified - bool friend_sync; //!< whether friend sync is enabled for this connection - bool show_activity; //!< whether activities related to this connection will be shown in presence updates - bool two_way_link; //!< Whether this connection has a corresponding third party OAuth2 token - bool visible; //!< visibility of this connection - - /** - * @brief Construct a new connection object - */ - connection(); - - /** Read class values from json object - * @param j A json object to read from - * @return A reference to self - */ - connection& fill_from_json(nlohmann::json* j); - -}; - -/** A group of integrations */ -typedef std::unordered_map integration_map; - -/** A group of connections */ -typedef std::unordered_map connection_map; - -}; - diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/intents.h b/Source/ThirdParty/DPPLibrary/include/dpp/intents.h deleted file mode 100644 index 1e59321..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/intents.h +++ /dev/null @@ -1,86 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once - -namespace dpp { - -/** - * @brief intents are a bitmask of allowed events on your websocket. - * - * Some of these are known as Privileged intents (GUILD_MEMBERS and GUILD_PRESENCES) - * and require verification of a bot over 100 servers by discord via submission of - * your real life ID. - */ -enum intents { - /// Intent for receipt of guild information - i_guilds = (1 << 0), - /// Intent for receipt of guild members - i_guild_members = (1 << 1), - /// Intent for receipt of guild bans - i_guild_bans = (1 << 2), - /// Intent for receipt of guild emojis - i_guild_emojis = (1 << 3), - /// Intent for receipt of guild integrations - i_guild_integrations = (1 << 4), - /// Intent for receipt of guild webhooks - i_guild_webhooks = (1 << 5), - /// Intent for receipt of guild invites - i_guild_invites = (1 << 6), - /// Intent for receipt of guild voice states - i_guild_voice_states = (1 << 7), - /// Intent for receipt of guild presences - i_guild_presences = (1 << 8), - /// Intent for receipt of guild messages - i_guild_messages = (1 << 9), - /// Intent for receipt of guild message reactions - i_guild_message_reactions = (1 << 10), - /// Intent for receipt of guild message typing notifications - i_guild_message_typing = (1 << 11), - /// Intent for receipt of direct messages (DMs) - i_direct_messages = (1 << 12), - /// Intent for receipt of direct message reactions - i_direct_message_reactions = (1 << 13), - /// Intent for receipt of direct message typing notifications - i_direct_message_typing = (1 << 14), - /// Intent for receipt of message content - i_message_content = (1 << 15), - /// Scheduled events - i_guild_scheduled_events = (1 << 16), - /// Auto moderation configuration - i_auto_moderation_configuration = (1 << 20), - /// Auto moderation configuration - i_auto_moderation_execution = (1 << 21), - /// Default D++ intents (all non-privileged intents) - i_default_intents = dpp::i_guilds | dpp::i_guild_bans | dpp::i_guild_emojis | dpp::i_guild_integrations | - dpp::i_guild_webhooks | dpp::i_guild_invites | dpp::i_guild_voice_states | - dpp::i_guild_messages | dpp::i_guild_message_reactions | dpp::i_guild_message_typing | - dpp::i_direct_messages | dpp::i_direct_message_typing | dpp::i_direct_message_reactions | - dpp::i_guild_scheduled_events | dpp::i_auto_moderation_configuration | - dpp::i_auto_moderation_execution, - /// Privileged intents requiring ID - i_privileged_intents = dpp::i_guild_members | dpp::i_guild_presences | dpp::i_message_content, - /// Every single intent - i_all_intents = dpp::i_default_intents | dpp::i_privileged_intents, - /// Unverified bots default intents - i_unverified_default_intents = dpp::i_default_intents | dpp::i_message_content -}; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/invite.h b/Source/ThirdParty/DPPLibrary/include/dpp/invite.h deleted file mode 100644 index cd5a045..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/invite.h +++ /dev/null @@ -1,110 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Represents an invite to a discord guild or channel - */ -class DPP_EXPORT invite : public json_interface { -public: - /** Invite code - */ - std::string code; - /** Readonly expiration timestamp of this invite or 0 if the invite doesn't expire - */ - time_t expires_at; - /** Guild for the invite - */ - snowflake guild_id; - /** Channel id for invite - */ - snowflake channel_id; - /** User ID of invite creator - */ - snowflake inviter_id; - /** Target user ID of invite, for invites sent via DM - */ - snowflake target_user_id; - /** Target user type (generally this is always 1, "stream") - */ - uint8_t target_user_type; - /** Approximate number of online users - */ - uint32_t approximate_presence_count; - /** Approximate total users online and offline - */ - uint32_t approximate_member_count; - /** Maximum age (in seconds) of invite - */ - uint32_t max_age; - /** Maximum number of uses - */ - uint32_t max_uses; - /** True if a temporary invite which grants access for a limited time - */ - bool temporary; - /** True if this invite should not replace or "attach to" similar invites - */ - bool unique; - /** How many times this invite has been used - * - * @note Only set when using cluster::channel_invites_get - */ - uint32_t uses; - /** The stage instance data if there is a public stage instance in the stage channel this invite is for - * @deprecated Deprecated - */ - stage_instance stage; - - /** Constructor - */ - invite(); - - /** Destructor - */ - virtual ~invite() = default; - - /** Read class values from json object - * @param j A json object to read from - * @return A reference to self - */ - invite& fill_from_json(nlohmann::json* j); - - /** Build JSON from this object. - * @param with_id Include ID in JSON - * @return The JSON text of the invite - */ - virtual std::string build_json(bool with_id = false) const; - -}; - -/** A container of invites */ -typedef std::unordered_map invite_map; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/json.h b/Source/ThirdParty/DPPLibrary/include/dpp/json.h deleted file mode 100644 index 16558c9..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/json.h +++ /dev/null @@ -1,25 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#ifdef DPP_USE_EXTERNAL_JSON - #include -#else - #include -#endif \ No newline at end of file diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/json_fwd.h b/Source/ThirdParty/DPPLibrary/include/dpp/json_fwd.h deleted file mode 100644 index ebdd78d..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/json_fwd.h +++ /dev/null @@ -1,25 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#ifdef DPP_USE_EXTERNAL_JSON - #include -#else - #include -#endif \ No newline at end of file diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/json_interface.h b/Source/ThirdParty/DPPLibrary/include/dpp/json_interface.h deleted file mode 100644 index 99b8ea7..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/json_interface.h +++ /dev/null @@ -1,61 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2022 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - -#pragma once -#include -#include -#include - -namespace dpp { - /** - * @brief Represents an interface for an object that can optionally implement functions - * for converting to and from nlohmann::json. In the event either parse_from_json() or - * build_json() are not implemented and are called, they will throw at runtime. - * - * @tparam T Type of class that implements the interface - */ - template struct DPP_EXPORT json_interface { - protected: - /* Must not destruct through pointer to json_interface. */ - ~json_interface() = default; - - public: - /** - * @brief Convert object from nlohmann::json - * - * @param j nlohmann::json object - * @return T& Reference to self for fluent calling - */ - T& fill_from_json(nlohmann::json* j) { - throw dpp::logic_exception("JSON interface doesn't implement parse_from_json"); - } - - /** - * @brief Build JSON string from the object - * - * @param with_id Include the ID in the JSON - * @return std::string JSON string version of object - */ - virtual std::string build_json(bool with_id = false) const { - throw dpp::logic_exception("JSON interface doesn't implement build_json"); - } - }; -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/managed.h b/Source/ThirdParty/DPPLibrary/include/dpp/managed.h deleted file mode 100644 index 3939b89..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/managed.h +++ /dev/null @@ -1,76 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include - -namespace dpp { - - /** @brief The managed class is the base class for various types that can - * be stored in a cache that are identified by a dpp::snowflake id. - */ - class DPP_EXPORT managed { - public: - /** - * @brief Unique ID of object set by Discord. - * This value contains a timestamp, worker ID, internal server ID, and an incrementing value. - * Only the timestamp is relevant to us as useful metadata. - */ - snowflake id; - /** - * @brief Constructor, initialises ID - * @param nid ID to set - */ - managed(const snowflake nid = 0); - /** - * @brief Destroy the managed object - */ - virtual ~managed() = default; - - /** - * @brief Get the creation time of this object according to Discord. - * - * @return double creation time inferred from the snowflake ID. - * The minimum possible value is the first second of 2015. - */ - double get_creation_time() const; - - /** - * @brief Comparison operator for comparing two managed objects by id - * - * @param other Other object to compare against - * @return true objects are the same id - * @return false objects are not the same id - */ - bool operator==(const managed& other) const noexcept; - - /** - * @brief Comparison operator for comparing two managed objects by id - * - * @param other Other object to compare against - * @return true objects are not the same id - * @return false objects are the same id - */ - bool operator!=(const managed& other) const noexcept; - }; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/message.h b/Source/ThirdParty/DPPLibrary/include/dpp/message.h deleted file mode 100644 index c4b4c80..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/message.h +++ /dev/null @@ -1,1514 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Represents the type of a component - */ -enum component_type : uint8_t { - /// Action row, a container for other components - cot_action_row = 1, - /// Clickable button - cot_button = 2, - /// Select menu for picking from defined text options - cot_selectmenu = 3, - /// Text input - cot_text = 4, - /// Select menu for users - cot_user_selectmenu = 5, - /// Select menu for roles - cot_role_selectmenu = 6, - /// Select menu for mentionables (users and roles) - cot_mentionable_selectmenu = 7, - /// Select menu for channels - cot_channel_selectmenu = 8, -}; - -/** - * @brief Types of text input - */ -enum text_style_type : uint8_t { - /// Intended for short single-line text. - text_short = 1, - /// Intended for much longer inputs. - text_paragraph = 2, -}; - -/** - * @brief Represents the style of a button - */ -enum component_style : uint8_t { - /// Blurple - cos_primary = 1, - /// Grey - cos_secondary, - /// Green - cos_success, - /// Red - cos_danger, - /// An external hyperlink to a website - cos_link -}; - -/** - * @brief An option for a select component - */ -struct DPP_EXPORT select_option : public json_interface { - /** - * @brief Label for option - */ - std::string label; - /** - * @brief Value for option - */ - std::string value; - /** - * @brief Description of option - */ - std::string description; - /** - * @brief True if option is the default option - */ - bool is_default; - /** - * @brief Emoji definition. To set an emoji on your button - * you must set one of either the name or id fields. - * The easiest way is to use the component::set_emoji - * method. - */ - struct inner_select_emoji { - /** - * @brief Set the name field to the name of the emoji. - * For built in unicode emojis, set this to the - * actual unicode value of the emoji e.g. "😄" - * and not for example ":smile:" - */ - std::string name; - /** - * @brief The emoji ID value for emojis that are custom - * ones belonging to a guild. The same rules apply - * as with other emojis, that the bot must be on - * the guild where the emoji resides and it must - * be available for use (e.g. not disabled due to - * lack of boosts etc) - */ - dpp::snowflake id = 0; - /** - * @brief True if the emoji is animated. Only applies to - * custom emojis. - */ - bool animated = false; - } emoji; - - /** - * @brief Construct a new select option object - */ - select_option(); - - /** - * @brief Destructs the select option object. - */ - virtual ~select_option() = default; - - /** - * @brief Construct a new select option object - * - * @param label Label of option - * @param value Value of option - * @param description Description of option - */ - select_option(const std::string &label, const std::string &value, const std::string &description = ""); - - /** - * @brief Set the label - * - * @param l the user-facing name of the option. It will be truncated to the maximum length of 100 UTF-8 characters. - * @return select_option& reference to self for chaining - */ - select_option& set_label(const std::string &l); - - /** - * @brief Set the value - * - * @param v value to set. It will be truncated to the maximum length of 100 UTF-8 characters. - * @return select_option& reference to self for chaining - */ - select_option& set_value(const std::string &v); - - /** - * @brief Set the description - * - * @param d description to set. It will be truncated to the maximum length of 100 UTF-8 characters. - * @return select_option& reference to self for chaining - */ - select_option& set_description(const std::string &d); - - /** - * @brief Set the emoji - * - * @param n emoji name - * @param id emoji id for custom emojis - * @param animated true if animated emoji - * @return select_option& reference to self for chaining - */ - select_option& set_emoji(const std::string &n, dpp::snowflake id = 0, bool animated = false); - - /** - * @brief Set the option as default - * - * @param def true to set the option as default - * @return select_option& reference to self for chaining - */ - select_option& set_default(bool def); - - /** - * @brief Set the emoji as animated - * - * @param anim true if animated - * @return select_option& reference to self for chaining - */ - select_option& set_animated(bool anim); - - /** Read class values from json object - * @param j A json object to read from - * @return A reference to self - */ - select_option& fill_from_json(nlohmann::json* j); -}; - -/** - * @brief Represents the component object. - * A component is a clickable button or drop down list - * within a discord message, where the buttons emit - * on_button_click events when the user interacts with - * them. - * - * You should generally define one component object and - * then insert one or more additional components into it - * using component::add_component(), so that the parent - * object is an action row and the child objects are buttons. - */ -class DPP_EXPORT component : public json_interface { -public: - /** Component type, either a button or action row - */ - component_type type; - - /** Sub components, buttons on an action row - */ - std::vector components; - - /** Component label (for buttons, text inputs). - * Maximum of 80 characters. - */ - std::string label; - - /** Component style (for buttons) - */ - component_style style; - - /** - * @brief Text style (for text inputs) - */ - text_style_type text_style; - - /** Component id (for buttons, menus, text inputs). - * Maximum of 100 characters. - */ - std::string custom_id; - - /** URL for link types (dpp::cos_link). - * Maximum of 512 characters. - */ - std::string url; - - /** Placeholder text for select menus and text inputs (max 150 characters) - */ - std::string placeholder; - - /** Minimum number of items that must be chosen for a select menu. - * Default is -1 to not set this - */ - int32_t min_values; - - /** Maximum number of items that can be chosen for a select menu. - * Default is -1 to not set this - */ - int32_t max_values; - - /** Minimum length for text input (0-4000) - */ - int32_t min_length; - - /** Maximum length for text input (1-4000) - */ - int32_t max_length; - - /** Select options for select menus. Only required and available for select menus of type dpp::cot_selectmenu - */ - std::vector options; - - /** List of channel types (dpp::channel_type) to include in the channel select component (dpp::cot_channel_selectmenu) - */ - std::vector channel_types; - - /** Disabled flag (for buttons) - */ - bool disabled; - - /** Whether the text input is required to be filled - */ - bool required; - - /** Value of the modal (filled or valid when populated from an - * on_form_submit event, or from the set_value function) - */ - std::variant value; - - /** Emoji definition. To set an emoji on your button - * you must set one of either the name or id fields. - * The easiest way is to use the component::set_emoji - * method. - */ - struct inner_emoji { - /** Set the name field to the name of the emoji. - * For built in unicode emojis, set this to the - * actual unicode value of the emoji e.g. "😄" - * and not for example ":smile:" - */ - std::string name; - /** The emoji ID value for emojis that are custom - * ones belonging to a guild. The same rules apply - * as with other emojis, that the bot must be on - * the guild where the emoji resides and it must - * be available for use (e.g. not disabled due to - * lack of boosts etc) - */ - dpp::snowflake id; - /** True if the emoji is animated. Only applies to - * custom emojis. - */ - bool animated; - } emoji; - - /** Constructor - */ - component(); - - /** Destructor - */ - virtual ~component() = default; - - /** - * @brief Add a channel type to include in the channel select component (dpp::cot_channel_selectmenu) - * - * @param ct The dpp::channel_type - * @return component& reference to self - */ - component& add_channel_type(uint8_t ct); - - /** - * @brief Set the type of the component. Button components - * (type dpp::cot_button) should always be contained within - * an action row (type dpp::cot_action_row). As described - * below, many of the other methods automatically set this - * to the correct type so usually you should not need to - * manually call component::set_type(). - * - * @param ct The component type - * @return component& reference to self - */ - component& set_type(component_type ct); - - /** - * @brief Set the text style of a text component - * @note Sets type to `cot_text` - * - * @param ts Text style type to set - * @return component& reference to self - */ - component& set_text_style(text_style_type ts); - - /** - * @brief Set the label of the component, e.g. button text. - * For action rows, this field is ignored. Setting the - * label will auto-set the type to dpp::cot_button. - * - * @param label Label text to set. It will be truncated to the maximum length of 80 UTF-8 characters. - * @return component& Reference to self - */ - component& set_label(const std::string &label); - - /** - * @brief Set the default value of the text input component. - * For action rows, this field is ignored. Setting the - * value will auto-set the type to dpp::cot_text. - * - * @param val Value text to set. It will be truncated to the maximum length of 4000 UTF-8 characters. - * @return component& Reference to self - */ - component& set_default_value(const std::string &val); - - /** - * @brief Set the url for dpp::cos_link types. - * Calling this function sets the style to dpp::cos_link - * and the type to dpp::cot_button. - * - * @param url URL to set. It will be truncated to the maximum length of 512 UTF-8 characters. - * @return component& reference to self. - */ - component& set_url(const std::string &url); - - /** - * @brief Set the style of the component, e.g. button colour. - * For action rows, this field is ignored. Setting the - * style will auto-set the type to dpp::cot_button. - * - * @param cs Component style to set - * @return component& reference to self - */ - component& set_style(component_style cs); - - /** - * @brief Set the id of the component. - * For action rows, this field is ignored. Setting the - * id will auto-set the type to dpp::cot_button. - * - * @param id Custom ID string to set. This ID will be sent - * for any on_button_click events related to the button. - * @note The maximum length of the Custom ID is 100 UTF-8 codepoints. - * If your Custom ID is longer than this, it will be truncated. - * @return component& Reference to self - */ - component& set_id(const std::string &id); - - /** - * @brief Set the component to disabled. - * Defaults to false on all created components. - * - * @param disable True to disable, false to disable. - * @return component& Reference to self - */ - component& set_disabled(bool disable); - - /** - * @brief Set if this component is required. - * Defaults to false on all created components. - * - * @param require True to require this, false to make it optional. - * @return component& Reference to self - */ - component& set_required(bool require); - - /** - * @brief Set the placeholder - * - * @param placeholder placeholder string. It will be truncated to the - * maximum length of 150 UTF-8 characters for select menus, and 100 UTF-8 - * characters for modals. - * @return component& Reference to self - */ - component& set_placeholder(const std::string &placeholder); - - /** - * @brief Set the min value - * - * @param min_values min value to set - * @return component& Reference to self - */ - component& set_min_values(uint32_t min_values); - - /** - * @brief Set the max value - * - * @param max_values max value to set (0 - 25) - * @return component& Reference to self - */ - component& set_max_values(uint32_t max_values); - - /** - * @brief Set the min length of text input - * - * @param min_l min value to set (0 - 25) - * @return component& Reference to self - */ - component& set_min_length(uint32_t min_l); - - /** - * @brief Set the max length of text input - * - * @param max_l max value to set - * @return component& Reference to self - */ - component& set_max_length(uint32_t max_l); - - /** - * @brief Add a select option - * - * @param option option to add - * @return component& Reference to self - */ - component& add_select_option(const select_option &option); - - /** - * @brief Add a sub-component, only valid for action rows. - * Adding subcomponents to a component will automatically - * set this component's type to dpp::cot_action_row. - * - * @param c The sub-component to add - * @return component& reference to self - */ - component& add_component(const component& c); - - /** - * @brief Set the emoji of the current sub-component. - * Only valid for buttons. Adding an emoji to a component - * will automatically set this components type to - * dpp::cot_button. One or both of name and id must be set. - * For a built in unicode emoji, you only need set name, - * and should set it to a unicode character e.g. "😄". - * For custom emojis, set the name to the name of the emoji - * on the guild, and the id to the emoji's ID. - * Setting the animated boolean is only valid for custom - * emojis. - * - * @param name Emoji name, or unicode character to use - * @param id Emoji id, for custom emojis only. - * @param animated True if the custom emoji is animated. - * @return component& Reference to self - */ - component& set_emoji(const std::string& name, dpp::snowflake id = 0, bool animated = false); - - /** Read class values from json object - * @param j A json object to read from - * @return A reference to self - */ - component& fill_from_json(nlohmann::json* j); - -}; - -/** - * @brief A footer in a dpp::embed - */ -struct DPP_EXPORT embed_footer { - /** Footer text */ - std::string text; - /** Footer icon url */ - std::string icon_url; - /** Proxied icon url */ - std::string proxy_url; - - /** Set footer's text. Returns footer itself so these methods may be "chained" - * @param t string to set as footer text. It will be truncated to the maximum length of 2048 UTF-8 characters. - * @return A reference to self - */ - embed_footer& set_text(const std::string& t); - - /** Set footer's icon url. Returns footer itself so these methods may be "chained" - * @param i url to set as footer icon url - * @return A reference to self - */ - embed_footer& set_icon(const std::string& i); - - /** Set footer's proxied icon url. Returns footer itself so these methods may be "chained" - * @param p url to set as footer proxied icon url - * @return A reference to self - */ - embed_footer& set_proxy(const std::string& p); -}; - -/** - * @brief An video, image or thumbnail in a dpp::embed - */ -struct DPP_EXPORT embed_image { - /** URL to image or video */ - std::string url; - /** Proxied image url */ - std::string proxy_url; - /** Height (calculated by discord) */ - std::string height; - /** Width (calculated by discord) */ - std::string width; -}; - -/** - * @brief Embed provider in a dpp::embed. Received from discord but cannot be sent - */ -struct DPP_EXPORT embed_provider { - /** Provider name */ - std::string name; - /** Provider URL */ - std::string url; -}; - -/** - * @brief Author within a dpp::embed object - */ -struct DPP_EXPORT embed_author { - /** Author name */ - std::string name; - /** Author url */ - std::string url; - /** Author icon url */ - std::string icon_url; - /** Proxied icon url */ - std::string proxy_icon_url; -}; - -/** - * @brief A dpp::embed may contain zero or more fields - */ -struct DPP_EXPORT embed_field { - /** Name of field */ - std::string name; - /** Value of field (max length 1000) */ - std::string value; - /** True if the field is to be displayed inline */ - bool is_inline; -}; - -/** - * @brief A rich embed for display within a dpp::message - */ -struct DPP_EXPORT embed { - /** Optional: title of embed */ - std::string title; - /** Optional: type of embed (always "rich" for webhook embeds) */ - std::string type; - /** Optional: description of embed */ - std::string description; - /** Optional: url of embed */ - std::string url; - /** Optional: timestamp of embed content */ - time_t timestamp; - /** Optional: color code of the embed */ - uint32_t color; - /** Optional: footer information */ - std::optional footer; - /** Optional: image information */ - std::optional image; - /** Optional: thumbnail information */ - std::optional thumbnail; - /** Optional: video information (can't send these) */ - std::optional video; - /** Optional: provider information (can't send these) */ - std::optional provider; - /** Optional: author information */ - std::optional author; - /** Optional: fields information */ - std::vector fields; - - /** Constructor */ - embed(); - - /** Constructor to build embed from json object - * @param j JSON to read content from - */ - embed(nlohmann::json* j); - - /** Destructor */ - ~embed(); - - /** Set embed title. Returns the embed itself so these method calls may be "chained" - * @param text The text of the title. It will be truncated to the maximum length of 256 UTF-8 characters. - * @return A reference to self - */ - embed& set_title(const std::string &text); - - /** Set embed description. Returns the embed itself so these method calls may be "chained" - * @param text The text of the title. It will be truncated to the maximum length of 4096 UTF-8 characters. - * @return A reference to self - */ - embed& set_description(const std::string &text); - - /** Set the footer of the embed. Returns the embed itself so these method calls may be "chained" - * @param f the footer to set - * @return A reference to self - */ - embed& set_footer(const embed_footer& f); - - /** Set the footer of the embed. Returns the embed itself so these method calls may be "chained" - * @param text string to set as footer text. It will be truncated to the maximum length of 2048 UTF-8 characters. - * @param icon_url an url to set as footer icon url - * @return A reference to self - */ - embed& set_footer(const std::string& text, const std::string& icon_url); - - /** Set embed colour. Returns the embed itself so these method calls may be "chained" - * @param col The colour of the embed - * @return A reference to self - */ - embed& set_color(uint32_t col); - - /** Set embed timestamp. Returns the embed itself so these method calls may be "chained" - * @param tstamp The timestamp to show in the footer, should be in UTC - * @return A reference to self - */ - embed& set_timestamp(time_t tstamp); - - /** Set embed url. Returns the embed itself so these method calls may be "chained" - * @param url the url of the embed - * @return A reference to self - */ - embed& set_url(const std::string &url); - - /** Add an embed field. Returns the embed itself so these method calls may be "chained" - * @param name The name of the field. It will be truncated to the maximum length of 256 UTF-8 characters. - * @param value The value of the field. It will be truncated to the maximum length of 1024 UTF-8 characters. - * @param is_inline Whether or not to display the field 'inline' or on its own line - * @return A reference to self - */ - embed& add_field(const std::string& name, const std::string &value, bool is_inline = false); - - /** Set embed author. Returns the embed itself so these method calls may be "chained" - * @param a The author to set - * @return A reference to self - */ - embed& set_author(const dpp::embed_author& a); - - /** Set embed author. Returns the embed itself so these method calls may be "chained" - * @param name The name of the author. It will be truncated to the maximum length of 256 UTF-8 characters. - * @param url The url of the author - * @param icon_url The icon URL of the author - * @return A reference to self - */ - embed& set_author(const std::string& name, const std::string& url, const std::string& icon_url); - - /** Set embed provider. Returns the embed itself so these method calls may be "chained" - * @param name The provider name. It will be truncated to the maximum length of 256 UTF-8 characters. - * @param url The provider url - * @return A reference to self - */ - embed& set_provider(const std::string& name, const std::string& url); - - /** Set embed image. Returns the embed itself so these method calls may be "chained" - * @param url The embed image URL - * @return A reference to self - */ - embed& set_image(const std::string& url); - - /** Set embed video. Returns the embed itself so these method calls may be "chained" - * @param url The embed video url - * @return A reference to self - */ - embed& set_video(const std::string& url); - - /** Set embed thumbnail. Returns the embed itself so these method calls may be "chained" - * @param url The embed thumbnail url - * @return A reference to self - */ - embed& set_thumbnail(const std::string& url); -}; - -/** - * @brief Represents a reaction to a dpp::message - */ -struct DPP_EXPORT reaction { - /** Number of times this reaction has been added */ - uint32_t count; - /** Reaction was from the bot's id */ - bool me; - /** ID of emoji for reaction */ - snowflake emoji_id; - /** Name of emoji, if applicable */ - std::string emoji_name; - - /** - * @brief Constructs a new reaction object. - */ - reaction(); - - /** - * @brief Constructs a new reaction object from a JSON object. - * @param j The JSON to read data from - */ - reaction(nlohmann::json* j); - - /** - * @brief Destructs the reaction object. - */ - ~reaction() = default; -}; - -/** - * @brief Represents an attachment in a dpp::message - */ -struct DPP_EXPORT attachment { - /** ID of attachment */ - snowflake id; - /** Size of the attachment in bytes */ - uint32_t size; - /** File name of the attachment */ - std::string filename; - /** Optional: Description of the attachment (max 1024 characters) */ - std::string description; - /** URL which points to the attachment */ - std::string url; - /** Proxied URL which points to the attachment */ - std::string proxy_url; - /** Width of the attachment, if applicable */ - uint32_t width; - /** Height of the attachment, if applicable */ - uint32_t height; - /** MIME type of the attachment, if applicable */ - std::string content_type; - /** Whether this attachment is ephemeral, if applicable */ - bool ephemeral; - /** Owning message */ - struct message* owner; - - /** - * @brief Constructs a new attachment object. - * @param o Owning dpp::message object - */ - attachment(struct message* o); - - /** - * @brief Constructs a new attachment object from a JSON object. - * @param o Owning dpp::message object - * @param j JSON to read information from - */ - attachment(struct message* o, nlohmann::json* j); - - /** - * @brief Destructs the attachment object. - */ - ~attachment() = default; - - /** - * @brief Download this attachment - * @param callback A callback which is called when the download completes. - * @note The content of the file will be in the http_info.body parameter of the - * callback parameter. - * @throw dpp::logic_exception If there is no owner associated with this attachment that - * itself has an owning cluster, this method will throw a dpp::logic_exception when called. - */ - void download(http_completion_event callback) const; -}; - -/** - * @brief Represents the type of a sticker - */ -enum sticker_type : uint8_t { - /// Nitro pack sticker - st_standard = 1, - /// Guild sticker - st_guild = 2 -}; - -/** - * @brief The file format (png, apng, lottie) of a sticker - */ -enum sticker_format : uint8_t { - sf_png = 1, - sf_apng = 2, - sf_lottie = 3, - sf_gif = 4, -}; - -/** - * @brief Represents stickers received in messages - */ -struct DPP_EXPORT sticker : public managed, public json_interface { - /** Optional: for standard stickers, id of the pack the sticker is from - */ - snowflake pack_id; - /** The name of the sticker */ - std::string name; - /// description of the sticker (may be empty) - std::string description; - /** for guild stickers, the Discord name of a unicode emoji representing the sticker's expression. - * for standard stickers, a comma-separated list of related expressions. - */ - std::string tags; - /** - * @brief Asset ID - * @deprecated now an empty string but still sent by discord. - * While discord still send this empty string value we will still have a field - * here in the library. - */ - std::string asset; - /** The type of sticker */ - sticker_type type; - /// type of sticker format - sticker_format format_type; - /// Optional: whether this guild sticker can be used, may be false due to loss of Server Boosts - bool available; - /// Optional: id of the guild that owns this sticker - snowflake guild_id; - /// Optional: the user that uploaded the guild sticker - user sticker_user; - /// Optional: the standard sticker's sort order within its pack - uint8_t sort_value; - /** Name of file to upload (when adding or editing a sticker) */ - std::string filename; - /** File content to upload (raw binary) */ - std::string filecontent; - - /** - * @brief Construct a new sticker object - */ - sticker(); - - virtual ~sticker() = default; - - /** Read class values from json object - * @param j A json object to read from - * @return A reference to self - */ - sticker& fill_from_json(nlohmann::json* j); - - /** Build JSON from this object. - * @param with_id True if the ID is to be set in the JSON structure - * @return The JSON text of the invite - */ - virtual std::string build_json(bool with_id = true) const; - - /** - * @brief Get the sticker url. - * - * @return std::string The sticker url or an empty string, if the id is empty - */ - std::string get_url() const; - - /** - * @brief Set the filename - * - * @param fn filename - * @return message& reference to self - */ - sticker& set_filename(const std::string &fn); - - /** - * @brief Set the file content - * - * @param fc raw file content contained in std::string - * @return message& reference to self - */ - sticker& set_file_content(const std::string &fc); - -}; - -/** - * @brief Represents a sticker pack (the built in groups of stickers that all nitro users get to use) - */ -struct DPP_EXPORT sticker_pack : public managed, public json_interface { - /// the stickers in the pack - std::map stickers; - /// name of the sticker pack - std::string name; - /// id of the pack's SKU - snowflake sku_id; - /// Optional: id of a sticker in the pack which is shown as the pack's icon - snowflake cover_sticker_id; - /// description of the sticker pack - std::string description; - /// id of the sticker pack's banner image - snowflake banner_asset_id; - - /** - * @brief Construct a new sticker pack object - */ - sticker_pack(); - - virtual ~sticker_pack() = default; - - /** Read class values from json object - * @param j A json object to read from - * @return A reference to self - */ - sticker_pack& fill_from_json(nlohmann::json* j); - - /** Build JSON from this object. - * @param with_id True if the ID is to be set in the JSON structure - * @return The JSON text of the invite - */ - virtual std::string build_json(bool with_id = true) const; - -}; - -/** - * @brief Bitmask flags for a dpp::message - */ -enum message_flags : uint16_t { - /// this message has been published to subscribed channels (via Channel Following) - m_crossposted = 1 << 0, - /// this message originated from a message in another channel (via Channel Following) - m_is_crosspost = 1 << 1, - /// do not include any embeds when serializing this message - m_suppress_embeds = 1 << 2, - /// the source message for this crosspost has been deleted (via Channel Following) - m_source_message_deleted = 1 << 3, - /// this message came from the urgent message system - m_urgent = 1 << 4, - /// this message has an associated thread, with the same id as the message - m_has_thread = 1 << 5, - /// this message is only visible to the user who invoked the Interaction - m_ephemeral = 1 << 6, - /// this message is an Interaction Response and the bot is "thinking" - m_loading = 1 << 7, - /// this message failed to mention some roles and add their members to the thread - m_thread_mention_failed = 1 << 8, - /// this message will not trigger push and desktop notifications - m_suppress_notifications = 1 << 12, -}; - -/** - * @brief Represents possible values for the dpp::embed type field. - * These are loosely defined by the API docs and do not influence how the client renders embeds. - * The only type a bot can send is dpp::embed_type::emt_rich. - */ -namespace embed_type { - /** - * @brief Rich text - */ - const std::string emt_rich = "rich"; - /** - * @brief Image - */ - const std::string emt_image = "image"; - /** - * @brief Video link - */ - const std::string emt_video = "video"; - /** - * @brief Animated gif - */ - const std::string emt_gifv = "gifv"; - /** - * @brief Article - */ - const std::string emt_article = "article"; - /** - * @brief Link URL - */ - const std::string emt_link = "link"; - /** - * @brief Auto moderation filter - */ - const std::string emt_automod = "auto_moderation_message"; -}; - -/** - * @brief Message types for dpp::message::type - */ -enum message_type { - /// Default - mt_default = 0, - /// Add recipient - mt_recipient_add = 1, - /// Remove recipient - mt_recipient_remove = 2, - /// Call - mt_call = 3, - /// Channel name change - mt_channel_name_change = 4, - /// Channel icon change - mt_channel_icon_change = 5, - /// Message pinned - mt_channel_pinned_message = 6, - /// Member joined - mt_guild_member_join = 7, - /// Boost - mt_user_premium_guild_subscription = 8, - /// Boost level 1 - mt_user_premium_guild_subscription_tier_1 = 9, - /// Boost level 2 - mt_user_premium_guild_subscription_tier_2 = 10, - /// Boost level 3 - mt_user_premium_guild_subscription_tier_3 = 11, - /// Follow channel - mt_channel_follow_add = 12, - /// Disqualified from discovery - mt_guild_discovery_disqualified = 14, - /// Re-qualified for discovery - mt_guild_discovery_requalified = 15, - /// Discovery grace period warning 1 - mt_guild_discovery_grace_period_initial_warning = 16, - /// Discovery grace period warning 2 - mt_guild_discovery_grace_period_final_warning = 17, - /// Thread Created - mt_thread_created = 18, - /// Reply - mt_reply = 19, - /// Application command - mt_application_command = 20, - /// Thread starter message - mt_thread_starter_message = 21, - /// Invite reminder - mt_guild_invite_reminder = 22, - /// Context Menu Command - mt_context_menu_command = 23, - /// Auto moderation action - mt_auto_moderation_action = 24, - /// Role subscription purchase - mt_role_subscription_purchase = 25, - /// Interaction premium upsell - mt_interaction_premium_upsell = 26, - /// Stage start - mt_stage_start = 27, - /// Stage end - mt_stage_end = 28, - /// Stage speaker - mt_stage_speaker = 29, - /// Stage topic - mt_stage_topic = 31, - /// Guild application premium subscription - mt_application_premium_subscription = 32, -}; - -/** - * @brief Represents the caching policy of a cache in the library. - */ -enum cache_policy_setting_t { - /** - * @brief request aggressively on seeing new guilds, and also store missing data from messages. - * This is the default behaviour and the least memory-efficient option. Memory usage will increase - * over time, initially quite rapidly, and then linearly over time. It is the least cpu-intensive - * setting. - */ - cp_aggressive = 0, - /** - * @brief only cache when there is relevant activity, e.g. a message to the bot. - * This is a good middle-ground, memory usage will increase linearly over time. - */ - cp_lazy = 1, - /** - * @brief Don't cache anything. Fill details when we see them. - * This is the most memory-efficient option but consumes more CPU time - */ - cp_none = 2 -}; - -/** - * @brief Represents the caching policy of the cluster. - * - * Channels and guilds are always cached as these caches are used - * internally by the library. The memory usage of these is minimal. - * - * All default to 'aggressive' which means to actively attempt to cache, - * going out of the way to fill the caches completely. On large bots this - * can take a LOT of RAM. - */ -struct DPP_EXPORT cache_policy_t { - /** - * @brief Caching policy for users and guild members - */ - cache_policy_setting_t user_policy = cp_aggressive; - - /** - * @brief Caching policy for emojis - */ - cache_policy_setting_t emoji_policy = cp_aggressive; - - /** - * @brief Caching policy for roles - */ - cache_policy_setting_t role_policy = cp_aggressive; -}; - -/** - * @brief Represents messages sent and received on Discord - */ -struct DPP_EXPORT message : public managed { - /** id of the channel the message was sent in */ - snowflake channel_id; - /** Optional: id of the guild the message was sent in */ - snowflake guild_id; - /** the author of this message (not guaranteed to be a valid user) */ - user author; - /** Optional: member properties for this message's author */ - guild_member member; - /** contents of the message */ - std::string content; - /** message components */ - std::vector components; - /** when this message was sent */ - time_t sent; - /** when this message was edited (may be 0 if never edited) */ - time_t edited; - /** users specifically mentioned in the message */ - std::vector> mentions; - /** roles specifically mentioned in this message (only IDs currently)*/ - std::vector mention_roles; - /** Channels mentioned in the message. (Discord: not all types supported) - * Discord: Only textual channels that are visible to everyone in a lurkable guild will ever be included. Only crossposted messages (via Channel Following) currently include mention_channels at all. (includes ID, Guild ID, Type, Name)*/ - std::vector mention_channels; - /** any attached files */ - std::vector attachments; - /** Up to 10 dpp::embed objects */ - std::vector embeds; - /** Optional: reactions to the message */ - std::vector reactions; - /** Optional: used for validating a message was sent */ - std::string nonce; - /** Optional: if the message is generated by a webhook, its id will be here otherwise the field will be 0 */ - snowflake webhook_id; - /** Stickers */ - std::vector stickers; - - /** Name of file to upload (for use server-side in discord's url) */ - std::vector filename; - - /** File content to upload (raw binary) */ - std::vector filecontent; - - /** - * @brief Reference to another message, e.g. a reply - */ - struct message_ref { - /// id of the originating message - snowflake message_id; - /// id of the originating message's channel - snowflake channel_id; - /// id of the originating message's guild - snowflake guild_id; - /// when sending, whether to error if the referenced message doesn't exist instead of sending as a normal (non-reply) message, default true - bool fail_if_not_exists; - } message_reference; - - /** - * @brief Reference to an interaction - */ - struct message_interaction_struct{ - /// id of the interaction - snowflake id; - /// type of interaction - uint8_t type; - /// name of the application command - std::string name; - /// the user who invoked the interaction - user usr; - } interaction; - - /** - * @brief Allowed mentions details - */ - struct allowed_ref { - /** - * @brief Set to true to parse user mentions in the text. Default is false - */ - bool parse_users; - /** - * @brief Set to true to at-everyone and at-here mentions in the text. Default is false - */ - bool parse_everyone; - /** - * @brief Set to true to parse role mentions in the text. Default is false - */ - bool parse_roles; - /** - * @brief Set to true to mention the user who sent the message this one is replying to. Default is false - */ - bool replied_user; - /** - * @brief List of users to allow pings for - */ - std::vector users; - /** - * @brief List of roles to allow pings for - */ - std::vector roles; - } allowed_mentions; - - /** - * @brief The cluster which created this message object - */ - class cluster* owner; - - /** Message type */ - message_type type; - - /** Flags. Made of bits in dpp::message_flags */ - uint16_t flags; - - /** whether this message is pinned */ - bool pinned; - /** whether this was a TTS message */ - bool tts; - /** whether this message mentions everyone */ - bool mention_everyone; - - /** - * @brief Construct a new message object - */ - message(); - - /** - * @brief Construct a new message object - * @param o Owning cluster, passed down to various things such as dpp::attachment. - * Owning cluster is optional (can be nullptr) and if nulled, will prevent some functions - * such as attachment::download from functioning (they will throw, if used) - */ - message(class cluster* o); - - /** - * @brief Destroy the message object - */ - virtual ~message(); - - /** - * @brief Construct a new message object with a channel and content - * - * @param channel_id The channel to send the message to - * @param content The content of the message. It will be truncated to the maximum length of 4000 UTF-8 characters. - * @param type The message type to create - */ - message(snowflake channel_id, const std::string &content, message_type type = mt_default); - - /** - * @brief Construct a new message object with a channel and content - * - * @param channel_id The channel to send the message to - * @param _embed An embed to send - */ - message(snowflake channel_id, const embed & _embed); - - /** - * @brief Construct a new message object with content - * - * @param content The content of the message. It will be truncated to the maximum length of 4000 UTF-8 characters. - * @param type The message type to create - */ - message(const std::string &content, message_type type = mt_default); - - /** - * @brief Set the original message reference for replies/crossposts - * - * @param _message_id message id to reply to - * @param _guild_id guild id to reply to (optional) - * @param _channel_id channel id to reply to (optional) - * @param fail_if_not_exists true if the message send should fail if these values are invalid (optional) - * @return message& reference to self - */ - message& set_reference(snowflake _message_id, snowflake _guild_id = 0, snowflake _channel_id = 0, bool fail_if_not_exists = false); - - /** - * @brief Set the allowed mentions object for pings on the message - * - * @param _parse_users whether or not to parse users in the message content or embeds - * @param _parse_roles whether or not to parse roles in the message content or embeds - * @param _parse_everyone whether or not to parse everyone/here in the message content or embeds - * @param _replied_user if set to true and this is a reply, then ping the user we reply to - * @param users list of user ids to allow pings for - * @param roles list of role ids to allow pings for - * @return message& reference to self - */ - message& set_allowed_mentions(bool _parse_users, bool _parse_roles, bool _parse_everyone, bool _replied_user, const std::vector &users, const std::vector &roles); - - /** Fill this object from json. - * @param j JSON object to fill from - * @param cp Cache policy for user records, whether or not we cache users when a message is received - * @return A reference to self - */ - message& fill_from_json(nlohmann::json* j, cache_policy_t cp = {cp_aggressive, cp_aggressive, cp_aggressive}); - - /** Build JSON from this object. - * @param with_id True if the ID is to be included in the built JSON - * @param is_interaction_response Set to true if this message is intended to be included in an interaction response. - * This will exclude some fields that are not valid in interactions at this time. - * @return The JSON text of the message - */ - virtual std::string build_json(bool with_id = false, bool is_interaction_response = false) const; - - /** - * @brief Returns true if the message was crossposted to other servers - * - * @return true if crossposted - */ - bool is_crossposted() const; - - /** - * @brief Returns true if posted from other servers announcement channel via webhook - * - * @return true if posted from other server - */ - bool is_crosspost() const; - - /** - * @brief True if embeds have been removed - * - * @return true if embeds removed - */ - bool suppress_embeds() const; - - /** - * @brief True if source message was deleted - * - * @return true if source message deleted - */ - bool is_source_message_deleted() const; - - /** - * @brief True if urgent - * - * @return true if urgent - */ - bool is_urgent() const; - - /** - * @brief True if has thread attached - * - * @return true if has thread attached - */ - bool has_thread() const; - - /** - * @brief True if ephemeral (visible only to issuer of a slash command) - * - * @return true if ephemeral - */ - bool is_ephemeral() const; - - /** - * @brief True if loading - * - * @return true if loading - */ - bool is_loading() const; - - /** - * @brief Returns true if this message failed to mention some roles and add their members to the thread - * - * @return true if this message failed to mention some roles and add their members to the thread - */ - bool is_thread_mention_failed() const; - - /** - * @brief True if the message will not trigger push and desktop notifications - * - * @return True if notifications suppressed - */ - bool suppress_notifications() const; - - /** - * @brief Add a component (button) to message - * - * @param c component to add - * @return message& reference to self - */ - message& add_component(const component& c); - - /** - * @brief Add an embed to message - * - * @param e embed to add - * @return message& reference to self - */ - message& add_embed(const embed& e); - - /** - * @brief Set the flags - * - * @param f flags to set from dpp::message_flags - * @return message& reference to self - */ - message& set_flags(uint16_t f); - - /** - * @brief Set the message type - * - * @param t type to set - * @return message& reference to self - */ - message& set_type(message_type t); - - /** - * @brief Set the filename of the last file in list - * - * @param fn filename - * @return message& reference to self - * @deprecated Use message::add_file instead - */ - message& set_filename(const std::string &fn); - - /** - * @brief Set the file content of the last file in list - * - * @param fc raw file content contained in std::string - * @return message& reference to self - * @deprecated Use message::add_file instead - */ - message& set_file_content(const std::string &fc); - - /** - * @brief Add a file to the message - * - * @param filename filename - * @param filecontent raw file content contained in std::string - * @return message& reference to self - */ - message& add_file(const std::string &filename, const std::string &filecontent); - - /** - * @brief Set the message content - * - * @param c message content. It will be truncated to the maximum length of 4000 UTF-8 characters. - * @return message& reference to self - */ - message& set_content(const std::string &c); - - /** - * @brief Set the channel id - * - * @param _channel_id channel id - * @return message& reference to self - */ - message& set_channel_id(snowflake _channel_id); - - /** - * @brief Set the channel id - * - * @param _guild_id channel id - * @return message& reference to self - */ - message& set_guild_id(snowflake _guild_id); - - /** - * @brief Returns true if the message is from a DM - * - * @return true if message is a DM - */ - bool is_dm() const; -}; - -/** A group of messages */ -typedef std::unordered_map message_map; - -/** A group of stickers */ -typedef std::unordered_map sticker_map; - -/** A group of sticker packs */ -typedef std::unordered_map sticker_pack_map; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/misc-enum.h b/Source/ThirdParty/DPPLibrary/include/dpp/misc-enum.h deleted file mode 100644 index 2464453..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/misc-enum.h +++ /dev/null @@ -1,55 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include - -namespace dpp { - - /** @brief Supported image types for profile pictures and CDN endpoints */ - enum image_type { - /// image/png - i_png, - /// image/jpeg - i_jpg, - /// image/gif - i_gif, - /// WebP - i_webp, - }; - - /** @brief Log levels */ - enum loglevel { - /// Trace - ll_trace = 0, - /// Debug - ll_debug, - /// Information - ll_info, - /// Warning - ll_warning, - /// Error - ll_error, - /// Critical - ll_critical - }; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/nlohmann/json.hpp b/Source/ThirdParty/DPPLibrary/include/dpp/nlohmann/json.hpp deleted file mode 100644 index cb27e05..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/nlohmann/json.hpp +++ /dev/null @@ -1,22091 +0,0 @@ -/* - __ _____ _____ _____ - __| | __| | | | JSON for Modern C++ -| | |__ | | | | | | version 3.10.5 -|_____|_____|_____|_|___| https://github.com/nlohmann/json - -Licensed under the MIT License . -SPDX-License-Identifier: MIT -Copyright (c) 2013-2022 Niels Lohmann . - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -/****************************************************************************\ - * Note on documentation: The source files contain links to the online * - * documentation of the public API at https://json.nlohmann.me. This URL * - * contains the most recent documentation and should also be applicable to * - * previous versions; documentation for deprecated functions is not * - * removed, but marked deprecated. See "Generate documentation" section in * - * file doc/README.md. * -\****************************************************************************/ - -#ifndef INCLUDE_NLOHMANN_JSON_HPP_ -#define INCLUDE_NLOHMANN_JSON_HPP_ - -#define NLOHMANN_JSON_VERSION_MAJOR 3 -#define NLOHMANN_JSON_VERSION_MINOR 10 -#define NLOHMANN_JSON_VERSION_PATCH 5 - -#include // all_of, find, for_each -#include // nullptr_t, ptrdiff_t, size_t -#include // hash, less -#include // initializer_list -#ifndef JSON_NO_IO - #include // istream, ostream -#endif // JSON_NO_IO -#include // random_access_iterator_tag -#include // unique_ptr -#include // accumulate -#include // string, stoi, to_string -#include // declval, forward, move, pair, swap -#include // vector - -// #include - - -#include -#include - -// #include - - -#include // transform -#include // array -#include // forward_list -#include // inserter, front_inserter, end -#include // map -#include // string -#include // tuple, make_tuple -#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible -#include // unordered_map -#include // pair, declval -#include // valarray - -// #include - - -#include // exception -#include // runtime_error -#include // to_string -#include // vector - -// #include - - -#include // array -#include // size_t -#include // uint8_t -#include // string - -namespace nlohmann -{ -namespace detail -{ -/////////////////////////// -// JSON type enumeration // -/////////////////////////// - -/*! -@brief the JSON type enumeration - -This enumeration collects the different JSON types. It is internally used to -distinguish the stored values, and the functions @ref basic_json::is_null(), -@ref basic_json::is_object(), @ref basic_json::is_array(), -@ref basic_json::is_string(), @ref basic_json::is_boolean(), -@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), -@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), -@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and -@ref basic_json::is_structured() rely on it. - -@note There are three enumeration entries (number_integer, number_unsigned, and -number_float), because the library distinguishes these three types for numbers: -@ref basic_json::number_unsigned_t is used for unsigned integers, -@ref basic_json::number_integer_t is used for signed integers, and -@ref basic_json::number_float_t is used for floating-point numbers or to -approximate integers which do not fit in the limits of their respective type. - -@sa see @ref basic_json::basic_json(const value_t value_type) -- create a JSON -value with the default value for a given type - -@since version 1.0.0 -*/ -enum class value_t : std::uint8_t -{ - null, ///< null value - object, ///< object (unordered set of name/value pairs) - array, ///< array (ordered collection of values) - string, ///< string value - boolean, ///< boolean value - number_integer, ///< number value (signed integer) - number_unsigned, ///< number value (unsigned integer) - number_float, ///< number value (floating-point) - binary, ///< binary array (ordered collection of bytes) - discarded ///< discarded by the parser callback function -}; - -/*! -@brief comparison operator for JSON types - -Returns an ordering that is similar to Python: -- order: null < boolean < number < object < array < string < binary -- furthermore, each type is not smaller than itself -- discarded values are not comparable -- binary is represented as a b"" string in python and directly comparable to a - string; however, making a binary array directly comparable with a string would - be surprising behavior in a JSON file. - -@since version 1.0.0 -*/ -inline bool operator<(const value_t lhs, const value_t rhs) noexcept -{ - static constexpr std::array order = {{ - 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, - 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */, - 6 /* binary */ - } - }; - - const auto l_index = static_cast(lhs); - const auto r_index = static_cast(rhs); - return l_index < order.size() && r_index < order.size() && order[l_index] < order[r_index]; -} -} // namespace detail -} // namespace nlohmann - -// #include - - -#include -// #include - - -#include // declval, pair -// #include - - -/* Hedley - https://nemequ.github.io/hedley - * Created by Evan Nemerson - * - * To the extent possible under law, the author(s) have dedicated all - * copyright and related and neighboring rights to this software to - * the public domain worldwide. This software is distributed without - * any warranty. - * - * For details, see . - * SPDX-License-Identifier: CC0-1.0 - */ - -#if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 15) -#if defined(JSON_HEDLEY_VERSION) - #undef JSON_HEDLEY_VERSION -#endif -#define JSON_HEDLEY_VERSION 15 - -#if defined(JSON_HEDLEY_STRINGIFY_EX) - #undef JSON_HEDLEY_STRINGIFY_EX -#endif -#define JSON_HEDLEY_STRINGIFY_EX(x) #x - -#if defined(JSON_HEDLEY_STRINGIFY) - #undef JSON_HEDLEY_STRINGIFY -#endif -#define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x) - -#if defined(JSON_HEDLEY_CONCAT_EX) - #undef JSON_HEDLEY_CONCAT_EX -#endif -#define JSON_HEDLEY_CONCAT_EX(a,b) a##b - -#if defined(JSON_HEDLEY_CONCAT) - #undef JSON_HEDLEY_CONCAT -#endif -#define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b) - -#if defined(JSON_HEDLEY_CONCAT3_EX) - #undef JSON_HEDLEY_CONCAT3_EX -#endif -#define JSON_HEDLEY_CONCAT3_EX(a,b,c) a##b##c - -#if defined(JSON_HEDLEY_CONCAT3) - #undef JSON_HEDLEY_CONCAT3 -#endif -#define JSON_HEDLEY_CONCAT3(a,b,c) JSON_HEDLEY_CONCAT3_EX(a,b,c) - -#if defined(JSON_HEDLEY_VERSION_ENCODE) - #undef JSON_HEDLEY_VERSION_ENCODE -#endif -#define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision)) - -#if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR) - #undef JSON_HEDLEY_VERSION_DECODE_MAJOR -#endif -#define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000) - -#if defined(JSON_HEDLEY_VERSION_DECODE_MINOR) - #undef JSON_HEDLEY_VERSION_DECODE_MINOR -#endif -#define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000) - -#if defined(JSON_HEDLEY_VERSION_DECODE_REVISION) - #undef JSON_HEDLEY_VERSION_DECODE_REVISION -#endif -#define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000) - -#if defined(JSON_HEDLEY_GNUC_VERSION) - #undef JSON_HEDLEY_GNUC_VERSION -#endif -#if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__) - #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) -#elif defined(__GNUC__) - #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0) -#endif - -#if defined(JSON_HEDLEY_GNUC_VERSION_CHECK) - #undef JSON_HEDLEY_GNUC_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_GNUC_VERSION) - #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_MSVC_VERSION) - #undef JSON_HEDLEY_MSVC_VERSION -#endif -#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000) && !defined(__ICL) - #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100) -#elif defined(_MSC_FULL_VER) && !defined(__ICL) - #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10) -#elif defined(_MSC_VER) && !defined(__ICL) - #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0) -#endif - -#if defined(JSON_HEDLEY_MSVC_VERSION_CHECK) - #undef JSON_HEDLEY_MSVC_VERSION_CHECK -#endif -#if !defined(JSON_HEDLEY_MSVC_VERSION) - #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0) -#elif defined(_MSC_VER) && (_MSC_VER >= 1400) - #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch))) -#elif defined(_MSC_VER) && (_MSC_VER >= 1200) - #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch))) -#else - #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor))) -#endif - -#if defined(JSON_HEDLEY_INTEL_VERSION) - #undef JSON_HEDLEY_INTEL_VERSION -#endif -#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && !defined(__ICL) - #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE) -#elif defined(__INTEL_COMPILER) && !defined(__ICL) - #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0) -#endif - -#if defined(JSON_HEDLEY_INTEL_VERSION_CHECK) - #undef JSON_HEDLEY_INTEL_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_INTEL_VERSION) - #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_INTEL_CL_VERSION) - #undef JSON_HEDLEY_INTEL_CL_VERSION -#endif -#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && defined(__ICL) - #define JSON_HEDLEY_INTEL_CL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER, __INTEL_COMPILER_UPDATE, 0) -#endif - -#if defined(JSON_HEDLEY_INTEL_CL_VERSION_CHECK) - #undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_INTEL_CL_VERSION) - #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_CL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_PGI_VERSION) - #undef JSON_HEDLEY_PGI_VERSION -#endif -#if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) - #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__) -#endif - -#if defined(JSON_HEDLEY_PGI_VERSION_CHECK) - #undef JSON_HEDLEY_PGI_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_PGI_VERSION) - #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_SUNPRO_VERSION) - #undef JSON_HEDLEY_SUNPRO_VERSION -#endif -#if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000) - #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10) -#elif defined(__SUNPRO_C) - #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf) -#elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000) - #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10) -#elif defined(__SUNPRO_CC) - #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf) -#endif - -#if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK) - #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_SUNPRO_VERSION) - #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) - #undef JSON_HEDLEY_EMSCRIPTEN_VERSION -#endif -#if defined(__EMSCRIPTEN__) - #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__) -#endif - -#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK) - #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) - #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_ARM_VERSION) - #undef JSON_HEDLEY_ARM_VERSION -#endif -#if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION) - #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100) -#elif defined(__CC_ARM) && defined(__ARMCC_VERSION) - #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100) -#endif - -#if defined(JSON_HEDLEY_ARM_VERSION_CHECK) - #undef JSON_HEDLEY_ARM_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_ARM_VERSION) - #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_IBM_VERSION) - #undef JSON_HEDLEY_IBM_VERSION -#endif -#if defined(__ibmxl__) - #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__) -#elif defined(__xlC__) && defined(__xlC_ver__) - #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff) -#elif defined(__xlC__) - #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0) -#endif - -#if defined(JSON_HEDLEY_IBM_VERSION_CHECK) - #undef JSON_HEDLEY_IBM_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_IBM_VERSION) - #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_TI_VERSION) - #undef JSON_HEDLEY_TI_VERSION -#endif -#if \ - defined(__TI_COMPILER_VERSION__) && \ - ( \ - defined(__TMS470__) || defined(__TI_ARM__) || \ - defined(__MSP430__) || \ - defined(__TMS320C2000__) \ - ) -#if (__TI_COMPILER_VERSION__ >= 16000000) - #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) -#endif -#endif - -#if defined(JSON_HEDLEY_TI_VERSION_CHECK) - #undef JSON_HEDLEY_TI_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_TI_VERSION) - #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_TI_CL2000_VERSION) - #undef JSON_HEDLEY_TI_CL2000_VERSION -#endif -#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C2000__) - #define JSON_HEDLEY_TI_CL2000_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) -#endif - -#if defined(JSON_HEDLEY_TI_CL2000_VERSION_CHECK) - #undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_TI_CL2000_VERSION) - #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL2000_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_TI_CL430_VERSION) - #undef JSON_HEDLEY_TI_CL430_VERSION -#endif -#if defined(__TI_COMPILER_VERSION__) && defined(__MSP430__) - #define JSON_HEDLEY_TI_CL430_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) -#endif - -#if defined(JSON_HEDLEY_TI_CL430_VERSION_CHECK) - #undef JSON_HEDLEY_TI_CL430_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_TI_CL430_VERSION) - #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL430_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) - #undef JSON_HEDLEY_TI_ARMCL_VERSION -#endif -#if defined(__TI_COMPILER_VERSION__) && (defined(__TMS470__) || defined(__TI_ARM__)) - #define JSON_HEDLEY_TI_ARMCL_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) -#endif - -#if defined(JSON_HEDLEY_TI_ARMCL_VERSION_CHECK) - #undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) - #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_ARMCL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_TI_CL6X_VERSION) - #undef JSON_HEDLEY_TI_CL6X_VERSION -#endif -#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C6X__) - #define JSON_HEDLEY_TI_CL6X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) -#endif - -#if defined(JSON_HEDLEY_TI_CL6X_VERSION_CHECK) - #undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_TI_CL6X_VERSION) - #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL6X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_TI_CL7X_VERSION) - #undef JSON_HEDLEY_TI_CL7X_VERSION -#endif -#if defined(__TI_COMPILER_VERSION__) && defined(__C7000__) - #define JSON_HEDLEY_TI_CL7X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) -#endif - -#if defined(JSON_HEDLEY_TI_CL7X_VERSION_CHECK) - #undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_TI_CL7X_VERSION) - #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL7X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) - #undef JSON_HEDLEY_TI_CLPRU_VERSION -#endif -#if defined(__TI_COMPILER_VERSION__) && defined(__PRU__) - #define JSON_HEDLEY_TI_CLPRU_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) -#endif - -#if defined(JSON_HEDLEY_TI_CLPRU_VERSION_CHECK) - #undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) - #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CLPRU_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_CRAY_VERSION) - #undef JSON_HEDLEY_CRAY_VERSION -#endif -#if defined(_CRAYC) - #if defined(_RELEASE_PATCHLEVEL) - #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL) - #else - #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0) - #endif -#endif - -#if defined(JSON_HEDLEY_CRAY_VERSION_CHECK) - #undef JSON_HEDLEY_CRAY_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_CRAY_VERSION) - #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_IAR_VERSION) - #undef JSON_HEDLEY_IAR_VERSION -#endif -#if defined(__IAR_SYSTEMS_ICC__) - #if __VER__ > 1000 - #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000)) - #else - #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(__VER__ / 100, __VER__ % 100, 0) - #endif -#endif - -#if defined(JSON_HEDLEY_IAR_VERSION_CHECK) - #undef JSON_HEDLEY_IAR_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_IAR_VERSION) - #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_TINYC_VERSION) - #undef JSON_HEDLEY_TINYC_VERSION -#endif -#if defined(__TINYC__) - #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100) -#endif - -#if defined(JSON_HEDLEY_TINYC_VERSION_CHECK) - #undef JSON_HEDLEY_TINYC_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_TINYC_VERSION) - #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_DMC_VERSION) - #undef JSON_HEDLEY_DMC_VERSION -#endif -#if defined(__DMC__) - #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf) -#endif - -#if defined(JSON_HEDLEY_DMC_VERSION_CHECK) - #undef JSON_HEDLEY_DMC_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_DMC_VERSION) - #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_COMPCERT_VERSION) - #undef JSON_HEDLEY_COMPCERT_VERSION -#endif -#if defined(__COMPCERT_VERSION__) - #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100) -#endif - -#if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK) - #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_COMPCERT_VERSION) - #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_PELLES_VERSION) - #undef JSON_HEDLEY_PELLES_VERSION -#endif -#if defined(__POCC__) - #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0) -#endif - -#if defined(JSON_HEDLEY_PELLES_VERSION_CHECK) - #undef JSON_HEDLEY_PELLES_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_PELLES_VERSION) - #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_MCST_LCC_VERSION) - #undef JSON_HEDLEY_MCST_LCC_VERSION -#endif -#if defined(__LCC__) && defined(__LCC_MINOR__) - #define JSON_HEDLEY_MCST_LCC_VERSION JSON_HEDLEY_VERSION_ENCODE(__LCC__ / 100, __LCC__ % 100, __LCC_MINOR__) -#endif - -#if defined(JSON_HEDLEY_MCST_LCC_VERSION_CHECK) - #undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_MCST_LCC_VERSION) - #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_MCST_LCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_GCC_VERSION) - #undef JSON_HEDLEY_GCC_VERSION -#endif -#if \ - defined(JSON_HEDLEY_GNUC_VERSION) && \ - !defined(__clang__) && \ - !defined(JSON_HEDLEY_INTEL_VERSION) && \ - !defined(JSON_HEDLEY_PGI_VERSION) && \ - !defined(JSON_HEDLEY_ARM_VERSION) && \ - !defined(JSON_HEDLEY_CRAY_VERSION) && \ - !defined(JSON_HEDLEY_TI_VERSION) && \ - !defined(JSON_HEDLEY_TI_ARMCL_VERSION) && \ - !defined(JSON_HEDLEY_TI_CL430_VERSION) && \ - !defined(JSON_HEDLEY_TI_CL2000_VERSION) && \ - !defined(JSON_HEDLEY_TI_CL6X_VERSION) && \ - !defined(JSON_HEDLEY_TI_CL7X_VERSION) && \ - !defined(JSON_HEDLEY_TI_CLPRU_VERSION) && \ - !defined(__COMPCERT__) && \ - !defined(JSON_HEDLEY_MCST_LCC_VERSION) - #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION -#endif - -#if defined(JSON_HEDLEY_GCC_VERSION_CHECK) - #undef JSON_HEDLEY_GCC_VERSION_CHECK -#endif -#if defined(JSON_HEDLEY_GCC_VERSION) - #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) -#else - #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0) -#endif - -#if defined(JSON_HEDLEY_HAS_ATTRIBUTE) - #undef JSON_HEDLEY_HAS_ATTRIBUTE -#endif -#if \ - defined(__has_attribute) && \ - ( \ - (!defined(JSON_HEDLEY_IAR_VERSION) || JSON_HEDLEY_IAR_VERSION_CHECK(8,5,9)) \ - ) -# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute) -#else -# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0) -#endif - -#if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE) - #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE -#endif -#if defined(__has_attribute) - #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) -#else - #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) -#endif - -#if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE) - #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE -#endif -#if defined(__has_attribute) - #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) -#else - #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) -#endif - -#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE) - #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE -#endif -#if \ - defined(__has_cpp_attribute) && \ - defined(__cplusplus) && \ - (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) - #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute) -#else - #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0) -#endif - -#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS) - #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS -#endif -#if !defined(__cplusplus) || !defined(__has_cpp_attribute) - #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) -#elif \ - !defined(JSON_HEDLEY_PGI_VERSION) && \ - !defined(JSON_HEDLEY_IAR_VERSION) && \ - (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \ - (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0)) - #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute) -#else - #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) -#endif - -#if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE) - #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE -#endif -#if defined(__has_cpp_attribute) && defined(__cplusplus) - #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) -#else - #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) -#endif - -#if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE) - #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE -#endif -#if defined(__has_cpp_attribute) && defined(__cplusplus) - #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) -#else - #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) -#endif - -#if defined(JSON_HEDLEY_HAS_BUILTIN) - #undef JSON_HEDLEY_HAS_BUILTIN -#endif -#if defined(__has_builtin) - #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin) -#else - #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0) -#endif - -#if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN) - #undef JSON_HEDLEY_GNUC_HAS_BUILTIN -#endif -#if defined(__has_builtin) - #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) -#else - #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) -#endif - -#if defined(JSON_HEDLEY_GCC_HAS_BUILTIN) - #undef JSON_HEDLEY_GCC_HAS_BUILTIN -#endif -#if defined(__has_builtin) - #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) -#else - #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) -#endif - -#if defined(JSON_HEDLEY_HAS_FEATURE) - #undef JSON_HEDLEY_HAS_FEATURE -#endif -#if defined(__has_feature) - #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature) -#else - #define JSON_HEDLEY_HAS_FEATURE(feature) (0) -#endif - -#if defined(JSON_HEDLEY_GNUC_HAS_FEATURE) - #undef JSON_HEDLEY_GNUC_HAS_FEATURE -#endif -#if defined(__has_feature) - #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) -#else - #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) -#endif - -#if defined(JSON_HEDLEY_GCC_HAS_FEATURE) - #undef JSON_HEDLEY_GCC_HAS_FEATURE -#endif -#if defined(__has_feature) - #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) -#else - #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) -#endif - -#if defined(JSON_HEDLEY_HAS_EXTENSION) - #undef JSON_HEDLEY_HAS_EXTENSION -#endif -#if defined(__has_extension) - #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension) -#else - #define JSON_HEDLEY_HAS_EXTENSION(extension) (0) -#endif - -#if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION) - #undef JSON_HEDLEY_GNUC_HAS_EXTENSION -#endif -#if defined(__has_extension) - #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) -#else - #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) -#endif - -#if defined(JSON_HEDLEY_GCC_HAS_EXTENSION) - #undef JSON_HEDLEY_GCC_HAS_EXTENSION -#endif -#if defined(__has_extension) - #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) -#else - #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) -#endif - -#if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE) - #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE -#endif -#if defined(__has_declspec_attribute) - #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute) -#else - #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0) -#endif - -#if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE) - #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE -#endif -#if defined(__has_declspec_attribute) - #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) -#else - #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) -#endif - -#if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE) - #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE -#endif -#if defined(__has_declspec_attribute) - #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) -#else - #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) -#endif - -#if defined(JSON_HEDLEY_HAS_WARNING) - #undef JSON_HEDLEY_HAS_WARNING -#endif -#if defined(__has_warning) - #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning) -#else - #define JSON_HEDLEY_HAS_WARNING(warning) (0) -#endif - -#if defined(JSON_HEDLEY_GNUC_HAS_WARNING) - #undef JSON_HEDLEY_GNUC_HAS_WARNING -#endif -#if defined(__has_warning) - #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) -#else - #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) -#endif - -#if defined(JSON_HEDLEY_GCC_HAS_WARNING) - #undef JSON_HEDLEY_GCC_HAS_WARNING -#endif -#if defined(__has_warning) - #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) -#else - #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) -#endif - -#if \ - (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ - defined(__clang__) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ - JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ - JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,0,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ - JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \ - JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \ - JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \ - (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR)) - #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value) -#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) - #define JSON_HEDLEY_PRAGMA(value) __pragma(value) -#else - #define JSON_HEDLEY_PRAGMA(value) -#endif - -#if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH) - #undef JSON_HEDLEY_DIAGNOSTIC_PUSH -#endif -#if defined(JSON_HEDLEY_DIAGNOSTIC_POP) - #undef JSON_HEDLEY_DIAGNOSTIC_POP -#endif -#if defined(__clang__) - #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") - #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") -#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) - #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") - #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") -#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) - #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") - #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") -#elif \ - JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ - JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) - #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push)) - #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop)) -#elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) - #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push") - #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop") -#elif \ - JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,4,0) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) - #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push") - #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop") -#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) - #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") - #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") -#else - #define JSON_HEDLEY_DIAGNOSTIC_PUSH - #define JSON_HEDLEY_DIAGNOSTIC_POP -#endif - -/* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for - HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ -#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) - #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ -#endif -#if defined(__cplusplus) -# if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat") -# if JSON_HEDLEY_HAS_WARNING("-Wc++17-extensions") -# if JSON_HEDLEY_HAS_WARNING("-Wc++1z-extensions") -# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ - JSON_HEDLEY_DIAGNOSTIC_PUSH \ - _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ - _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ - _Pragma("clang diagnostic ignored \"-Wc++1z-extensions\"") \ - xpr \ - JSON_HEDLEY_DIAGNOSTIC_POP -# else -# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ - JSON_HEDLEY_DIAGNOSTIC_PUSH \ - _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ - _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ - xpr \ - JSON_HEDLEY_DIAGNOSTIC_POP -# endif -# else -# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ - JSON_HEDLEY_DIAGNOSTIC_PUSH \ - _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ - xpr \ - JSON_HEDLEY_DIAGNOSTIC_POP -# endif -# endif -#endif -#if !defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x -#endif - -#if defined(JSON_HEDLEY_CONST_CAST) - #undef JSON_HEDLEY_CONST_CAST -#endif -#if defined(__cplusplus) -# define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast(expr)) -#elif \ - JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \ - JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) -# define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \ - JSON_HEDLEY_DIAGNOSTIC_PUSH \ - JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \ - ((T) (expr)); \ - JSON_HEDLEY_DIAGNOSTIC_POP \ - })) -#else -# define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr)) -#endif - -#if defined(JSON_HEDLEY_REINTERPRET_CAST) - #undef JSON_HEDLEY_REINTERPRET_CAST -#endif -#if defined(__cplusplus) - #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast(expr)) -#else - #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) ((T) (expr)) -#endif - -#if defined(JSON_HEDLEY_STATIC_CAST) - #undef JSON_HEDLEY_STATIC_CAST -#endif -#if defined(__cplusplus) - #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast(expr)) -#else - #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr)) -#endif - -#if defined(JSON_HEDLEY_CPP_CAST) - #undef JSON_HEDLEY_CPP_CAST -#endif -#if defined(__cplusplus) -# if JSON_HEDLEY_HAS_WARNING("-Wold-style-cast") -# define JSON_HEDLEY_CPP_CAST(T, expr) \ - JSON_HEDLEY_DIAGNOSTIC_PUSH \ - _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") \ - ((T) (expr)) \ - JSON_HEDLEY_DIAGNOSTIC_POP -# elif JSON_HEDLEY_IAR_VERSION_CHECK(8,3,0) -# define JSON_HEDLEY_CPP_CAST(T, expr) \ - JSON_HEDLEY_DIAGNOSTIC_PUSH \ - _Pragma("diag_suppress=Pe137") \ - JSON_HEDLEY_DIAGNOSTIC_POP -# else -# define JSON_HEDLEY_CPP_CAST(T, expr) ((T) (expr)) -# endif -#else -# define JSON_HEDLEY_CPP_CAST(T, expr) (expr) -#endif - -#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED) - #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED -#endif -#if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations") - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") -#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)") -#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:1478 1786)) -#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1216,1444,1445") -#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") -#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") -#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996)) -#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") -#elif \ - JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ - (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ - (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ - (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ - (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718") -#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)") -#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)") -#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215") -#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)") -#else - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED -#endif - -#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS) - #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS -#endif -#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") -#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)") -#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:161)) -#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675") -#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") -#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068)) -#elif \ - JSON_HEDLEY_TI_VERSION_CHECK(16,9,0) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") -#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") -#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161") -#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 161") -#else - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS -#endif - -#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES) - #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES -#endif -#if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes") - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"") -#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") -#elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)") -#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:1292)) -#elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030)) -#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097,1098") -#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") -#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)") -#elif \ - JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173") -#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress=Pe1097") -#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") -#else - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES -#endif - -#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL) - #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL -#endif -#if JSON_HEDLEY_HAS_WARNING("-Wcast-qual") - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"") -#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)") -#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") -#else - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL -#endif - -#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION) - #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION -#endif -#if JSON_HEDLEY_HAS_WARNING("-Wunused-function") - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("clang diagnostic ignored \"-Wunused-function\"") -#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("GCC diagnostic ignored \"-Wunused-function\"") -#elif JSON_HEDLEY_MSVC_VERSION_CHECK(1,0,0) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION __pragma(warning(disable:4505)) -#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("diag_suppress 3142") -#else - #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION -#endif - -#if defined(JSON_HEDLEY_DEPRECATED) - #undef JSON_HEDLEY_DEPRECATED -#endif -#if defined(JSON_HEDLEY_DEPRECATED_FOR) - #undef JSON_HEDLEY_DEPRECATED_FOR -#endif -#if \ - JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ - JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) - #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since)) - #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement)) -#elif \ - (JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ - JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \ - JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ - JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(18,1,0) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since))) - #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement))) -#elif defined(__cplusplus) && (__cplusplus >= 201402L) - #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]]) - #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]]) -#elif \ - JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ - JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ - (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ - (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ - (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ - (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ - JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) - #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__)) - #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__)) -#elif \ - JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ - JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0) || \ - JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) - #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated) - #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated) -#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) - #define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated") - #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated") -#else - #define JSON_HEDLEY_DEPRECATED(since) - #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) -#endif - -#if defined(JSON_HEDLEY_UNAVAILABLE) - #undef JSON_HEDLEY_UNAVAILABLE -#endif -#if \ - JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since))) -#else - #define JSON_HEDLEY_UNAVAILABLE(available_since) -#endif - -#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT) - #undef JSON_HEDLEY_WARN_UNUSED_RESULT -#endif -#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT_MSG) - #undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG -#endif -#if \ - JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ - (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ - (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ - (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ - (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ - (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ - JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) - #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) __attribute__((__warn_unused_result__)) -#elif (JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) >= 201907L) - #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) - #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]]) -#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) - #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) - #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) -#elif defined(_Check_return_) /* SAL */ - #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_ - #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) _Check_return_ -#else - #define JSON_HEDLEY_WARN_UNUSED_RESULT - #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) -#endif - -#if defined(JSON_HEDLEY_SENTINEL) - #undef JSON_HEDLEY_SENTINEL -#endif -#if \ - JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position))) -#else - #define JSON_HEDLEY_SENTINEL(position) -#endif - -#if defined(JSON_HEDLEY_NO_RETURN) - #undef JSON_HEDLEY_NO_RETURN -#endif -#if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) - #define JSON_HEDLEY_NO_RETURN __noreturn -#elif \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) -#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L - #define JSON_HEDLEY_NO_RETURN _Noreturn -#elif defined(__cplusplus) && (__cplusplus >= 201103L) - #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]]) -#elif \ - JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \ - JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ - JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ - JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ - (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ - (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ - (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ - (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ - JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) - #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) -#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) - #define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return") -#elif \ - JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ - JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) - #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) -#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) - #define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;") -#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) - #define JSON_HEDLEY_NO_RETURN __attribute((noreturn)) -#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) - #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) -#else - #define JSON_HEDLEY_NO_RETURN -#endif - -#if defined(JSON_HEDLEY_NO_ESCAPE) - #undef JSON_HEDLEY_NO_ESCAPE -#endif -#if JSON_HEDLEY_HAS_ATTRIBUTE(noescape) - #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__)) -#else - #define JSON_HEDLEY_NO_ESCAPE -#endif - -#if defined(JSON_HEDLEY_UNREACHABLE) - #undef JSON_HEDLEY_UNREACHABLE -#endif -#if defined(JSON_HEDLEY_UNREACHABLE_RETURN) - #undef JSON_HEDLEY_UNREACHABLE_RETURN -#endif -#if defined(JSON_HEDLEY_ASSUME) - #undef JSON_HEDLEY_ASSUME -#endif -#if \ - JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) - #define JSON_HEDLEY_ASSUME(expr) __assume(expr) -#elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume) - #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr) -#elif \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) - #if defined(__cplusplus) - #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr) - #else - #define JSON_HEDLEY_ASSUME(expr) _nassert(expr) - #endif -#endif -#if \ - (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ - JSON_HEDLEY_PGI_VERSION_CHECK(18,10,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5) || \ - JSON_HEDLEY_CRAY_VERSION_CHECK(10,0,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable() -#elif defined(JSON_HEDLEY_ASSUME) - #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) -#endif -#if !defined(JSON_HEDLEY_ASSUME) - #if defined(JSON_HEDLEY_UNREACHABLE) - #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (JSON_HEDLEY_UNREACHABLE(), 1))) - #else - #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, expr) - #endif -#endif -#if defined(JSON_HEDLEY_UNREACHABLE) - #if \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) - #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (JSON_HEDLEY_STATIC_CAST(void, JSON_HEDLEY_ASSUME(0)), (value)) - #else - #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE() - #endif -#else - #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (value) -#endif -#if !defined(JSON_HEDLEY_UNREACHABLE) - #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) -#endif - -JSON_HEDLEY_DIAGNOSTIC_PUSH -#if JSON_HEDLEY_HAS_WARNING("-Wpedantic") - #pragma clang diagnostic ignored "-Wpedantic" -#endif -#if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus) - #pragma clang diagnostic ignored "-Wc++98-compat-pedantic" -#endif -#if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0) - #if defined(__clang__) - #pragma clang diagnostic ignored "-Wvariadic-macros" - #elif defined(JSON_HEDLEY_GCC_VERSION) - #pragma GCC diagnostic ignored "-Wvariadic-macros" - #endif -#endif -#if defined(JSON_HEDLEY_NON_NULL) - #undef JSON_HEDLEY_NON_NULL -#endif -#if \ - JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) - #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__))) -#else - #define JSON_HEDLEY_NON_NULL(...) -#endif -JSON_HEDLEY_DIAGNOSTIC_POP - -#if defined(JSON_HEDLEY_PRINTF_FORMAT) - #undef JSON_HEDLEY_PRINTF_FORMAT -#endif -#if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO) - #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check))) -#elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO) - #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check))) -#elif \ - JSON_HEDLEY_HAS_ATTRIBUTE(format) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ - JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ - JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ - (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ - (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ - (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ - (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check))) -#elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0) - #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check)) -#else - #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) -#endif - -#if defined(JSON_HEDLEY_CONSTEXPR) - #undef JSON_HEDLEY_CONSTEXPR -#endif -#if defined(__cplusplus) - #if __cplusplus >= 201103L - #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr) - #endif -#endif -#if !defined(JSON_HEDLEY_CONSTEXPR) - #define JSON_HEDLEY_CONSTEXPR -#endif - -#if defined(JSON_HEDLEY_PREDICT) - #undef JSON_HEDLEY_PREDICT -#endif -#if defined(JSON_HEDLEY_LIKELY) - #undef JSON_HEDLEY_LIKELY -#endif -#if defined(JSON_HEDLEY_UNLIKELY) - #undef JSON_HEDLEY_UNLIKELY -#endif -#if defined(JSON_HEDLEY_UNPREDICTABLE) - #undef JSON_HEDLEY_UNPREDICTABLE -#endif -#if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable) - #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable((expr)) -#endif -#if \ - (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) && !defined(JSON_HEDLEY_PGI_VERSION)) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) -# define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability( (expr), (value), (probability)) -# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1 , (probability)) -# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0 , (probability)) -# define JSON_HEDLEY_LIKELY(expr) __builtin_expect (!!(expr), 1 ) -# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect (!!(expr), 0 ) -#elif \ - (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ - JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ - JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ - JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27) || \ - JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) -# define JSON_HEDLEY_PREDICT(expr, expected, probability) \ - (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) : (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))) -# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \ - (__extension__ ({ \ - double hedley_probability_ = (probability); \ - ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \ - })) -# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \ - (__extension__ ({ \ - double hedley_probability_ = (probability); \ - ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \ - })) -# define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1) -# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0) -#else -# define JSON_HEDLEY_PREDICT(expr, expected, probability) (JSON_HEDLEY_STATIC_CAST(void, expected), (expr)) -# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr)) -# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr)) -# define JSON_HEDLEY_LIKELY(expr) (!!(expr)) -# define JSON_HEDLEY_UNLIKELY(expr) (!!(expr)) -#endif -#if !defined(JSON_HEDLEY_UNPREDICTABLE) - #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5) -#endif - -#if defined(JSON_HEDLEY_MALLOC) - #undef JSON_HEDLEY_MALLOC -#endif -#if \ - JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ - JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ - JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ - (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ - (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ - (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ - (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_MALLOC __attribute__((__malloc__)) -#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) - #define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory") -#elif \ - JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ - JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) - #define JSON_HEDLEY_MALLOC __declspec(restrict) -#else - #define JSON_HEDLEY_MALLOC -#endif - -#if defined(JSON_HEDLEY_PURE) - #undef JSON_HEDLEY_PURE -#endif -#if \ - JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ - JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ - JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ - (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ - (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ - (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ - (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ - JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) -# define JSON_HEDLEY_PURE __attribute__((__pure__)) -#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) -# define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data") -#elif defined(__cplusplus) && \ - ( \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) \ - ) -# define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;") -#else -# define JSON_HEDLEY_PURE -#endif - -#if defined(JSON_HEDLEY_CONST) - #undef JSON_HEDLEY_CONST -#endif -#if \ - JSON_HEDLEY_HAS_ATTRIBUTE(const) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ - JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ - JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ - (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ - (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ - (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ - (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ - JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_CONST __attribute__((__const__)) -#elif \ - JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) - #define JSON_HEDLEY_CONST _Pragma("no_side_effect") -#else - #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE -#endif - -#if defined(JSON_HEDLEY_RESTRICT) - #undef JSON_HEDLEY_RESTRICT -#endif -#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus) - #define JSON_HEDLEY_RESTRICT restrict -#elif \ - JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ - JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ - JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ - JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,4) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \ - JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ - defined(__clang__) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_RESTRICT __restrict -#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus) - #define JSON_HEDLEY_RESTRICT _Restrict -#else - #define JSON_HEDLEY_RESTRICT -#endif - -#if defined(JSON_HEDLEY_INLINE) - #undef JSON_HEDLEY_INLINE -#endif -#if \ - (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ - (defined(__cplusplus) && (__cplusplus >= 199711L)) - #define JSON_HEDLEY_INLINE inline -#elif \ - defined(JSON_HEDLEY_GCC_VERSION) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0) - #define JSON_HEDLEY_INLINE __inline__ -#elif \ - JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ - JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,1,0) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_INLINE __inline -#else - #define JSON_HEDLEY_INLINE -#endif - -#if defined(JSON_HEDLEY_ALWAYS_INLINE) - #undef JSON_HEDLEY_ALWAYS_INLINE -#endif -#if \ - JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ - JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ - JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ - (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ - (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ - (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ - (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ - JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) -# define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE -#elif \ - JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ - JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) -# define JSON_HEDLEY_ALWAYS_INLINE __forceinline -#elif defined(__cplusplus) && \ - ( \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) \ - ) -# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;") -#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) -# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced") -#else -# define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE -#endif - -#if defined(JSON_HEDLEY_NEVER_INLINE) - #undef JSON_HEDLEY_NEVER_INLINE -#endif -#if \ - JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ - JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ - JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ - (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ - (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ - (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ - (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ - JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ - JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ - JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) - #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__)) -#elif \ - JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ - JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) - #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) -#elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0) - #define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline") -#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) - #define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;") -#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) - #define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never") -#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) - #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline)) -#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) - #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) -#else - #define JSON_HEDLEY_NEVER_INLINE -#endif - -#if defined(JSON_HEDLEY_PRIVATE) - #undef JSON_HEDLEY_PRIVATE -#endif -#if defined(JSON_HEDLEY_PUBLIC) - #undef JSON_HEDLEY_PUBLIC -#endif -#if defined(JSON_HEDLEY_IMPORT) - #undef JSON_HEDLEY_IMPORT -#endif -#if defined(_WIN32) || defined(__CYGWIN__) -# define JSON_HEDLEY_PRIVATE -# define JSON_HEDLEY_PUBLIC __declspec(dllexport) -# define JSON_HEDLEY_IMPORT __declspec(dllimport) -#else -# if \ - JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ - JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ - JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ - ( \ - defined(__TI_EABI__) && \ - ( \ - (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) \ - ) \ - ) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) -# define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden"))) -# define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default"))) -# else -# define JSON_HEDLEY_PRIVATE -# define JSON_HEDLEY_PUBLIC -# endif -# define JSON_HEDLEY_IMPORT extern -#endif - -#if defined(JSON_HEDLEY_NO_THROW) - #undef JSON_HEDLEY_NO_THROW -#endif -#if \ - JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__)) -#elif \ - JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \ - JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) - #define JSON_HEDLEY_NO_THROW __declspec(nothrow) -#else - #define JSON_HEDLEY_NO_THROW -#endif - -#if defined(JSON_HEDLEY_FALL_THROUGH) - #undef JSON_HEDLEY_FALL_THROUGH -#endif -#if \ - JSON_HEDLEY_HAS_ATTRIBUTE(fallthrough) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(7,0,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__)) -#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough) - #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]]) -#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough) - #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]]) -#elif defined(__fallthrough) /* SAL */ - #define JSON_HEDLEY_FALL_THROUGH __fallthrough -#else - #define JSON_HEDLEY_FALL_THROUGH -#endif - -#if defined(JSON_HEDLEY_RETURNS_NON_NULL) - #undef JSON_HEDLEY_RETURNS_NON_NULL -#endif -#if \ - JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__)) -#elif defined(_Ret_notnull_) /* SAL */ - #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_ -#else - #define JSON_HEDLEY_RETURNS_NON_NULL -#endif - -#if defined(JSON_HEDLEY_ARRAY_PARAM) - #undef JSON_HEDLEY_ARRAY_PARAM -#endif -#if \ - defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ - !defined(__STDC_NO_VLA__) && \ - !defined(__cplusplus) && \ - !defined(JSON_HEDLEY_PGI_VERSION) && \ - !defined(JSON_HEDLEY_TINYC_VERSION) - #define JSON_HEDLEY_ARRAY_PARAM(name) (name) -#else - #define JSON_HEDLEY_ARRAY_PARAM(name) -#endif - -#if defined(JSON_HEDLEY_IS_CONSTANT) - #undef JSON_HEDLEY_IS_CONSTANT -#endif -#if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR) - #undef JSON_HEDLEY_REQUIRE_CONSTEXPR -#endif -/* JSON_HEDLEY_IS_CONSTEXPR_ is for - HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ -#if defined(JSON_HEDLEY_IS_CONSTEXPR_) - #undef JSON_HEDLEY_IS_CONSTEXPR_ -#endif -#if \ - JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ - JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ - JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ - (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \ - JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ - JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) - #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr) -#endif -#if !defined(__cplusplus) -# if \ - JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ - JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ - JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24) -#if defined(__INTPTR_TYPE__) - #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*) -#else - #include - #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*) -#endif -# elif \ - ( \ - defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \ - !defined(JSON_HEDLEY_SUNPRO_VERSION) && \ - !defined(JSON_HEDLEY_PGI_VERSION) && \ - !defined(JSON_HEDLEY_IAR_VERSION)) || \ - (JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \ - JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ - JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0) -#if defined(__INTPTR_TYPE__) - #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0) -#else - #include - #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0) -#endif -# elif \ - defined(JSON_HEDLEY_GCC_VERSION) || \ - defined(JSON_HEDLEY_INTEL_VERSION) || \ - defined(JSON_HEDLEY_TINYC_VERSION) || \ - defined(JSON_HEDLEY_TI_ARMCL_VERSION) || \ - JSON_HEDLEY_TI_CL430_VERSION_CHECK(18,12,0) || \ - defined(JSON_HEDLEY_TI_CL2000_VERSION) || \ - defined(JSON_HEDLEY_TI_CL6X_VERSION) || \ - defined(JSON_HEDLEY_TI_CL7X_VERSION) || \ - defined(JSON_HEDLEY_TI_CLPRU_VERSION) || \ - defined(__clang__) -# define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \ - sizeof(void) != \ - sizeof(*( \ - 1 ? \ - ((void*) ((expr) * 0L) ) : \ -((struct { char v[sizeof(void) * 2]; } *) 1) \ - ) \ - ) \ - ) -# endif -#endif -#if defined(JSON_HEDLEY_IS_CONSTEXPR_) - #if !defined(JSON_HEDLEY_IS_CONSTANT) - #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr) - #endif - #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1)) -#else - #if !defined(JSON_HEDLEY_IS_CONSTANT) - #define JSON_HEDLEY_IS_CONSTANT(expr) (0) - #endif - #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr) -#endif - -#if defined(JSON_HEDLEY_BEGIN_C_DECLS) - #undef JSON_HEDLEY_BEGIN_C_DECLS -#endif -#if defined(JSON_HEDLEY_END_C_DECLS) - #undef JSON_HEDLEY_END_C_DECLS -#endif -#if defined(JSON_HEDLEY_C_DECL) - #undef JSON_HEDLEY_C_DECL -#endif -#if defined(__cplusplus) - #define JSON_HEDLEY_BEGIN_C_DECLS extern "C" { - #define JSON_HEDLEY_END_C_DECLS } - #define JSON_HEDLEY_C_DECL extern "C" -#else - #define JSON_HEDLEY_BEGIN_C_DECLS - #define JSON_HEDLEY_END_C_DECLS - #define JSON_HEDLEY_C_DECL -#endif - -#if defined(JSON_HEDLEY_STATIC_ASSERT) - #undef JSON_HEDLEY_STATIC_ASSERT -#endif -#if \ - !defined(__cplusplus) && ( \ - (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \ - (JSON_HEDLEY_HAS_FEATURE(c_static_assert) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ - JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ - defined(_Static_assert) \ - ) -# define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message) -#elif \ - (defined(__cplusplus) && (__cplusplus >= 201103L)) || \ - JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \ - JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) -# define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message)) -#else -# define JSON_HEDLEY_STATIC_ASSERT(expr, message) -#endif - -#if defined(JSON_HEDLEY_NULL) - #undef JSON_HEDLEY_NULL -#endif -#if defined(__cplusplus) - #if __cplusplus >= 201103L - #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr) - #elif defined(NULL) - #define JSON_HEDLEY_NULL NULL - #else - #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0) - #endif -#elif defined(NULL) - #define JSON_HEDLEY_NULL NULL -#else - #define JSON_HEDLEY_NULL ((void*) 0) -#endif - -#if defined(JSON_HEDLEY_MESSAGE) - #undef JSON_HEDLEY_MESSAGE -#endif -#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") -# define JSON_HEDLEY_MESSAGE(msg) \ - JSON_HEDLEY_DIAGNOSTIC_PUSH \ - JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ - JSON_HEDLEY_PRAGMA(message msg) \ - JSON_HEDLEY_DIAGNOSTIC_POP -#elif \ - JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) -# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg) -#elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) -# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg) -#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) -# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) -#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0) -# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) -#else -# define JSON_HEDLEY_MESSAGE(msg) -#endif - -#if defined(JSON_HEDLEY_WARNING) - #undef JSON_HEDLEY_WARNING -#endif -#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") -# define JSON_HEDLEY_WARNING(msg) \ - JSON_HEDLEY_DIAGNOSTIC_PUSH \ - JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ - JSON_HEDLEY_PRAGMA(clang warning msg) \ - JSON_HEDLEY_DIAGNOSTIC_POP -#elif \ - JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \ - JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ - JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) -# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg) -#elif \ - JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ - JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) -# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg)) -#else -# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg) -#endif - -#if defined(JSON_HEDLEY_REQUIRE) - #undef JSON_HEDLEY_REQUIRE -#endif -#if defined(JSON_HEDLEY_REQUIRE_MSG) - #undef JSON_HEDLEY_REQUIRE_MSG -#endif -#if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if) -# if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat") -# define JSON_HEDLEY_REQUIRE(expr) \ - JSON_HEDLEY_DIAGNOSTIC_PUSH \ - _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ - __attribute__((diagnose_if(!(expr), #expr, "error"))) \ - JSON_HEDLEY_DIAGNOSTIC_POP -# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \ - JSON_HEDLEY_DIAGNOSTIC_PUSH \ - _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ - __attribute__((diagnose_if(!(expr), msg, "error"))) \ - JSON_HEDLEY_DIAGNOSTIC_POP -# else -# define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error"))) -# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error"))) -# endif -#else -# define JSON_HEDLEY_REQUIRE(expr) -# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) -#endif - -#if defined(JSON_HEDLEY_FLAGS) - #undef JSON_HEDLEY_FLAGS -#endif -#if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum) && (!defined(__cplusplus) || JSON_HEDLEY_HAS_WARNING("-Wbitfield-enum-conversion")) - #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__)) -#else - #define JSON_HEDLEY_FLAGS -#endif - -#if defined(JSON_HEDLEY_FLAGS_CAST) - #undef JSON_HEDLEY_FLAGS_CAST -#endif -#if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0) -# define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \ - JSON_HEDLEY_DIAGNOSTIC_PUSH \ - _Pragma("warning(disable:188)") \ - ((T) (expr)); \ - JSON_HEDLEY_DIAGNOSTIC_POP \ - })) -#else -# define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr) -#endif - -#if defined(JSON_HEDLEY_EMPTY_BASES) - #undef JSON_HEDLEY_EMPTY_BASES -#endif -#if \ - (JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)) || \ - JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) - #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases) -#else - #define JSON_HEDLEY_EMPTY_BASES -#endif - -/* Remaining macros are deprecated. */ - -#if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK) - #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK -#endif -#if defined(__clang__) - #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0) -#else - #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) -#endif - -#if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE) - #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE -#endif -#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) - -#if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE) - #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE -#endif -#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) - -#if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN) - #undef JSON_HEDLEY_CLANG_HAS_BUILTIN -#endif -#define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin) - -#if defined(JSON_HEDLEY_CLANG_HAS_FEATURE) - #undef JSON_HEDLEY_CLANG_HAS_FEATURE -#endif -#define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature) - -#if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION) - #undef JSON_HEDLEY_CLANG_HAS_EXTENSION -#endif -#define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension) - -#if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE) - #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE -#endif -#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) - -#if defined(JSON_HEDLEY_CLANG_HAS_WARNING) - #undef JSON_HEDLEY_CLANG_HAS_WARNING -#endif -#define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning) - -#endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */ - -// #include - - -#include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -template struct make_void -{ - using type = void; -}; -template using void_t = typename make_void::type; -} // namespace detail -} // namespace nlohmann - - -// https://en.cppreference.com/w/cpp/experimental/is_detected -namespace nlohmann -{ -namespace detail -{ -struct nonesuch -{ - nonesuch() = delete; - ~nonesuch() = delete; - nonesuch(nonesuch const&) = delete; - nonesuch(nonesuch const&&) = delete; - void operator=(nonesuch const&) = delete; - void operator=(nonesuch&&) = delete; -}; - -template class Op, - class... Args> -struct detector -{ - using value_t = std::false_type; - using type = Default; -}; - -template class Op, class... Args> -struct detector>, Op, Args...> -{ - using value_t = std::true_type; - using type = Op; -}; - -template class Op, class... Args> -using is_detected = typename detector::value_t; - -template class Op, class... Args> -struct is_detected_lazy : is_detected { }; - -template class Op, class... Args> -using detected_t = typename detector::type; - -template class Op, class... Args> -using detected_or = detector; - -template class Op, class... Args> -using detected_or_t = typename detected_or::type; - -template class Op, class... Args> -using is_detected_exact = std::is_same>; - -template class Op, class... Args> -using is_detected_convertible = - std::is_convertible, To>; -} // namespace detail -} // namespace nlohmann - - -// This file contains all internal macro definitions -// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them - -// exclude unsupported compilers -#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) - #if defined(__clang__) - #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 - #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" - #endif - #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) - #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 - #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" - #endif - #endif -#endif - -// C++ language standard detection -// if the user manually specified the used c++ version this is skipped -#if !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11) - #if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L) - #define JSON_HAS_CPP_20 - #define JSON_HAS_CPP_17 - #define JSON_HAS_CPP_14 - #elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 - #define JSON_HAS_CPP_17 - #define JSON_HAS_CPP_14 - #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) - #define JSON_HAS_CPP_14 - #endif - // the cpp 11 flag is always specified because it is the minimal required version - #define JSON_HAS_CPP_11 -#endif - -#if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM) - #ifdef JSON_HAS_CPP_17 - #if defined(__cpp_lib_filesystem) - #define JSON_HAS_FILESYSTEM 1 - #elif defined(__cpp_lib_experimental_filesystem) - #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 - #elif !defined(__has_include) - #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 - #elif __has_include() - #define JSON_HAS_FILESYSTEM 1 - #elif __has_include() - #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 - #endif - - // std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/ - #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8 - #undef JSON_HAS_FILESYSTEM - #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM - #endif - - // no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support - #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8 - #undef JSON_HAS_FILESYSTEM - #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM - #endif - - // no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support - #if defined(__clang_major__) && __clang_major__ < 7 - #undef JSON_HAS_FILESYSTEM - #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM - #endif - - // no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support - #if defined(_MSC_VER) && _MSC_VER < 1940 - #undef JSON_HAS_FILESYSTEM - #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM - #endif - - // no filesystem support before iOS 13 - #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000 - #undef JSON_HAS_FILESYSTEM - #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM - #endif - - // no filesystem support before macOS Catalina - #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 - #undef JSON_HAS_FILESYSTEM - #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM - #endif - #endif -#endif - -#ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM - #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0 -#endif - -#ifndef JSON_HAS_FILESYSTEM - #define JSON_HAS_FILESYSTEM 0 -#endif - -// disable documentation warnings on clang -#if defined(__clang__) - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wdocumentation" - #pragma clang diagnostic ignored "-Wdocumentation-unknown-command" -#endif - -// allow disabling exceptions -#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) - #define JSON_THROW(exception) throw exception - #define JSON_TRY try - #define JSON_CATCH(exception) catch(exception) - #define JSON_INTERNAL_CATCH(exception) catch(exception) -#else - #include - #define JSON_THROW(exception) std::abort() - #define JSON_TRY if(true) - #define JSON_CATCH(exception) if(false) - #define JSON_INTERNAL_CATCH(exception) if(false) -#endif - -// override exception macros -#if defined(JSON_THROW_USER) - #undef JSON_THROW - #define JSON_THROW JSON_THROW_USER -#endif -#if defined(JSON_TRY_USER) - #undef JSON_TRY - #define JSON_TRY JSON_TRY_USER -#endif -#if defined(JSON_CATCH_USER) - #undef JSON_CATCH - #define JSON_CATCH JSON_CATCH_USER - #undef JSON_INTERNAL_CATCH - #define JSON_INTERNAL_CATCH JSON_CATCH_USER -#endif -#if defined(JSON_INTERNAL_CATCH_USER) - #undef JSON_INTERNAL_CATCH - #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER -#endif - -// allow overriding assert -#if !defined(JSON_ASSERT) - #include // assert - #define JSON_ASSERT(x) assert(x) -#endif - -// allow to access some private functions (needed by the test suite) -#if defined(JSON_TESTS_PRIVATE) - #define JSON_PRIVATE_UNLESS_TESTED public -#else - #define JSON_PRIVATE_UNLESS_TESTED private -#endif - -/*! -@brief macro to briefly define a mapping between an enum and JSON -@def NLOHMANN_JSON_SERIALIZE_ENUM -@since version 3.4.0 -*/ -#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ - template \ - inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ - { \ - static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ - static const std::pair m[] = __VA_ARGS__; \ - auto it = std::find_if(std::begin(m), std::end(m), \ - [e](const std::pair& ej_pair) -> bool \ - { \ - return ej_pair.first == e; \ - }); \ - j = ((it != std::end(m)) ? it : std::begin(m))->second; \ - } \ - template \ - inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ - { \ - static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ - static const std::pair m[] = __VA_ARGS__; \ - auto it = std::find_if(std::begin(m), std::end(m), \ - [&j](const std::pair& ej_pair) -> bool \ - { \ - return ej_pair.second == j; \ - }); \ - e = ((it != std::end(m)) ? it : std::begin(m))->first; \ - } - -// Ugly macros to avoid uglier copy-paste when specializing basic_json. They -// may be removed in the future once the class is split. - -#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ - template class ObjectType, \ - template class ArrayType, \ - class StringType, class BooleanType, class NumberIntegerType, \ - class NumberUnsignedType, class NumberFloatType, \ - template class AllocatorType, \ - template class JSONSerializer, \ - class BinaryType> - -#define NLOHMANN_BASIC_JSON_TPL \ - basic_json - -// Macros to simplify conversion from/to types - -#define NLOHMANN_JSON_EXPAND( x ) x -#define NLOHMANN_JSON_GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME,...) NAME -#define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ - NLOHMANN_JSON_PASTE64, \ - NLOHMANN_JSON_PASTE63, \ - NLOHMANN_JSON_PASTE62, \ - NLOHMANN_JSON_PASTE61, \ - NLOHMANN_JSON_PASTE60, \ - NLOHMANN_JSON_PASTE59, \ - NLOHMANN_JSON_PASTE58, \ - NLOHMANN_JSON_PASTE57, \ - NLOHMANN_JSON_PASTE56, \ - NLOHMANN_JSON_PASTE55, \ - NLOHMANN_JSON_PASTE54, \ - NLOHMANN_JSON_PASTE53, \ - NLOHMANN_JSON_PASTE52, \ - NLOHMANN_JSON_PASTE51, \ - NLOHMANN_JSON_PASTE50, \ - NLOHMANN_JSON_PASTE49, \ - NLOHMANN_JSON_PASTE48, \ - NLOHMANN_JSON_PASTE47, \ - NLOHMANN_JSON_PASTE46, \ - NLOHMANN_JSON_PASTE45, \ - NLOHMANN_JSON_PASTE44, \ - NLOHMANN_JSON_PASTE43, \ - NLOHMANN_JSON_PASTE42, \ - NLOHMANN_JSON_PASTE41, \ - NLOHMANN_JSON_PASTE40, \ - NLOHMANN_JSON_PASTE39, \ - NLOHMANN_JSON_PASTE38, \ - NLOHMANN_JSON_PASTE37, \ - NLOHMANN_JSON_PASTE36, \ - NLOHMANN_JSON_PASTE35, \ - NLOHMANN_JSON_PASTE34, \ - NLOHMANN_JSON_PASTE33, \ - NLOHMANN_JSON_PASTE32, \ - NLOHMANN_JSON_PASTE31, \ - NLOHMANN_JSON_PASTE30, \ - NLOHMANN_JSON_PASTE29, \ - NLOHMANN_JSON_PASTE28, \ - NLOHMANN_JSON_PASTE27, \ - NLOHMANN_JSON_PASTE26, \ - NLOHMANN_JSON_PASTE25, \ - NLOHMANN_JSON_PASTE24, \ - NLOHMANN_JSON_PASTE23, \ - NLOHMANN_JSON_PASTE22, \ - NLOHMANN_JSON_PASTE21, \ - NLOHMANN_JSON_PASTE20, \ - NLOHMANN_JSON_PASTE19, \ - NLOHMANN_JSON_PASTE18, \ - NLOHMANN_JSON_PASTE17, \ - NLOHMANN_JSON_PASTE16, \ - NLOHMANN_JSON_PASTE15, \ - NLOHMANN_JSON_PASTE14, \ - NLOHMANN_JSON_PASTE13, \ - NLOHMANN_JSON_PASTE12, \ - NLOHMANN_JSON_PASTE11, \ - NLOHMANN_JSON_PASTE10, \ - NLOHMANN_JSON_PASTE9, \ - NLOHMANN_JSON_PASTE8, \ - NLOHMANN_JSON_PASTE7, \ - NLOHMANN_JSON_PASTE6, \ - NLOHMANN_JSON_PASTE5, \ - NLOHMANN_JSON_PASTE4, \ - NLOHMANN_JSON_PASTE3, \ - NLOHMANN_JSON_PASTE2, \ - NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) -#define NLOHMANN_JSON_PASTE2(func, v1) func(v1) -#define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) -#define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) -#define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) -#define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) -#define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6) -#define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7) -#define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8) -#define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9) -#define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10) -#define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) -#define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) -#define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) -#define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) -#define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) -#define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) -#define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) -#define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) -#define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) -#define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) -#define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) -#define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) -#define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) -#define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) -#define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) -#define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) -#define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) -#define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) -#define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) -#define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) -#define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) -#define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) -#define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) -#define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) -#define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) -#define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) -#define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) -#define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) -#define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) -#define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) -#define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) -#define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) -#define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) -#define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) -#define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) -#define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) -#define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) -#define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) -#define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) -#define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) -#define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) -#define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) -#define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) -#define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) -#define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) -#define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) -#define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) -#define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) -#define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) -#define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) -#define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) -#define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) -#define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) - -#define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; -#define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); - -/*! -@brief macro -@def NLOHMANN_DEFINE_TYPE_INTRUSIVE -@since version 3.9.0 -*/ -#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ - friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ - friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } - -/*! -@brief macro -@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE -@since version 3.9.0 -*/ -#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ - inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ - inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } - - -// inspired from https://stackoverflow.com/a/26745591 -// allows to call any std function as if (e.g. with begin): -// using std::begin; begin(x); -// -// it allows using the detected idiom to retrieve the return type -// of such an expression -#define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) \ - namespace detail { \ - using std::std_name; \ - \ - template \ - using result_of_##std_name = decltype(std_name(std::declval()...)); \ - } \ - \ - namespace detail2 { \ - struct std_name##_tag \ - { \ - }; \ - \ - template \ - std_name##_tag std_name(T&&...); \ - \ - template \ - using result_of_##std_name = decltype(std_name(std::declval()...)); \ - \ - template \ - struct would_call_std_##std_name \ - { \ - static constexpr auto const value = ::nlohmann::detail:: \ - is_detected_exact::value; \ - }; \ - } /* namespace detail2 */ \ - \ - template \ - struct would_call_std_##std_name : detail2::would_call_std_##std_name \ - { \ - } - -#ifndef JSON_USE_IMPLICIT_CONVERSIONS - #define JSON_USE_IMPLICIT_CONVERSIONS 1 -#endif - -#if JSON_USE_IMPLICIT_CONVERSIONS - #define JSON_EXPLICIT -#else - #define JSON_EXPLICIT explicit -#endif - -#ifndef JSON_DIAGNOSTICS - #define JSON_DIAGNOSTICS 0 -#endif - - -namespace nlohmann -{ -namespace detail -{ - -/*! -@brief replace all occurrences of a substring by another string - -@param[in,out] s the string to manipulate; changed so that all - occurrences of @a f are replaced with @a t -@param[in] f the substring to replace with @a t -@param[in] t the string to replace @a f - -@pre The search string @a f must not be empty. **This precondition is -enforced with an assertion.** - -@since version 2.0.0 -*/ -inline void replace_substring(std::string& s, const std::string& f, - const std::string& t) -{ - JSON_ASSERT(!f.empty()); - for (auto pos = s.find(f); // find first occurrence of f - pos != std::string::npos; // make sure f was found - s.replace(pos, f.size(), t), // replace with t, and - pos = s.find(f, pos + t.size())) // find next occurrence of f - {} -} - -/*! - * @brief string escaping as described in RFC 6901 (Sect. 4) - * @param[in] s string to escape - * @return escaped string - * - * Note the order of escaping "~" to "~0" and "/" to "~1" is important. - */ -inline std::string escape(std::string s) -{ - replace_substring(s, "~", "~0"); - replace_substring(s, "/", "~1"); - return s; -} - -/*! - * @brief string unescaping as described in RFC 6901 (Sect. 4) - * @param[in] s string to unescape - * @return unescaped string - * - * Note the order of escaping "~1" to "/" and "~0" to "~" is important. - */ -static void unescape(std::string& s) -{ - replace_substring(s, "~1", "/"); - replace_substring(s, "~0", "~"); -} - -} // namespace detail -} // namespace nlohmann - -// #include - - -#include // size_t - -namespace nlohmann -{ -namespace detail -{ -/// struct to capture the start position of the current token -struct position_t -{ - /// the total number of characters read - std::size_t chars_read_total = 0; - /// the number of characters read in the current line - std::size_t chars_read_current_line = 0; - /// the number of lines read - std::size_t lines_read = 0; - - /// conversion to size_t to preserve SAX interface - constexpr operator size_t() const - { - return chars_read_total; - } -}; - -} // namespace detail -} // namespace nlohmann - -// #include - - -namespace nlohmann -{ -namespace detail -{ -//////////////// -// exceptions // -//////////////// - -/// @brief general exception of the @ref basic_json class -/// @sa https://json.nlohmann.me/api/basic_json/exception/ -class exception : public std::exception -{ - public: - /// returns the explanatory string - const char* what() const noexcept override - { - return m.what(); - } - - /// the id of the exception - const int id; // NOLINT(cppcoreguidelines-non-private-member-variables-in-classes) - - protected: - JSON_HEDLEY_NON_NULL(3) - exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} // NOLINT(bugprone-throw-keyword-missing) - - static std::string name(const std::string& ename, int id_) - { - return "[json.exception." + ename + "." + std::to_string(id_) + "] "; - } - - template - static std::string diagnostics(const BasicJsonType& leaf_element) - { -#if JSON_DIAGNOSTICS - std::vector tokens; - for (const auto* current = &leaf_element; current->m_parent != nullptr; current = current->m_parent) - { - switch (current->m_parent->type()) - { - case value_t::array: - { - for (std::size_t i = 0; i < current->m_parent->m_value.array->size(); ++i) - { - if (¤t->m_parent->m_value.array->operator[](i) == current) - { - tokens.emplace_back(std::to_string(i)); - break; - } - } - break; - } - - case value_t::object: - { - for (const auto& element : *current->m_parent->m_value.object) - { - if (&element.second == current) - { - tokens.emplace_back(element.first.c_str()); - break; - } - } - break; - } - - case value_t::null: // LCOV_EXCL_LINE - case value_t::string: // LCOV_EXCL_LINE - case value_t::boolean: // LCOV_EXCL_LINE - case value_t::number_integer: // LCOV_EXCL_LINE - case value_t::number_unsigned: // LCOV_EXCL_LINE - case value_t::number_float: // LCOV_EXCL_LINE - case value_t::binary: // LCOV_EXCL_LINE - case value_t::discarded: // LCOV_EXCL_LINE - default: // LCOV_EXCL_LINE - break; // LCOV_EXCL_LINE - } - } - - if (tokens.empty()) - { - return ""; - } - - return "(" + std::accumulate(tokens.rbegin(), tokens.rend(), std::string{}, - [](const std::string & a, const std::string & b) - { - return a + "/" + detail::escape(b); - }) + ") "; -#else - static_cast(leaf_element); - return ""; -#endif - } - - private: - /// an exception object as storage for error messages - std::runtime_error m; -}; - -/// @brief exception indicating a parse error -/// @sa https://json.nlohmann.me/api/basic_json/parse_error/ -class parse_error : public exception -{ - public: - /*! - @brief create a parse error exception - @param[in] id_ the id of the exception - @param[in] pos the position where the error occurred (or with - chars_read_total=0 if the position cannot be - determined) - @param[in] what_arg the explanatory string - @return parse_error object - */ - template - static parse_error create(int id_, const position_t& pos, const std::string& what_arg, const BasicJsonType& context) - { - std::string w = exception::name("parse_error", id_) + "parse error" + - position_string(pos) + ": " + exception::diagnostics(context) + what_arg; - return {id_, pos.chars_read_total, w.c_str()}; - } - - template - static parse_error create(int id_, std::size_t byte_, const std::string& what_arg, const BasicJsonType& context) - { - std::string w = exception::name("parse_error", id_) + "parse error" + - (byte_ != 0 ? (" at byte " + std::to_string(byte_)) : "") + - ": " + exception::diagnostics(context) + what_arg; - return {id_, byte_, w.c_str()}; - } - - /*! - @brief byte index of the parse error - - The byte index of the last read character in the input file. - - @note For an input with n bytes, 1 is the index of the first character and - n+1 is the index of the terminating null byte or the end of file. - This also holds true when reading a byte vector (CBOR or MessagePack). - */ - const std::size_t byte; - - private: - parse_error(int id_, std::size_t byte_, const char* what_arg) - : exception(id_, what_arg), byte(byte_) {} - - static std::string position_string(const position_t& pos) - { - return " at line " + std::to_string(pos.lines_read + 1) + - ", column " + std::to_string(pos.chars_read_current_line); - } -}; - -/// @brief exception indicating errors with iterators -/// @sa https://json.nlohmann.me/api/basic_json/invalid_iterator/ -class invalid_iterator : public exception -{ - public: - template - static invalid_iterator create(int id_, const std::string& what_arg, const BasicJsonType& context) - { - std::string w = exception::name("invalid_iterator", id_) + exception::diagnostics(context) + what_arg; - return {id_, w.c_str()}; - } - - private: - JSON_HEDLEY_NON_NULL(3) - invalid_iterator(int id_, const char* what_arg) - : exception(id_, what_arg) {} -}; - -/// @brief exception indicating executing a member function with a wrong type -/// @sa https://json.nlohmann.me/api/basic_json/type_error/ -class type_error : public exception -{ - public: - template - static type_error create(int id_, const std::string& what_arg, const BasicJsonType& context) - { - std::string w = exception::name("type_error", id_) + exception::diagnostics(context) + what_arg; - return {id_, w.c_str()}; - } - - private: - JSON_HEDLEY_NON_NULL(3) - type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; - -/// @brief exception indicating access out of the defined range -/// @sa https://json.nlohmann.me/api/basic_json/out_of_range/ -class out_of_range : public exception -{ - public: - template - static out_of_range create(int id_, const std::string& what_arg, const BasicJsonType& context) - { - std::string w = exception::name("out_of_range", id_) + exception::diagnostics(context) + what_arg; - return {id_, w.c_str()}; - } - - private: - JSON_HEDLEY_NON_NULL(3) - out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; - -/// @brief exception indicating other library errors -/// @sa https://json.nlohmann.me/api/basic_json/other_error/ -class other_error : public exception -{ - public: - template - static other_error create(int id_, const std::string& what_arg, const BasicJsonType& context) - { - std::string w = exception::name("other_error", id_) + exception::diagnostics(context) + what_arg; - return {id_, w.c_str()}; - } - - private: - JSON_HEDLEY_NON_NULL(3) - other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; - -} // namespace detail -} // namespace nlohmann - -// #include - -// #include - - -#include // size_t -#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type -#include // index_sequence, make_index_sequence, index_sequence_for - -// #include - - -namespace nlohmann -{ -namespace detail -{ - -template -using uncvref_t = typename std::remove_cv::type>::type; - -#ifdef JSON_HAS_CPP_14 - -// the following utilities are natively available in C++14 -using std::enable_if_t; -using std::index_sequence; -using std::make_index_sequence; -using std::index_sequence_for; - -#else - -// alias templates to reduce boilerplate -template -using enable_if_t = typename std::enable_if::type; - -// The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h -// which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. - -//// START OF CODE FROM GOOGLE ABSEIL - -// integer_sequence -// -// Class template representing a compile-time integer sequence. An instantiation -// of `integer_sequence` has a sequence of integers encoded in its -// type through its template arguments (which is a common need when -// working with C++11 variadic templates). `absl::integer_sequence` is designed -// to be a drop-in replacement for C++14's `std::integer_sequence`. -// -// Example: -// -// template< class T, T... Ints > -// void user_function(integer_sequence); -// -// int main() -// { -// // user_function's `T` will be deduced to `int` and `Ints...` -// // will be deduced to `0, 1, 2, 3, 4`. -// user_function(make_integer_sequence()); -// } -template -struct integer_sequence -{ - using value_type = T; - static constexpr std::size_t size() noexcept - { - return sizeof...(Ints); - } -}; - -// index_sequence -// -// A helper template for an `integer_sequence` of `size_t`, -// `absl::index_sequence` is designed to be a drop-in replacement for C++14's -// `std::index_sequence`. -template -using index_sequence = integer_sequence; - -namespace utility_internal -{ - -template -struct Extend; - -// Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. -template -struct Extend, SeqSize, 0> -{ - using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; -}; - -template -struct Extend, SeqSize, 1> -{ - using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; -}; - -// Recursion helper for 'make_integer_sequence'. -// 'Gen::type' is an alias for 'integer_sequence'. -template -struct Gen -{ - using type = - typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; -}; - -template -struct Gen -{ - using type = integer_sequence; -}; - -} // namespace utility_internal - -// Compile-time sequences of integers - -// make_integer_sequence -// -// This template alias is equivalent to -// `integer_sequence`, and is designed to be a drop-in -// replacement for C++14's `std::make_integer_sequence`. -template -using make_integer_sequence = typename utility_internal::Gen::type; - -// make_index_sequence -// -// This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, -// and is designed to be a drop-in replacement for C++14's -// `std::make_index_sequence`. -template -using make_index_sequence = make_integer_sequence; - -// index_sequence_for -// -// Converts a typename pack into an index sequence of the same length, and -// is designed to be a drop-in replacement for C++14's -// `std::index_sequence_for()` -template -using index_sequence_for = make_index_sequence; - -//// END OF CODE FROM GOOGLE ABSEIL - -#endif - -// dispatch utility (taken from ranges-v3) -template struct priority_tag : priority_tag < N - 1 > {}; -template<> struct priority_tag<0> {}; - -// taken from ranges-v3 -template -struct static_const -{ - static constexpr T value{}; -}; - -template -constexpr T static_const::value; // NOLINT(readability-redundant-declaration) - -} // namespace detail -} // namespace nlohmann - -// #include - - -namespace nlohmann -{ -namespace detail -{ -// dispatching helper struct -template struct identity_tag {}; -} // namespace detail -} // namespace nlohmann - -// #include - - -#include // numeric_limits -#include // false_type, is_constructible, is_integral, is_same, true_type -#include // declval -#include // tuple - -// #include - - -// #include - - -#include // random_access_iterator_tag - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -template -struct iterator_types {}; - -template -struct iterator_types < - It, - void_t> -{ - using difference_type = typename It::difference_type; - using value_type = typename It::value_type; - using pointer = typename It::pointer; - using reference = typename It::reference; - using iterator_category = typename It::iterator_category; -}; - -// This is required as some compilers implement std::iterator_traits in a way that -// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. -template -struct iterator_traits -{ -}; - -template -struct iterator_traits < T, enable_if_t < !std::is_pointer::value >> - : iterator_types -{ -}; - -template -struct iterator_traits::value>> -{ - using iterator_category = std::random_access_iterator_tag; - using value_type = T; - using difference_type = ptrdiff_t; - using pointer = T*; - using reference = T&; -}; -} // namespace detail -} // namespace nlohmann - -// #include - - -// #include - - -namespace nlohmann -{ -NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); -} // namespace nlohmann - -// #include - - -// #include - - -namespace nlohmann -{ -NLOHMANN_CAN_CALL_STD_FUNC_IMPL(end); -} // namespace nlohmann - -// #include - -// #include - -// #include -#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ -#define INCLUDE_NLOHMANN_JSON_FWD_HPP_ - -#include // int64_t, uint64_t -#include // map -#include // allocator -#include // string -#include // vector - -/*! -@brief namespace for Niels Lohmann -@see https://github.com/nlohmann -@since version 1.0.0 -*/ -namespace nlohmann -{ -/*! -@brief default JSONSerializer template argument - -This serializer ignores the template arguments and uses ADL -([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) -for serialization. -*/ -template -struct adl_serializer; - -/// a class to store JSON values -/// @sa https://json.nlohmann.me/api/basic_json/ -template class ObjectType = - std::map, - template class ArrayType = std::vector, - class StringType = std::string, class BooleanType = bool, - class NumberIntegerType = std::int64_t, - class NumberUnsignedType = std::uint64_t, - class NumberFloatType = double, - template class AllocatorType = std::allocator, - template class JSONSerializer = - adl_serializer, - class BinaryType = std::vector> -class basic_json; - -/// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document -/// @sa https://json.nlohmann.me/api/json_pointer/ -template -class json_pointer; - -/*! -@brief default specialization -@sa https://json.nlohmann.me/api/json/ -*/ -using json = basic_json<>; - -/// @brief a minimal map-like container that preserves insertion order -/// @sa https://json.nlohmann.me/api/ordered_map/ -template -struct ordered_map; - -/// @brief specialization that maintains the insertion order of object keys -/// @sa https://json.nlohmann.me/api/ordered_json/ -using ordered_json = basic_json; - -} // namespace nlohmann - -#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ - - -namespace nlohmann -{ -/*! -@brief detail namespace with internal helper functions - -This namespace collects functions that should not be exposed, -implementations of some @ref basic_json methods, and meta-programming helpers. - -@since version 2.1.0 -*/ -namespace detail -{ -///////////// -// helpers // -///////////// - -// Note to maintainers: -// -// Every trait in this file expects a non CV-qualified type. -// The only exceptions are in the 'aliases for detected' section -// (i.e. those of the form: decltype(T::member_function(std::declval()))) -// -// In this case, T has to be properly CV-qualified to constraint the function arguments -// (e.g. to_json(BasicJsonType&, const T&)) - -template struct is_basic_json : std::false_type {}; - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -struct is_basic_json : std::true_type {}; - -////////////////////// -// json_ref helpers // -////////////////////// - -template -class json_ref; - -template -struct is_json_ref : std::false_type {}; - -template -struct is_json_ref> : std::true_type {}; - -////////////////////////// -// aliases for detected // -////////////////////////// - -template -using mapped_type_t = typename T::mapped_type; - -template -using key_type_t = typename T::key_type; - -template -using value_type_t = typename T::value_type; - -template -using difference_type_t = typename T::difference_type; - -template -using pointer_t = typename T::pointer; - -template -using reference_t = typename T::reference; - -template -using iterator_category_t = typename T::iterator_category; - -template -using to_json_function = decltype(T::to_json(std::declval()...)); - -template -using from_json_function = decltype(T::from_json(std::declval()...)); - -template -using get_template_function = decltype(std::declval().template get()); - -// trait checking if JSONSerializer::from_json(json const&, udt&) exists -template -struct has_from_json : std::false_type {}; - -// trait checking if j.get is valid -// use this trait instead of std::is_constructible or std::is_convertible, -// both rely on, or make use of implicit conversions, and thus fail when T -// has several constructors/operator= (see https://github.com/nlohmann/json/issues/958) -template -struct is_getable -{ - static constexpr bool value = is_detected::value; -}; - -template -struct has_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> -{ - using serializer = typename BasicJsonType::template json_serializer; - - static constexpr bool value = - is_detected_exact::value; -}; - -// This trait checks if JSONSerializer::from_json(json const&) exists -// this overload is used for non-default-constructible user-defined-types -template -struct has_non_default_from_json : std::false_type {}; - -template -struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> -{ - using serializer = typename BasicJsonType::template json_serializer; - - static constexpr bool value = - is_detected_exact::value; -}; - -// This trait checks if BasicJsonType::json_serializer::to_json exists -// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion. -template -struct has_to_json : std::false_type {}; - -template -struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> -{ - using serializer = typename BasicJsonType::template json_serializer; - - static constexpr bool value = - is_detected_exact::value; -}; - - -/////////////////// -// is_ functions // -/////////////////// - -// https://en.cppreference.com/w/cpp/types/conjunction -template struct conjunction : std::true_type { }; -template struct conjunction : B1 { }; -template -struct conjunction -: std::conditional, B1>::type {}; - -// https://en.cppreference.com/w/cpp/types/negation -template struct negation : std::integral_constant < bool, !B::value > { }; - -// Reimplementation of is_constructible and is_default_constructible, due to them being broken for -// std::pair and std::tuple until LWG 2367 fix (see https://cplusplus.github.io/LWG/lwg-defects.html#2367). -// This causes compile errors in e.g. clang 3.5 or gcc 4.9. -template -struct is_default_constructible : std::is_default_constructible {}; - -template -struct is_default_constructible> - : conjunction, is_default_constructible> {}; - -template -struct is_default_constructible> - : conjunction, is_default_constructible> {}; - -template -struct is_default_constructible> - : conjunction...> {}; - -template -struct is_default_constructible> - : conjunction...> {}; - - -template -struct is_constructible : std::is_constructible {}; - -template -struct is_constructible> : is_default_constructible> {}; - -template -struct is_constructible> : is_default_constructible> {}; - -template -struct is_constructible> : is_default_constructible> {}; - -template -struct is_constructible> : is_default_constructible> {}; - - -template -struct is_iterator_traits : std::false_type {}; - -template -struct is_iterator_traits> -{ - private: - using traits = iterator_traits; - - public: - static constexpr auto value = - is_detected::value && - is_detected::value && - is_detected::value && - is_detected::value && - is_detected::value; -}; - -template -struct is_range -{ - private: - using t_ref = typename std::add_lvalue_reference::type; - - using iterator = detected_t; - using sentinel = detected_t; - - // to be 100% correct, it should use https://en.cppreference.com/w/cpp/iterator/input_or_output_iterator - // and https://en.cppreference.com/w/cpp/iterator/sentinel_for - // but reimplementing these would be too much work, as a lot of other concepts are used underneath - static constexpr auto is_iterator_begin = - is_iterator_traits>::value; - - public: - static constexpr bool value = !std::is_same::value && !std::is_same::value && is_iterator_begin; -}; - -template -using iterator_t = enable_if_t::value, result_of_begin())>>; - -template -using range_value_t = value_type_t>>; - -// The following implementation of is_complete_type is taken from -// https://blogs.msdn.microsoft.com/vcblog/2015/12/02/partial-support-for-expression-sfinae-in-vs-2015-update-1/ -// and is written by Xiang Fan who agreed to using it in this library. - -template -struct is_complete_type : std::false_type {}; - -template -struct is_complete_type : std::true_type {}; - -template -struct is_compatible_object_type_impl : std::false_type {}; - -template -struct is_compatible_object_type_impl < - BasicJsonType, CompatibleObjectType, - enable_if_t < is_detected::value&& - is_detected::value >> -{ - using object_t = typename BasicJsonType::object_t; - - // macOS's is_constructible does not play well with nonesuch... - static constexpr bool value = - is_constructible::value && - is_constructible::value; -}; - -template -struct is_compatible_object_type - : is_compatible_object_type_impl {}; - -template -struct is_constructible_object_type_impl : std::false_type {}; - -template -struct is_constructible_object_type_impl < - BasicJsonType, ConstructibleObjectType, - enable_if_t < is_detected::value&& - is_detected::value >> -{ - using object_t = typename BasicJsonType::object_t; - - static constexpr bool value = - (is_default_constructible::value && - (std::is_move_assignable::value || - std::is_copy_assignable::value) && - (is_constructible::value && - std::is_same < - typename object_t::mapped_type, - typename ConstructibleObjectType::mapped_type >::value)) || - (has_from_json::value || - has_non_default_from_json < - BasicJsonType, - typename ConstructibleObjectType::mapped_type >::value); -}; - -template -struct is_constructible_object_type - : is_constructible_object_type_impl {}; - -template -struct is_compatible_string_type -{ - static constexpr auto value = - is_constructible::value; -}; - -template -struct is_constructible_string_type -{ - static constexpr auto value = - is_constructible::value; -}; - -template -struct is_compatible_array_type_impl : std::false_type {}; - -template -struct is_compatible_array_type_impl < - BasicJsonType, CompatibleArrayType, - enable_if_t < - is_detected::value&& - is_iterator_traits>>::value&& -// special case for types like std::filesystem::path whose iterator's value_type are themselves -// c.f. https://github.com/nlohmann/json/pull/3073 - !std::is_same>::value >> -{ - static constexpr bool value = - is_constructible>::value; -}; - -template -struct is_compatible_array_type - : is_compatible_array_type_impl {}; - -template -struct is_constructible_array_type_impl : std::false_type {}; - -template -struct is_constructible_array_type_impl < - BasicJsonType, ConstructibleArrayType, - enable_if_t::value >> - : std::true_type {}; - -template -struct is_constructible_array_type_impl < - BasicJsonType, ConstructibleArrayType, - enable_if_t < !std::is_same::value&& - !is_compatible_string_type::value&& - is_default_constructible::value&& -(std::is_move_assignable::value || - std::is_copy_assignable::value)&& -is_detected::value&& -is_iterator_traits>>::value&& -is_detected::value&& -// special case for types like std::filesystem::path whose iterator's value_type are themselves -// c.f. https://github.com/nlohmann/json/pull/3073 -!std::is_same>::value&& - is_complete_type < - detected_t>::value >> -{ - using value_type = range_value_t; - - static constexpr bool value = - std::is_same::value || - has_from_json::value || - has_non_default_from_json < - BasicJsonType, - value_type >::value; -}; - -template -struct is_constructible_array_type - : is_constructible_array_type_impl {}; - -template -struct is_compatible_integer_type_impl : std::false_type {}; - -template -struct is_compatible_integer_type_impl < - RealIntegerType, CompatibleNumberIntegerType, - enable_if_t < std::is_integral::value&& - std::is_integral::value&& - !std::is_same::value >> -{ - // is there an assert somewhere on overflows? - using RealLimits = std::numeric_limits; - using CompatibleLimits = std::numeric_limits; - - static constexpr auto value = - is_constructible::value && - CompatibleLimits::is_integer && - RealLimits::is_signed == CompatibleLimits::is_signed; -}; - -template -struct is_compatible_integer_type - : is_compatible_integer_type_impl {}; - -template -struct is_compatible_type_impl: std::false_type {}; - -template -struct is_compatible_type_impl < - BasicJsonType, CompatibleType, - enable_if_t::value >> -{ - static constexpr bool value = - has_to_json::value; -}; - -template -struct is_compatible_type - : is_compatible_type_impl {}; - -template -struct is_constructible_tuple : std::false_type {}; - -template -struct is_constructible_tuple> : conjunction...> {}; - -// a naive helper to check if a type is an ordered_map (exploits the fact that -// ordered_map inherits capacity() from std::vector) -template -struct is_ordered_map -{ - using one = char; - - struct two - { - char x[2]; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) - }; - - template static one test( decltype(&C::capacity) ) ; - template static two test(...); - - enum { value = sizeof(test(nullptr)) == sizeof(char) }; // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) -}; - -// to avoid useless casts (see https://github.com/nlohmann/json/issues/2893#issuecomment-889152324) -template < typename T, typename U, enable_if_t < !std::is_same::value, int > = 0 > -T conditional_static_cast(U value) -{ - return static_cast(value); -} - -template::value, int> = 0> -T conditional_static_cast(U value) -{ - return value; -} - -} // namespace detail -} // namespace nlohmann - -// #include - - -#if JSON_HAS_EXPERIMENTAL_FILESYSTEM -#include -namespace nlohmann::detail -{ -namespace std_fs = std::experimental::filesystem; -} // namespace nlohmann::detail -#elif JSON_HAS_FILESYSTEM -#include -namespace nlohmann::detail -{ -namespace std_fs = std::filesystem; -} // namespace nlohmann::detail -#endif - -namespace nlohmann -{ -namespace detail -{ -template -void from_json(const BasicJsonType& j, typename std::nullptr_t& n) -{ - if (JSON_HEDLEY_UNLIKELY(!j.is_null())) - { - JSON_THROW(type_error::create(302, "type must be null, but is " + std::string(j.type_name()), j)); - } - n = nullptr; -} - -// overloads for basic_json template parameters -template < typename BasicJsonType, typename ArithmeticType, - enable_if_t < std::is_arithmetic::value&& - !std::is_same::value, - int > = 0 > -void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) -{ - switch (static_cast(j)) - { - case value_t::number_unsigned: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_integer: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_float: - { - val = static_cast(*j.template get_ptr()); - break; - } - - case value_t::null: - case value_t::object: - case value_t::array: - case value_t::string: - case value_t::boolean: - case value_t::binary: - case value_t::discarded: - default: - JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()), j)); - } -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) -{ - if (JSON_HEDLEY_UNLIKELY(!j.is_boolean())) - { - JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name()), j)); - } - b = *j.template get_ptr(); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) -{ - if (JSON_HEDLEY_UNLIKELY(!j.is_string())) - { - JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()), j)); - } - s = *j.template get_ptr(); -} - -template < - typename BasicJsonType, typename ConstructibleStringType, - enable_if_t < - is_constructible_string_type::value&& - !std::is_same::value, - int > = 0 > -void from_json(const BasicJsonType& j, ConstructibleStringType& s) -{ - if (JSON_HEDLEY_UNLIKELY(!j.is_string())) - { - JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()), j)); - } - - s = *j.template get_ptr(); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) -{ - get_arithmetic_value(j, val); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) -{ - get_arithmetic_value(j, val); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) -{ - get_arithmetic_value(j, val); -} - -template::value, int> = 0> -void from_json(const BasicJsonType& j, EnumType& e) -{ - typename std::underlying_type::type val; - get_arithmetic_value(j, val); - e = static_cast(val); -} - -// forward_list doesn't have an insert method -template::value, int> = 0> -void from_json(const BasicJsonType& j, std::forward_list& l) -{ - if (JSON_HEDLEY_UNLIKELY(!j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()), j)); - } - l.clear(); - std::transform(j.rbegin(), j.rend(), - std::front_inserter(l), [](const BasicJsonType & i) - { - return i.template get(); - }); -} - -// valarray doesn't have an insert method -template::value, int> = 0> -void from_json(const BasicJsonType& j, std::valarray& l) -{ - if (JSON_HEDLEY_UNLIKELY(!j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()), j)); - } - l.resize(j.size()); - std::transform(j.begin(), j.end(), std::begin(l), - [](const BasicJsonType & elem) - { - return elem.template get(); - }); -} - -template -auto from_json(const BasicJsonType& j, T (&arr)[N]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) --> decltype(j.template get(), void()) -{ - for (std::size_t i = 0; i < N; ++i) - { - arr[i] = j.at(i).template get(); - } -} - -template -void from_json_array_impl(const BasicJsonType& j, typename BasicJsonType::array_t& arr, priority_tag<3> /*unused*/) -{ - arr = *j.template get_ptr(); -} - -template -auto from_json_array_impl(const BasicJsonType& j, std::array& arr, - priority_tag<2> /*unused*/) --> decltype(j.template get(), void()) -{ - for (std::size_t i = 0; i < N; ++i) - { - arr[i] = j.at(i).template get(); - } -} - -template::value, - int> = 0> -auto from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<1> /*unused*/) --> decltype( - arr.reserve(std::declval()), - j.template get(), - void()) -{ - using std::end; - - ConstructibleArrayType ret; - ret.reserve(j.size()); - std::transform(j.begin(), j.end(), - std::inserter(ret, end(ret)), [](const BasicJsonType & i) - { - // get() returns *this, this won't call a from_json - // method when value_type is BasicJsonType - return i.template get(); - }); - arr = std::move(ret); -} - -template::value, - int> = 0> -void from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, - priority_tag<0> /*unused*/) -{ - using std::end; - - ConstructibleArrayType ret; - std::transform( - j.begin(), j.end(), std::inserter(ret, end(ret)), - [](const BasicJsonType & i) - { - // get() returns *this, this won't call a from_json - // method when value_type is BasicJsonType - return i.template get(); - }); - arr = std::move(ret); -} - -template < typename BasicJsonType, typename ConstructibleArrayType, - enable_if_t < - is_constructible_array_type::value&& - !is_constructible_object_type::value&& - !is_constructible_string_type::value&& - !std::is_same::value&& - !is_basic_json::value, - int > = 0 > -auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr) --> decltype(from_json_array_impl(j, arr, priority_tag<3> {}), -j.template get(), -void()) -{ - if (JSON_HEDLEY_UNLIKELY(!j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()), j)); - } - - from_json_array_impl(j, arr, priority_tag<3> {}); -} - -template < typename BasicJsonType, typename T, std::size_t... Idx > -std::array from_json_inplace_array_impl(BasicJsonType&& j, - identity_tag> /*unused*/, index_sequence /*unused*/) -{ - return { { std::forward(j).at(Idx).template get()... } }; -} - -template < typename BasicJsonType, typename T, std::size_t N > -auto from_json(BasicJsonType&& j, identity_tag> tag) --> decltype(from_json_inplace_array_impl(std::forward(j), tag, make_index_sequence {})) -{ - if (JSON_HEDLEY_UNLIKELY(!j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()), j)); - } - - return from_json_inplace_array_impl(std::forward(j), tag, make_index_sequence {}); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::binary_t& bin) -{ - if (JSON_HEDLEY_UNLIKELY(!j.is_binary())) - { - JSON_THROW(type_error::create(302, "type must be binary, but is " + std::string(j.type_name()), j)); - } - - bin = *j.template get_ptr(); -} - -template::value, int> = 0> -void from_json(const BasicJsonType& j, ConstructibleObjectType& obj) -{ - if (JSON_HEDLEY_UNLIKELY(!j.is_object())) - { - JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name()), j)); - } - - ConstructibleObjectType ret; - const auto* inner_object = j.template get_ptr(); - using value_type = typename ConstructibleObjectType::value_type; - std::transform( - inner_object->begin(), inner_object->end(), - std::inserter(ret, ret.begin()), - [](typename BasicJsonType::object_t::value_type const & p) - { - return value_type(p.first, p.second.template get()); - }); - obj = std::move(ret); -} - -// overload for arithmetic types, not chosen for basic_json template arguments -// (BooleanType, etc..); note: Is it really necessary to provide explicit -// overloads for boolean_t etc. in case of a custom BooleanType which is not -// an arithmetic type? -template < typename BasicJsonType, typename ArithmeticType, - enable_if_t < - std::is_arithmetic::value&& - !std::is_same::value&& - !std::is_same::value&& - !std::is_same::value&& - !std::is_same::value, - int > = 0 > -void from_json(const BasicJsonType& j, ArithmeticType& val) -{ - switch (static_cast(j)) - { - case value_t::number_unsigned: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_integer: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_float: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::boolean: - { - val = static_cast(*j.template get_ptr()); - break; - } - - case value_t::null: - case value_t::object: - case value_t::array: - case value_t::string: - case value_t::binary: - case value_t::discarded: - default: - JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()), j)); - } -} - -template -std::tuple from_json_tuple_impl_base(BasicJsonType&& j, index_sequence /*unused*/) -{ - return std::make_tuple(std::forward(j).at(Idx).template get()...); -} - -template < typename BasicJsonType, class A1, class A2 > -std::pair from_json_tuple_impl(BasicJsonType&& j, identity_tag> /*unused*/, priority_tag<0> /*unused*/) -{ - return {std::forward(j).at(0).template get(), - std::forward(j).at(1).template get()}; -} - -template -void from_json_tuple_impl(BasicJsonType&& j, std::pair& p, priority_tag<1> /*unused*/) -{ - p = from_json_tuple_impl(std::forward(j), identity_tag> {}, priority_tag<0> {}); -} - -template -std::tuple from_json_tuple_impl(BasicJsonType&& j, identity_tag> /*unused*/, priority_tag<2> /*unused*/) -{ - return from_json_tuple_impl_base(std::forward(j), index_sequence_for {}); -} - -template -void from_json_tuple_impl(BasicJsonType&& j, std::tuple& t, priority_tag<3> /*unused*/) -{ - t = from_json_tuple_impl_base(std::forward(j), index_sequence_for {}); -} - -template -auto from_json(BasicJsonType&& j, TupleRelated&& t) --> decltype(from_json_tuple_impl(std::forward(j), std::forward(t), priority_tag<3> {})) -{ - if (JSON_HEDLEY_UNLIKELY(!j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()), j)); - } - - return from_json_tuple_impl(std::forward(j), std::forward(t), priority_tag<3> {}); -} - -template < typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator, - typename = enable_if_t < !std::is_constructible < - typename BasicJsonType::string_t, Key >::value >> -void from_json(const BasicJsonType& j, std::map& m) -{ - if (JSON_HEDLEY_UNLIKELY(!j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()), j)); - } - m.clear(); - for (const auto& p : j) - { - if (JSON_HEDLEY_UNLIKELY(!p.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name()), j)); - } - m.emplace(p.at(0).template get(), p.at(1).template get()); - } -} - -template < typename BasicJsonType, typename Key, typename Value, typename Hash, typename KeyEqual, typename Allocator, - typename = enable_if_t < !std::is_constructible < - typename BasicJsonType::string_t, Key >::value >> -void from_json(const BasicJsonType& j, std::unordered_map& m) -{ - if (JSON_HEDLEY_UNLIKELY(!j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()), j)); - } - m.clear(); - for (const auto& p : j) - { - if (JSON_HEDLEY_UNLIKELY(!p.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name()), j)); - } - m.emplace(p.at(0).template get(), p.at(1).template get()); - } -} - -#if JSON_HAS_FILESYSTEM || JSON_HAS_EXPERIMENTAL_FILESYSTEM -template -void from_json(const BasicJsonType& j, std_fs::path& p) -{ - if (JSON_HEDLEY_UNLIKELY(!j.is_string())) - { - JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()), j)); - } - p = *j.template get_ptr(); -} -#endif - -struct from_json_fn -{ - template - auto operator()(const BasicJsonType& j, T&& val) const - noexcept(noexcept(from_json(j, std::forward(val)))) - -> decltype(from_json(j, std::forward(val))) - { - return from_json(j, std::forward(val)); - } -}; -} // namespace detail - -/// namespace to hold default `from_json` function -/// to see why this is required: -/// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html -namespace // NOLINT(cert-dcl59-cpp,fuchsia-header-anon-namespaces,google-build-namespaces) -{ -constexpr const auto& from_json = detail::static_const::value; // NOLINT(misc-definitions-in-headers) -} // namespace -} // namespace nlohmann - -// #include - - -#include // copy -#include // begin, end -#include // string -#include // tuple, get -#include // is_same, is_constructible, is_floating_point, is_enum, underlying_type -#include // move, forward, declval, pair -#include // valarray -#include // vector - -// #include - -// #include - - -#include // size_t -#include // input_iterator_tag -#include // string, to_string -#include // tuple_size, get, tuple_element -#include // move - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -template -void int_to_string( string_type& target, std::size_t value ) -{ - // For ADL - using std::to_string; - target = to_string(value); -} -template class iteration_proxy_value -{ - public: - using difference_type = std::ptrdiff_t; - using value_type = iteration_proxy_value; - using pointer = value_type * ; - using reference = value_type & ; - using iterator_category = std::input_iterator_tag; - using string_type = typename std::remove_cv< typename std::remove_reference().key() ) >::type >::type; - - private: - /// the iterator - IteratorType anchor; - /// an index for arrays (used to create key names) - std::size_t array_index = 0; - /// last stringified array index - mutable std::size_t array_index_last = 0; - /// a string representation of the array index - mutable string_type array_index_str = "0"; - /// an empty string (to return a reference for primitive values) - const string_type empty_str{}; - - public: - explicit iteration_proxy_value(IteratorType it) noexcept - : anchor(std::move(it)) - {} - - /// dereference operator (needed for range-based for) - iteration_proxy_value& operator*() - { - return *this; - } - - /// increment operator (needed for range-based for) - iteration_proxy_value& operator++() - { - ++anchor; - ++array_index; - - return *this; - } - - /// equality operator (needed for InputIterator) - bool operator==(const iteration_proxy_value& o) const - { - return anchor == o.anchor; - } - - /// inequality operator (needed for range-based for) - bool operator!=(const iteration_proxy_value& o) const - { - return anchor != o.anchor; - } - - /// return key of the iterator - const string_type& key() const - { - JSON_ASSERT(anchor.m_object != nullptr); - - switch (anchor.m_object->type()) - { - // use integer array index as key - case value_t::array: - { - if (array_index != array_index_last) - { - int_to_string( array_index_str, array_index ); - array_index_last = array_index; - } - return array_index_str; - } - - // use key from the object - case value_t::object: - return anchor.key(); - - // use an empty key for all primitive types - case value_t::null: - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - return empty_str; - } - } - - /// return value of the iterator - typename IteratorType::reference value() const - { - return anchor.value(); - } -}; - -/// proxy class for the items() function -template class iteration_proxy -{ - private: - /// the container to iterate - typename IteratorType::reference container; - - public: - /// construct iteration proxy from a container - explicit iteration_proxy(typename IteratorType::reference cont) noexcept - : container(cont) {} - - /// return iterator begin (needed for range-based for) - iteration_proxy_value begin() noexcept - { - return iteration_proxy_value(container.begin()); - } - - /// return iterator end (needed for range-based for) - iteration_proxy_value end() noexcept - { - return iteration_proxy_value(container.end()); - } -}; -// Structured Bindings Support -// For further reference see https://blog.tartanllama.xyz/structured-bindings/ -// And see https://github.com/nlohmann/json/pull/1391 -template = 0> -auto get(const nlohmann::detail::iteration_proxy_value& i) -> decltype(i.key()) -{ - return i.key(); -} -// Structured Bindings Support -// For further reference see https://blog.tartanllama.xyz/structured-bindings/ -// And see https://github.com/nlohmann/json/pull/1391 -template = 0> -auto get(const nlohmann::detail::iteration_proxy_value& i) -> decltype(i.value()) -{ - return i.value(); -} -} // namespace detail -} // namespace nlohmann - -// The Addition to the STD Namespace is required to add -// Structured Bindings Support to the iteration_proxy_value class -// For further reference see https://blog.tartanllama.xyz/structured-bindings/ -// And see https://github.com/nlohmann/json/pull/1391 -namespace std -{ -#if defined(__clang__) - // Fix: https://github.com/nlohmann/json/issues/1401 - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wmismatched-tags" -#endif -template -class tuple_size<::nlohmann::detail::iteration_proxy_value> - : public std::integral_constant {}; - -template -class tuple_element> -{ - public: - using type = decltype( - get(std::declval < - ::nlohmann::detail::iteration_proxy_value> ())); -}; -#if defined(__clang__) - #pragma clang diagnostic pop -#endif -} // namespace std - -// #include - -// #include - -// #include - - -#if JSON_HAS_EXPERIMENTAL_FILESYSTEM -#include -namespace nlohmann::detail -{ -namespace std_fs = std::experimental::filesystem; -} // namespace nlohmann::detail -#elif JSON_HAS_FILESYSTEM -#include -namespace nlohmann::detail -{ -namespace std_fs = std::filesystem; -} // namespace nlohmann::detail -#endif - -namespace nlohmann -{ -namespace detail -{ -////////////////// -// constructors // -////////////////// - -/* - * Note all external_constructor<>::construct functions need to call - * j.m_value.destroy(j.m_type) to avoid a memory leak in case j contains an - * allocated value (e.g., a string). See bug issue - * https://github.com/nlohmann/json/issues/2865 for more information. - */ - -template struct external_constructor; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::boolean; - j.m_value = b; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::string; - j.m_value = s; - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s) - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::string; - j.m_value = std::move(s); - j.assert_invariant(); - } - - template < typename BasicJsonType, typename CompatibleStringType, - enable_if_t < !std::is_same::value, - int > = 0 > - static void construct(BasicJsonType& j, const CompatibleStringType& str) - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::string; - j.m_value.string = j.template create(str); - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, const typename BasicJsonType::binary_t& b) - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::binary; - j.m_value = typename BasicJsonType::binary_t(b); - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, typename BasicJsonType::binary_t&& b) - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::binary; - j.m_value = typename BasicJsonType::binary_t(std::move(b)); - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::number_float; - j.m_value = val; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::number_unsigned; - j.m_value = val; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::number_integer; - j.m_value = val; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::array; - j.m_value = arr; - j.set_parents(); - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr) - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::array; - j.m_value = std::move(arr); - j.set_parents(); - j.assert_invariant(); - } - - template < typename BasicJsonType, typename CompatibleArrayType, - enable_if_t < !std::is_same::value, - int > = 0 > - static void construct(BasicJsonType& j, const CompatibleArrayType& arr) - { - using std::begin; - using std::end; - - j.m_value.destroy(j.m_type); - j.m_type = value_t::array; - j.m_value.array = j.template create(begin(arr), end(arr)); - j.set_parents(); - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, const std::vector& arr) - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::array; - j.m_value = value_t::array; - j.m_value.array->reserve(arr.size()); - for (const bool x : arr) - { - j.m_value.array->push_back(x); - j.set_parent(j.m_value.array->back()); - } - j.assert_invariant(); - } - - template::value, int> = 0> - static void construct(BasicJsonType& j, const std::valarray& arr) - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::array; - j.m_value = value_t::array; - j.m_value.array->resize(arr.size()); - if (arr.size() > 0) - { - std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin()); - } - j.set_parents(); - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::object; - j.m_value = obj; - j.set_parents(); - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj) - { - j.m_value.destroy(j.m_type); - j.m_type = value_t::object; - j.m_value = std::move(obj); - j.set_parents(); - j.assert_invariant(); - } - - template < typename BasicJsonType, typename CompatibleObjectType, - enable_if_t < !std::is_same::value, int > = 0 > - static void construct(BasicJsonType& j, const CompatibleObjectType& obj) - { - using std::begin; - using std::end; - - j.m_value.destroy(j.m_type); - j.m_type = value_t::object; - j.m_value.object = j.template create(begin(obj), end(obj)); - j.set_parents(); - j.assert_invariant(); - } -}; - -///////////// -// to_json // -///////////// - -template::value, int> = 0> -void to_json(BasicJsonType& j, T b) noexcept -{ - external_constructor::construct(j, b); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, const CompatibleString& s) -{ - external_constructor::construct(j, s); -} - -template -void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s) -{ - external_constructor::construct(j, std::move(s)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, FloatType val) noexcept -{ - external_constructor::construct(j, static_cast(val)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept -{ - external_constructor::construct(j, static_cast(val)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept -{ - external_constructor::construct(j, static_cast(val)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, EnumType e) noexcept -{ - using underlying_type = typename std::underlying_type::type; - external_constructor::construct(j, static_cast(e)); -} - -template -void to_json(BasicJsonType& j, const std::vector& e) -{ - external_constructor::construct(j, e); -} - -template < typename BasicJsonType, typename CompatibleArrayType, - enable_if_t < is_compatible_array_type::value&& - !is_compatible_object_type::value&& - !is_compatible_string_type::value&& - !std::is_same::value&& - !is_basic_json::value, - int > = 0 > -void to_json(BasicJsonType& j, const CompatibleArrayType& arr) -{ - external_constructor::construct(j, arr); -} - -template -void to_json(BasicJsonType& j, const typename BasicJsonType::binary_t& bin) -{ - external_constructor::construct(j, bin); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, const std::valarray& arr) -{ - external_constructor::construct(j, std::move(arr)); -} - -template -void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr) -{ - external_constructor::construct(j, std::move(arr)); -} - -template < typename BasicJsonType, typename CompatibleObjectType, - enable_if_t < is_compatible_object_type::value&& !is_basic_json::value, int > = 0 > -void to_json(BasicJsonType& j, const CompatibleObjectType& obj) -{ - external_constructor::construct(j, obj); -} - -template -void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj) -{ - external_constructor::construct(j, std::move(obj)); -} - -template < - typename BasicJsonType, typename T, std::size_t N, - enable_if_t < !std::is_constructible::value, // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) - int > = 0 > -void to_json(BasicJsonType& j, const T(&arr)[N]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) -{ - external_constructor::construct(j, arr); -} - -template < typename BasicJsonType, typename T1, typename T2, enable_if_t < std::is_constructible::value&& std::is_constructible::value, int > = 0 > -void to_json(BasicJsonType& j, const std::pair& p) -{ - j = { p.first, p.second }; -} - -// for https://github.com/nlohmann/json/pull/1134 -template>::value, int> = 0> -void to_json(BasicJsonType& j, const T& b) -{ - j = { {b.key(), b.value()} }; -} - -template -void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence /*unused*/) -{ - j = { std::get(t)... }; -} - -template::value, int > = 0> -void to_json(BasicJsonType& j, const T& t) -{ - to_json_tuple_impl(j, t, make_index_sequence::value> {}); -} - -#if JSON_HAS_FILESYSTEM || JSON_HAS_EXPERIMENTAL_FILESYSTEM -template -void to_json(BasicJsonType& j, const std_fs::path& p) -{ - j = p.string(); -} -#endif - -struct to_json_fn -{ - template - auto operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(to_json(j, std::forward(val)))) - -> decltype(to_json(j, std::forward(val)), void()) - { - return to_json(j, std::forward(val)); - } -}; -} // namespace detail - -/// namespace to hold default `to_json` function -/// to see why this is required: -/// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html -namespace // NOLINT(cert-dcl59-cpp,fuchsia-header-anon-namespaces,google-build-namespaces) -{ -constexpr const auto& to_json = detail::static_const::value; // NOLINT(misc-definitions-in-headers) -} // namespace -} // namespace nlohmann - -// #include - -// #include - - -namespace nlohmann -{ - -/// @sa https://json.nlohmann.me/api/adl_serializer/ -template -struct adl_serializer -{ - /// @brief convert a JSON value to any value type - /// @sa https://json.nlohmann.me/api/adl_serializer/from_json/ - template - static auto from_json(BasicJsonType && j, TargetType& val) noexcept( - noexcept(::nlohmann::from_json(std::forward(j), val))) - -> decltype(::nlohmann::from_json(std::forward(j), val), void()) - { - ::nlohmann::from_json(std::forward(j), val); - } - - /// @brief convert a JSON value to any value type - /// @sa https://json.nlohmann.me/api/adl_serializer/from_json/ - template - static auto from_json(BasicJsonType && j) noexcept( - noexcept(::nlohmann::from_json(std::forward(j), detail::identity_tag {}))) - -> decltype(::nlohmann::from_json(std::forward(j), detail::identity_tag {})) - { - return ::nlohmann::from_json(std::forward(j), detail::identity_tag {}); - } - - /// @brief convert any value type to a JSON value - /// @sa https://json.nlohmann.me/api/adl_serializer/to_json/ - template - static auto to_json(BasicJsonType& j, TargetType && val) noexcept( - noexcept(::nlohmann::to_json(j, std::forward(val)))) - -> decltype(::nlohmann::to_json(j, std::forward(val)), void()) - { - ::nlohmann::to_json(j, std::forward(val)); - } -}; -} // namespace nlohmann - -// #include - - -#include // uint8_t, uint64_t -#include // tie -#include // move - -namespace nlohmann -{ - -/// @brief an internal type for a backed binary type -/// @sa https://json.nlohmann.me/api/byte_container_with_subtype/ -template -class byte_container_with_subtype : public BinaryType -{ - public: - using container_type = BinaryType; - using subtype_type = std::uint64_t; - - /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ - byte_container_with_subtype() noexcept(noexcept(container_type())) - : container_type() - {} - - /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ - byte_container_with_subtype(const container_type& b) noexcept(noexcept(container_type(b))) - : container_type(b) - {} - - /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ - byte_container_with_subtype(container_type&& b) noexcept(noexcept(container_type(std::move(b)))) - : container_type(std::move(b)) - {} - - /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ - byte_container_with_subtype(const container_type& b, subtype_type subtype_) noexcept(noexcept(container_type(b))) - : container_type(b) - , m_subtype(subtype_) - , m_has_subtype(true) - {} - - /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ - byte_container_with_subtype(container_type&& b, subtype_type subtype_) noexcept(noexcept(container_type(std::move(b)))) - : container_type(std::move(b)) - , m_subtype(subtype_) - , m_has_subtype(true) - {} - - bool operator==(const byte_container_with_subtype& rhs) const - { - return std::tie(static_cast(*this), m_subtype, m_has_subtype) == - std::tie(static_cast(rhs), rhs.m_subtype, rhs.m_has_subtype); - } - - bool operator!=(const byte_container_with_subtype& rhs) const - { - return !(rhs == *this); - } - - /// @brief sets the binary subtype - /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/set_subtype/ - void set_subtype(subtype_type subtype_) noexcept - { - m_subtype = subtype_; - m_has_subtype = true; - } - - /// @brief return the binary subtype - /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/subtype/ - constexpr subtype_type subtype() const noexcept - { - return m_has_subtype ? m_subtype : static_cast(-1); - } - - /// @brief return whether the value has a subtype - /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/has_subtype/ - constexpr bool has_subtype() const noexcept - { - return m_has_subtype; - } - - /// @brief clears the binary subtype - /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/clear_subtype/ - void clear_subtype() noexcept - { - m_subtype = 0; - m_has_subtype = false; - } - - private: - subtype_type m_subtype = 0; - bool m_has_subtype = false; -}; - -} // namespace nlohmann - -// #include - -// #include - -// #include - -// #include - - -#include // uint8_t -#include // size_t -#include // hash - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ - -// boost::hash_combine -inline std::size_t combine(std::size_t seed, std::size_t h) noexcept -{ - seed ^= h + 0x9e3779b9 + (seed << 6U) + (seed >> 2U); - return seed; -} - -/*! -@brief hash a JSON value - -The hash function tries to rely on std::hash where possible. Furthermore, the -type of the JSON value is taken into account to have different hash values for -null, 0, 0U, and false, etc. - -@tparam BasicJsonType basic_json specialization -@param j JSON value to hash -@return hash value of j -*/ -template -std::size_t hash(const BasicJsonType& j) -{ - using string_t = typename BasicJsonType::string_t; - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - - const auto type = static_cast(j.type()); - switch (j.type()) - { - case BasicJsonType::value_t::null: - case BasicJsonType::value_t::discarded: - { - return combine(type, 0); - } - - case BasicJsonType::value_t::object: - { - auto seed = combine(type, j.size()); - for (const auto& element : j.items()) - { - const auto h = std::hash {}(element.key()); - seed = combine(seed, h); - seed = combine(seed, hash(element.value())); - } - return seed; - } - - case BasicJsonType::value_t::array: - { - auto seed = combine(type, j.size()); - for (const auto& element : j) - { - seed = combine(seed, hash(element)); - } - return seed; - } - - case BasicJsonType::value_t::string: - { - const auto h = std::hash {}(j.template get_ref()); - return combine(type, h); - } - - case BasicJsonType::value_t::boolean: - { - const auto h = std::hash {}(j.template get()); - return combine(type, h); - } - - case BasicJsonType::value_t::number_integer: - { - const auto h = std::hash {}(j.template get()); - return combine(type, h); - } - - case BasicJsonType::value_t::number_unsigned: - { - const auto h = std::hash {}(j.template get()); - return combine(type, h); - } - - case BasicJsonType::value_t::number_float: - { - const auto h = std::hash {}(j.template get()); - return combine(type, h); - } - - case BasicJsonType::value_t::binary: - { - auto seed = combine(type, j.get_binary().size()); - const auto h = std::hash {}(j.get_binary().has_subtype()); - seed = combine(seed, h); - seed = combine(seed, static_cast(j.get_binary().subtype())); - for (const auto byte : j.get_binary()) - { - seed = combine(seed, std::hash {}(byte)); - } - return seed; - } - - default: // LCOV_EXCL_LINE - JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE - return 0; // LCOV_EXCL_LINE - } -} - -} // namespace detail -} // namespace nlohmann - -// #include - - -#include // generate_n -#include // array -#include // ldexp -#include // size_t -#include // uint8_t, uint16_t, uint32_t, uint64_t -#include // snprintf -#include // memcpy -#include // back_inserter -#include // numeric_limits -#include // char_traits, string -#include // make_pair, move -#include // vector - -// #include - -// #include - - -#include // array -#include // size_t -#include // strlen -#include // begin, end, iterator_traits, random_access_iterator_tag, distance, next -#include // shared_ptr, make_shared, addressof -#include // accumulate -#include // string, char_traits -#include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer -#include // pair, declval - -#ifndef JSON_NO_IO - #include // FILE * - #include // istream -#endif // JSON_NO_IO - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -/// the supported input formats -enum class input_format_t { json, cbor, msgpack, ubjson, bson }; - -//////////////////// -// input adapters // -//////////////////// - -#ifndef JSON_NO_IO -/*! -Input adapter for stdio file access. This adapter read only 1 byte and do not use any - buffer. This adapter is a very low level adapter. -*/ -class file_input_adapter -{ - public: - using char_type = char; - - JSON_HEDLEY_NON_NULL(2) - explicit file_input_adapter(std::FILE* f) noexcept - : m_file(f) - {} - - // make class move-only - file_input_adapter(const file_input_adapter&) = delete; - file_input_adapter(file_input_adapter&&) noexcept = default; - file_input_adapter& operator=(const file_input_adapter&) = delete; - file_input_adapter& operator=(file_input_adapter&&) = delete; - ~file_input_adapter() = default; - - std::char_traits::int_type get_character() noexcept - { - return std::fgetc(m_file); - } - - private: - /// the file pointer to read from - std::FILE* m_file; -}; - - -/*! -Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at -beginning of input. Does not support changing the underlying std::streambuf -in mid-input. Maintains underlying std::istream and std::streambuf to support -subsequent use of standard std::istream operations to process any input -characters following those used in parsing the JSON input. Clears the -std::istream flags; any input errors (e.g., EOF) will be detected by the first -subsequent call for input from the std::istream. -*/ -class input_stream_adapter -{ - public: - using char_type = char; - - ~input_stream_adapter() - { - // clear stream flags; we use underlying streambuf I/O, do not - // maintain ifstream flags, except eof - if (is != nullptr) - { - is->clear(is->rdstate() & std::ios::eofbit); - } - } - - explicit input_stream_adapter(std::istream& i) - : is(&i), sb(i.rdbuf()) - {} - - // delete because of pointer members - input_stream_adapter(const input_stream_adapter&) = delete; - input_stream_adapter& operator=(input_stream_adapter&) = delete; - input_stream_adapter& operator=(input_stream_adapter&&) = delete; - - input_stream_adapter(input_stream_adapter&& rhs) noexcept - : is(rhs.is), sb(rhs.sb) - { - rhs.is = nullptr; - rhs.sb = nullptr; - } - - // std::istream/std::streambuf use std::char_traits::to_int_type, to - // ensure that std::char_traits::eof() and the character 0xFF do not - // end up as the same value, e.g. 0xFFFFFFFF. - std::char_traits::int_type get_character() - { - auto res = sb->sbumpc(); - // set eof manually, as we don't use the istream interface. - if (JSON_HEDLEY_UNLIKELY(res == std::char_traits::eof())) - { - is->clear(is->rdstate() | std::ios::eofbit); - } - return res; - } - - private: - /// the associated input stream - std::istream* is = nullptr; - std::streambuf* sb = nullptr; -}; -#endif // JSON_NO_IO - -// General-purpose iterator-based adapter. It might not be as fast as -// theoretically possible for some containers, but it is extremely versatile. -template -class iterator_input_adapter -{ - public: - using char_type = typename std::iterator_traits::value_type; - - iterator_input_adapter(IteratorType first, IteratorType last) - : current(std::move(first)), end(std::move(last)) - {} - - typename std::char_traits::int_type get_character() - { - if (JSON_HEDLEY_LIKELY(current != end)) - { - auto result = std::char_traits::to_int_type(*current); - std::advance(current, 1); - return result; - } - - return std::char_traits::eof(); - } - - private: - IteratorType current; - IteratorType end; - - template - friend struct wide_string_input_helper; - - bool empty() const - { - return current == end; - } -}; - - -template -struct wide_string_input_helper; - -template -struct wide_string_input_helper -{ - // UTF-32 - static void fill_buffer(BaseInputAdapter& input, - std::array::int_type, 4>& utf8_bytes, - size_t& utf8_bytes_index, - size_t& utf8_bytes_filled) - { - utf8_bytes_index = 0; - - if (JSON_HEDLEY_UNLIKELY(input.empty())) - { - utf8_bytes[0] = std::char_traits::eof(); - utf8_bytes_filled = 1; - } - else - { - // get the current character - const auto wc = input.get_character(); - - // UTF-32 to UTF-8 encoding - if (wc < 0x80) - { - utf8_bytes[0] = static_cast::int_type>(wc); - utf8_bytes_filled = 1; - } - else if (wc <= 0x7FF) - { - utf8_bytes[0] = static_cast::int_type>(0xC0u | ((static_cast(wc) >> 6u) & 0x1Fu)); - utf8_bytes[1] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); - utf8_bytes_filled = 2; - } - else if (wc <= 0xFFFF) - { - utf8_bytes[0] = static_cast::int_type>(0xE0u | ((static_cast(wc) >> 12u) & 0x0Fu)); - utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); - utf8_bytes[2] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); - utf8_bytes_filled = 3; - } - else if (wc <= 0x10FFFF) - { - utf8_bytes[0] = static_cast::int_type>(0xF0u | ((static_cast(wc) >> 18u) & 0x07u)); - utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 12u) & 0x3Fu)); - utf8_bytes[2] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); - utf8_bytes[3] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); - utf8_bytes_filled = 4; - } - else - { - // unknown character - utf8_bytes[0] = static_cast::int_type>(wc); - utf8_bytes_filled = 1; - } - } - } -}; - -template -struct wide_string_input_helper -{ - // UTF-16 - static void fill_buffer(BaseInputAdapter& input, - std::array::int_type, 4>& utf8_bytes, - size_t& utf8_bytes_index, - size_t& utf8_bytes_filled) - { - utf8_bytes_index = 0; - - if (JSON_HEDLEY_UNLIKELY(input.empty())) - { - utf8_bytes[0] = std::char_traits::eof(); - utf8_bytes_filled = 1; - } - else - { - // get the current character - const auto wc = input.get_character(); - - // UTF-16 to UTF-8 encoding - if (wc < 0x80) - { - utf8_bytes[0] = static_cast::int_type>(wc); - utf8_bytes_filled = 1; - } - else if (wc <= 0x7FF) - { - utf8_bytes[0] = static_cast::int_type>(0xC0u | ((static_cast(wc) >> 6u))); - utf8_bytes[1] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); - utf8_bytes_filled = 2; - } - else if (0xD800 > wc || wc >= 0xE000) - { - utf8_bytes[0] = static_cast::int_type>(0xE0u | ((static_cast(wc) >> 12u))); - utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); - utf8_bytes[2] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); - utf8_bytes_filled = 3; - } - else - { - if (JSON_HEDLEY_UNLIKELY(!input.empty())) - { - const auto wc2 = static_cast(input.get_character()); - const auto charcode = 0x10000u + (((static_cast(wc) & 0x3FFu) << 10u) | (wc2 & 0x3FFu)); - utf8_bytes[0] = static_cast::int_type>(0xF0u | (charcode >> 18u)); - utf8_bytes[1] = static_cast::int_type>(0x80u | ((charcode >> 12u) & 0x3Fu)); - utf8_bytes[2] = static_cast::int_type>(0x80u | ((charcode >> 6u) & 0x3Fu)); - utf8_bytes[3] = static_cast::int_type>(0x80u | (charcode & 0x3Fu)); - utf8_bytes_filled = 4; - } - else - { - utf8_bytes[0] = static_cast::int_type>(wc); - utf8_bytes_filled = 1; - } - } - } - } -}; - -// Wraps another input apdater to convert wide character types into individual bytes. -template -class wide_string_input_adapter -{ - public: - using char_type = char; - - wide_string_input_adapter(BaseInputAdapter base) - : base_adapter(base) {} - - typename std::char_traits::int_type get_character() noexcept - { - // check if buffer needs to be filled - if (utf8_bytes_index == utf8_bytes_filled) - { - fill_buffer(); - - JSON_ASSERT(utf8_bytes_filled > 0); - JSON_ASSERT(utf8_bytes_index == 0); - } - - // use buffer - JSON_ASSERT(utf8_bytes_filled > 0); - JSON_ASSERT(utf8_bytes_index < utf8_bytes_filled); - return utf8_bytes[utf8_bytes_index++]; - } - - private: - BaseInputAdapter base_adapter; - - template - void fill_buffer() - { - wide_string_input_helper::fill_buffer(base_adapter, utf8_bytes, utf8_bytes_index, utf8_bytes_filled); - } - - /// a buffer for UTF-8 bytes - std::array::int_type, 4> utf8_bytes = {{0, 0, 0, 0}}; - - /// index to the utf8_codes array for the next valid byte - std::size_t utf8_bytes_index = 0; - /// number of valid bytes in the utf8_codes array - std::size_t utf8_bytes_filled = 0; -}; - - -template -struct iterator_input_adapter_factory -{ - using iterator_type = IteratorType; - using char_type = typename std::iterator_traits::value_type; - using adapter_type = iterator_input_adapter; - - static adapter_type create(IteratorType first, IteratorType last) - { - return adapter_type(std::move(first), std::move(last)); - } -}; - -template -struct is_iterator_of_multibyte -{ - using value_type = typename std::iterator_traits::value_type; - enum - { - value = sizeof(value_type) > 1 - }; -}; - -template -struct iterator_input_adapter_factory::value>> -{ - using iterator_type = IteratorType; - using char_type = typename std::iterator_traits::value_type; - using base_adapter_type = iterator_input_adapter; - using adapter_type = wide_string_input_adapter; - - static adapter_type create(IteratorType first, IteratorType last) - { - return adapter_type(base_adapter_type(std::move(first), std::move(last))); - } -}; - -// General purpose iterator-based input -template -typename iterator_input_adapter_factory::adapter_type input_adapter(IteratorType first, IteratorType last) -{ - using factory_type = iterator_input_adapter_factory; - return factory_type::create(first, last); -} - -// Convenience shorthand from container to iterator -// Enables ADL on begin(container) and end(container) -// Encloses the using declarations in namespace for not to leak them to outside scope - -namespace container_input_adapter_factory_impl -{ - -using std::begin; -using std::end; - -template -struct container_input_adapter_factory {}; - -template -struct container_input_adapter_factory< ContainerType, - void_t()), end(std::declval()))>> - { - using adapter_type = decltype(input_adapter(begin(std::declval()), end(std::declval()))); - - static adapter_type create(const ContainerType& container) -{ - return input_adapter(begin(container), end(container)); -} - }; - -} // namespace container_input_adapter_factory_impl - -template -typename container_input_adapter_factory_impl::container_input_adapter_factory::adapter_type input_adapter(const ContainerType& container) -{ - return container_input_adapter_factory_impl::container_input_adapter_factory::create(container); -} - -#ifndef JSON_NO_IO -// Special cases with fast paths -inline file_input_adapter input_adapter(std::FILE* file) -{ - return file_input_adapter(file); -} - -inline input_stream_adapter input_adapter(std::istream& stream) -{ - return input_stream_adapter(stream); -} - -inline input_stream_adapter input_adapter(std::istream&& stream) -{ - return input_stream_adapter(stream); -} -#endif // JSON_NO_IO - -using contiguous_bytes_input_adapter = decltype(input_adapter(std::declval(), std::declval())); - -// Null-delimited strings, and the like. -template < typename CharT, - typename std::enable_if < - std::is_pointer::value&& - !std::is_array::value&& - std::is_integral::type>::value&& - sizeof(typename std::remove_pointer::type) == 1, - int >::type = 0 > -contiguous_bytes_input_adapter input_adapter(CharT b) -{ - auto length = std::strlen(reinterpret_cast(b)); - const auto* ptr = reinterpret_cast(b); - return input_adapter(ptr, ptr + length); -} - -template -auto input_adapter(T (&array)[N]) -> decltype(input_adapter(array, array + N)) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) -{ - return input_adapter(array, array + N); -} - -// This class only handles inputs of input_buffer_adapter type. -// It's required so that expressions like {ptr, len} can be implicitly cast -// to the correct adapter. -class span_input_adapter -{ - public: - template < typename CharT, - typename std::enable_if < - std::is_pointer::value&& - std::is_integral::type>::value&& - sizeof(typename std::remove_pointer::type) == 1, - int >::type = 0 > - span_input_adapter(CharT b, std::size_t l) - : ia(reinterpret_cast(b), reinterpret_cast(b) + l) {} - - template::iterator_category, std::random_access_iterator_tag>::value, - int>::type = 0> - span_input_adapter(IteratorType first, IteratorType last) - : ia(input_adapter(first, last)) {} - - contiguous_bytes_input_adapter&& get() - { - return std::move(ia); // NOLINT(hicpp-move-const-arg,performance-move-const-arg) - } - - private: - contiguous_bytes_input_adapter ia; -}; -} // namespace detail -} // namespace nlohmann - -// #include - - -#include -#include // string -#include // move -#include // vector - -// #include - -// #include - - -namespace nlohmann -{ - -/*! -@brief SAX interface - -This class describes the SAX interface used by @ref nlohmann::json::sax_parse. -Each function is called in different situations while the input is parsed. The -boolean return value informs the parser whether to continue processing the -input. -*/ -template -struct json_sax -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - using string_t = typename BasicJsonType::string_t; - using binary_t = typename BasicJsonType::binary_t; - - /*! - @brief a null value was read - @return whether parsing should proceed - */ - virtual bool null() = 0; - - /*! - @brief a boolean value was read - @param[in] val boolean value - @return whether parsing should proceed - */ - virtual bool boolean(bool val) = 0; - - /*! - @brief an integer number was read - @param[in] val integer value - @return whether parsing should proceed - */ - virtual bool number_integer(number_integer_t val) = 0; - - /*! - @brief an unsigned integer number was read - @param[in] val unsigned integer value - @return whether parsing should proceed - */ - virtual bool number_unsigned(number_unsigned_t val) = 0; - - /*! - @brief a floating-point number was read - @param[in] val floating-point value - @param[in] s raw token value - @return whether parsing should proceed - */ - virtual bool number_float(number_float_t val, const string_t& s) = 0; - - /*! - @brief a string value was read - @param[in] val string value - @return whether parsing should proceed - @note It is safe to move the passed string value. - */ - virtual bool string(string_t& val) = 0; - - /*! - @brief a binary value was read - @param[in] val binary value - @return whether parsing should proceed - @note It is safe to move the passed binary value. - */ - virtual bool binary(binary_t& val) = 0; - - /*! - @brief the beginning of an object was read - @param[in] elements number of object elements or -1 if unknown - @return whether parsing should proceed - @note binary formats may report the number of elements - */ - virtual bool start_object(std::size_t elements) = 0; - - /*! - @brief an object key was read - @param[in] val object key - @return whether parsing should proceed - @note It is safe to move the passed string. - */ - virtual bool key(string_t& val) = 0; - - /*! - @brief the end of an object was read - @return whether parsing should proceed - */ - virtual bool end_object() = 0; - - /*! - @brief the beginning of an array was read - @param[in] elements number of array elements or -1 if unknown - @return whether parsing should proceed - @note binary formats may report the number of elements - */ - virtual bool start_array(std::size_t elements) = 0; - - /*! - @brief the end of an array was read - @return whether parsing should proceed - */ - virtual bool end_array() = 0; - - /*! - @brief a parse error occurred - @param[in] position the position in the input where the error occurs - @param[in] last_token the last read token - @param[in] ex an exception object describing the error - @return whether parsing should proceed (must return false) - */ - virtual bool parse_error(std::size_t position, - const std::string& last_token, - const detail::exception& ex) = 0; - - json_sax() = default; - json_sax(const json_sax&) = default; - json_sax(json_sax&&) noexcept = default; - json_sax& operator=(const json_sax&) = default; - json_sax& operator=(json_sax&&) noexcept = default; - virtual ~json_sax() = default; -}; - - -namespace detail -{ -/*! -@brief SAX implementation to create a JSON value from SAX events - -This class implements the @ref json_sax interface and processes the SAX events -to create a JSON value which makes it basically a DOM parser. The structure or -hierarchy of the JSON value is managed by the stack `ref_stack` which contains -a pointer to the respective array or object for each recursion depth. - -After successful parsing, the value that is passed by reference to the -constructor contains the parsed value. - -@tparam BasicJsonType the JSON type -*/ -template -class json_sax_dom_parser -{ - public: - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - using string_t = typename BasicJsonType::string_t; - using binary_t = typename BasicJsonType::binary_t; - - /*! - @param[in,out] r reference to a JSON value that is manipulated while - parsing - @param[in] allow_exceptions_ whether parse errors yield exceptions - */ - explicit json_sax_dom_parser(BasicJsonType& r, const bool allow_exceptions_ = true) - : root(r), allow_exceptions(allow_exceptions_) - {} - - // make class move-only - json_sax_dom_parser(const json_sax_dom_parser&) = delete; - json_sax_dom_parser(json_sax_dom_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) - json_sax_dom_parser& operator=(const json_sax_dom_parser&) = delete; - json_sax_dom_parser& operator=(json_sax_dom_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) - ~json_sax_dom_parser() = default; - - bool null() - { - handle_value(nullptr); - return true; - } - - bool boolean(bool val) - { - handle_value(val); - return true; - } - - bool number_integer(number_integer_t val) - { - handle_value(val); - return true; - } - - bool number_unsigned(number_unsigned_t val) - { - handle_value(val); - return true; - } - - bool number_float(number_float_t val, const string_t& /*unused*/) - { - handle_value(val); - return true; - } - - bool string(string_t& val) - { - handle_value(val); - return true; - } - - bool binary(binary_t& val) - { - handle_value(std::move(val)); - return true; - } - - bool start_object(std::size_t len) - { - ref_stack.push_back(handle_value(BasicJsonType::value_t::object)); - - if (JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) - { - JSON_THROW(out_of_range::create(408, "excessive object size: " + std::to_string(len), *ref_stack.back())); - } - - return true; - } - - bool key(string_t& val) - { - // add null at given key and store the reference for later - object_element = &(ref_stack.back()->m_value.object->operator[](val)); - return true; - } - - bool end_object() - { - ref_stack.back()->set_parents(); - ref_stack.pop_back(); - return true; - } - - bool start_array(std::size_t len) - { - ref_stack.push_back(handle_value(BasicJsonType::value_t::array)); - - if (JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) - { - JSON_THROW(out_of_range::create(408, "excessive array size: " + std::to_string(len), *ref_stack.back())); - } - - return true; - } - - bool end_array() - { - ref_stack.back()->set_parents(); - ref_stack.pop_back(); - return true; - } - - template - bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, - const Exception& ex) - { - errored = true; - static_cast(ex); - if (allow_exceptions) - { - JSON_THROW(ex); - } - return false; - } - - constexpr bool is_errored() const - { - return errored; - } - - private: - /*! - @invariant If the ref stack is empty, then the passed value will be the new - root. - @invariant If the ref stack contains a value, then it is an array or an - object to which we can add elements - */ - template - JSON_HEDLEY_RETURNS_NON_NULL - BasicJsonType* handle_value(Value&& v) - { - if (ref_stack.empty()) - { - root = BasicJsonType(std::forward(v)); - return &root; - } - - JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object()); - - if (ref_stack.back()->is_array()) - { - ref_stack.back()->m_value.array->emplace_back(std::forward(v)); - return &(ref_stack.back()->m_value.array->back()); - } - - JSON_ASSERT(ref_stack.back()->is_object()); - JSON_ASSERT(object_element); - *object_element = BasicJsonType(std::forward(v)); - return object_element; - } - - /// the parsed JSON value - BasicJsonType& root; - /// stack to model hierarchy of values - std::vector ref_stack {}; - /// helper to hold the reference for the next object element - BasicJsonType* object_element = nullptr; - /// whether a syntax error occurred - bool errored = false; - /// whether to throw exceptions in case of errors - const bool allow_exceptions = true; -}; - -template -class json_sax_dom_callback_parser -{ - public: - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - using string_t = typename BasicJsonType::string_t; - using binary_t = typename BasicJsonType::binary_t; - using parser_callback_t = typename BasicJsonType::parser_callback_t; - using parse_event_t = typename BasicJsonType::parse_event_t; - - json_sax_dom_callback_parser(BasicJsonType& r, - const parser_callback_t cb, - const bool allow_exceptions_ = true) - : root(r), callback(cb), allow_exceptions(allow_exceptions_) - { - keep_stack.push_back(true); - } - - // make class move-only - json_sax_dom_callback_parser(const json_sax_dom_callback_parser&) = delete; - json_sax_dom_callback_parser(json_sax_dom_callback_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) - json_sax_dom_callback_parser& operator=(const json_sax_dom_callback_parser&) = delete; - json_sax_dom_callback_parser& operator=(json_sax_dom_callback_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) - ~json_sax_dom_callback_parser() = default; - - bool null() - { - handle_value(nullptr); - return true; - } - - bool boolean(bool val) - { - handle_value(val); - return true; - } - - bool number_integer(number_integer_t val) - { - handle_value(val); - return true; - } - - bool number_unsigned(number_unsigned_t val) - { - handle_value(val); - return true; - } - - bool number_float(number_float_t val, const string_t& /*unused*/) - { - handle_value(val); - return true; - } - - bool string(string_t& val) - { - handle_value(val); - return true; - } - - bool binary(binary_t& val) - { - handle_value(std::move(val)); - return true; - } - - bool start_object(std::size_t len) - { - // check callback for object start - const bool keep = callback(static_cast(ref_stack.size()), parse_event_t::object_start, discarded); - keep_stack.push_back(keep); - - auto val = handle_value(BasicJsonType::value_t::object, true); - ref_stack.push_back(val.second); - - // check object limit - if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) - { - JSON_THROW(out_of_range::create(408, "excessive object size: " + std::to_string(len), *ref_stack.back())); - } - - return true; - } - - bool key(string_t& val) - { - BasicJsonType k = BasicJsonType(val); - - // check callback for key - const bool keep = callback(static_cast(ref_stack.size()), parse_event_t::key, k); - key_keep_stack.push_back(keep); - - // add discarded value at given key and store the reference for later - if (keep && ref_stack.back()) - { - object_element = &(ref_stack.back()->m_value.object->operator[](val) = discarded); - } - - return true; - } - - bool end_object() - { - if (ref_stack.back()) - { - if (!callback(static_cast(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back())) - { - // discard object - *ref_stack.back() = discarded; - } - else - { - ref_stack.back()->set_parents(); - } - } - - JSON_ASSERT(!ref_stack.empty()); - JSON_ASSERT(!keep_stack.empty()); - ref_stack.pop_back(); - keep_stack.pop_back(); - - if (!ref_stack.empty() && ref_stack.back() && ref_stack.back()->is_structured()) - { - // remove discarded value - for (auto it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it) - { - if (it->is_discarded()) - { - ref_stack.back()->erase(it); - break; - } - } - } - - return true; - } - - bool start_array(std::size_t len) - { - const bool keep = callback(static_cast(ref_stack.size()), parse_event_t::array_start, discarded); - keep_stack.push_back(keep); - - auto val = handle_value(BasicJsonType::value_t::array, true); - ref_stack.push_back(val.second); - - // check array limit - if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) - { - JSON_THROW(out_of_range::create(408, "excessive array size: " + std::to_string(len), *ref_stack.back())); - } - - return true; - } - - bool end_array() - { - bool keep = true; - - if (ref_stack.back()) - { - keep = callback(static_cast(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back()); - if (keep) - { - ref_stack.back()->set_parents(); - } - else - { - // discard array - *ref_stack.back() = discarded; - } - } - - JSON_ASSERT(!ref_stack.empty()); - JSON_ASSERT(!keep_stack.empty()); - ref_stack.pop_back(); - keep_stack.pop_back(); - - // remove discarded value - if (!keep && !ref_stack.empty() && ref_stack.back()->is_array()) - { - ref_stack.back()->m_value.array->pop_back(); - } - - return true; - } - - template - bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, - const Exception& ex) - { - errored = true; - static_cast(ex); - if (allow_exceptions) - { - JSON_THROW(ex); - } - return false; - } - - constexpr bool is_errored() const - { - return errored; - } - - private: - /*! - @param[in] v value to add to the JSON value we build during parsing - @param[in] skip_callback whether we should skip calling the callback - function; this is required after start_array() and - start_object() SAX events, because otherwise we would call the - callback function with an empty array or object, respectively. - - @invariant If the ref stack is empty, then the passed value will be the new - root. - @invariant If the ref stack contains a value, then it is an array or an - object to which we can add elements - - @return pair of boolean (whether value should be kept) and pointer (to the - passed value in the ref_stack hierarchy; nullptr if not kept) - */ - template - std::pair handle_value(Value&& v, const bool skip_callback = false) - { - JSON_ASSERT(!keep_stack.empty()); - - // do not handle this value if we know it would be added to a discarded - // container - if (!keep_stack.back()) - { - return {false, nullptr}; - } - - // create value - auto value = BasicJsonType(std::forward(v)); - - // check callback - const bool keep = skip_callback || callback(static_cast(ref_stack.size()), parse_event_t::value, value); - - // do not handle this value if we just learnt it shall be discarded - if (!keep) - { - return {false, nullptr}; - } - - if (ref_stack.empty()) - { - root = std::move(value); - return {true, &root}; - } - - // skip this value if we already decided to skip the parent - // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360) - if (!ref_stack.back()) - { - return {false, nullptr}; - } - - // we now only expect arrays and objects - JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object()); - - // array - if (ref_stack.back()->is_array()) - { - ref_stack.back()->m_value.array->emplace_back(std::move(value)); - return {true, &(ref_stack.back()->m_value.array->back())}; - } - - // object - JSON_ASSERT(ref_stack.back()->is_object()); - // check if we should store an element for the current key - JSON_ASSERT(!key_keep_stack.empty()); - const bool store_element = key_keep_stack.back(); - key_keep_stack.pop_back(); - - if (!store_element) - { - return {false, nullptr}; - } - - JSON_ASSERT(object_element); - *object_element = std::move(value); - return {true, object_element}; - } - - /// the parsed JSON value - BasicJsonType& root; - /// stack to model hierarchy of values - std::vector ref_stack {}; - /// stack to manage which values to keep - std::vector keep_stack {}; - /// stack to manage which object keys to keep - std::vector key_keep_stack {}; - /// helper to hold the reference for the next object element - BasicJsonType* object_element = nullptr; - /// whether a syntax error occurred - bool errored = false; - /// callback function - const parser_callback_t callback = nullptr; - /// whether to throw exceptions in case of errors - const bool allow_exceptions = true; - /// a discarded value for the callback - BasicJsonType discarded = BasicJsonType::value_t::discarded; -}; - -template -class json_sax_acceptor -{ - public: - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - using string_t = typename BasicJsonType::string_t; - using binary_t = typename BasicJsonType::binary_t; - - bool null() - { - return true; - } - - bool boolean(bool /*unused*/) - { - return true; - } - - bool number_integer(number_integer_t /*unused*/) - { - return true; - } - - bool number_unsigned(number_unsigned_t /*unused*/) - { - return true; - } - - bool number_float(number_float_t /*unused*/, const string_t& /*unused*/) - { - return true; - } - - bool string(string_t& /*unused*/) - { - return true; - } - - bool binary(binary_t& /*unused*/) - { - return true; - } - - bool start_object(std::size_t /*unused*/ = static_cast(-1)) - { - return true; - } - - bool key(string_t& /*unused*/) - { - return true; - } - - bool end_object() - { - return true; - } - - bool start_array(std::size_t /*unused*/ = static_cast(-1)) - { - return true; - } - - bool end_array() - { - return true; - } - - bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const detail::exception& /*unused*/) - { - return false; - } -}; -} // namespace detail - -} // namespace nlohmann - -// #include - - -#include // array -#include // localeconv -#include // size_t -#include // snprintf -#include // strtof, strtod, strtold, strtoll, strtoull -#include // initializer_list -#include // char_traits, string -#include // move -#include // vector - -// #include - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -/////////// -// lexer // -/////////// - -template -class lexer_base -{ - public: - /// token types for the parser - enum class token_type - { - uninitialized, ///< indicating the scanner is uninitialized - literal_true, ///< the `true` literal - literal_false, ///< the `false` literal - literal_null, ///< the `null` literal - value_string, ///< a string -- use get_string() for actual value - value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value - value_integer, ///< a signed integer -- use get_number_integer() for actual value - value_float, ///< an floating point number -- use get_number_float() for actual value - begin_array, ///< the character for array begin `[` - begin_object, ///< the character for object begin `{` - end_array, ///< the character for array end `]` - end_object, ///< the character for object end `}` - name_separator, ///< the name separator `:` - value_separator, ///< the value separator `,` - parse_error, ///< indicating a parse error - end_of_input, ///< indicating the end of the input buffer - literal_or_value ///< a literal or the begin of a value (only for diagnostics) - }; - - /// return name of values of type token_type (only used for errors) - JSON_HEDLEY_RETURNS_NON_NULL - JSON_HEDLEY_CONST - static const char* token_type_name(const token_type t) noexcept - { - switch (t) - { - case token_type::uninitialized: - return ""; - case token_type::literal_true: - return "true literal"; - case token_type::literal_false: - return "false literal"; - case token_type::literal_null: - return "null literal"; - case token_type::value_string: - return "string literal"; - case token_type::value_unsigned: - case token_type::value_integer: - case token_type::value_float: - return "number literal"; - case token_type::begin_array: - return "'['"; - case token_type::begin_object: - return "'{'"; - case token_type::end_array: - return "']'"; - case token_type::end_object: - return "'}'"; - case token_type::name_separator: - return "':'"; - case token_type::value_separator: - return "','"; - case token_type::parse_error: - return ""; - case token_type::end_of_input: - return "end of input"; - case token_type::literal_or_value: - return "'[', '{', or a literal"; - // LCOV_EXCL_START - default: // catch non-enum values - return "unknown token"; - // LCOV_EXCL_STOP - } - } -}; -/*! -@brief lexical analysis - -This class organizes the lexical analysis during JSON deserialization. -*/ -template -class lexer : public lexer_base -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - using string_t = typename BasicJsonType::string_t; - using char_type = typename InputAdapterType::char_type; - using char_int_type = typename std::char_traits::int_type; - - public: - using token_type = typename lexer_base::token_type; - - explicit lexer(InputAdapterType&& adapter, bool ignore_comments_ = false) noexcept - : ia(std::move(adapter)) - , ignore_comments(ignore_comments_) - , decimal_point_char(static_cast(get_decimal_point())) - {} - - // delete because of pointer members - lexer(const lexer&) = delete; - lexer(lexer&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) - lexer& operator=(lexer&) = delete; - lexer& operator=(lexer&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) - ~lexer() = default; - - private: - ///////////////////// - // locales - ///////////////////// - - /// return the locale-dependent decimal point - JSON_HEDLEY_PURE - static char get_decimal_point() noexcept - { - const auto* loc = localeconv(); - JSON_ASSERT(loc != nullptr); - return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); - } - - ///////////////////// - // scan functions - ///////////////////// - - /*! - @brief get codepoint from 4 hex characters following `\u` - - For input "\u c1 c2 c3 c4" the codepoint is: - (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 - = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) - - Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' - must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The - conversion is done by subtracting the offset (0x30, 0x37, and 0x57) - between the ASCII value of the character and the desired integer value. - - @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or - non-hex character) - */ - int get_codepoint() - { - // this function only makes sense after reading `\u` - JSON_ASSERT(current == 'u'); - int codepoint = 0; - - const auto factors = { 12u, 8u, 4u, 0u }; - for (const auto factor : factors) - { - get(); - - if (current >= '0' && current <= '9') - { - codepoint += static_cast((static_cast(current) - 0x30u) << factor); - } - else if (current >= 'A' && current <= 'F') - { - codepoint += static_cast((static_cast(current) - 0x37u) << factor); - } - else if (current >= 'a' && current <= 'f') - { - codepoint += static_cast((static_cast(current) - 0x57u) << factor); - } - else - { - return -1; - } - } - - JSON_ASSERT(0x0000 <= codepoint && codepoint <= 0xFFFF); - return codepoint; - } - - /*! - @brief check if the next byte(s) are inside a given range - - Adds the current byte and, for each passed range, reads a new byte and - checks if it is inside the range. If a violation was detected, set up an - error message and return false. Otherwise, return true. - - @param[in] ranges list of integers; interpreted as list of pairs of - inclusive lower and upper bound, respectively - - @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, - 1, 2, or 3 pairs. This precondition is enforced by an assertion. - - @return true if and only if no range violation was detected - */ - bool next_byte_in_range(std::initializer_list ranges) - { - JSON_ASSERT(ranges.size() == 2 || ranges.size() == 4 || ranges.size() == 6); - add(current); - - for (auto range = ranges.begin(); range != ranges.end(); ++range) - { - get(); - if (JSON_HEDLEY_LIKELY(*range <= current && current <= *(++range))) - { - add(current); - } - else - { - error_message = "invalid string: ill-formed UTF-8 byte"; - return false; - } - } - - return true; - } - - /*! - @brief scan a string literal - - This function scans a string according to Sect. 7 of RFC 8259. While - scanning, bytes are escaped and copied into buffer token_buffer. Then the - function returns successfully, token_buffer is *not* null-terminated (as it - may contain \0 bytes), and token_buffer.size() is the number of bytes in the - string. - - @return token_type::value_string if string could be successfully scanned, - token_type::parse_error otherwise - - @note In case of errors, variable error_message contains a textual - description. - */ - token_type scan_string() - { - // reset token_buffer (ignore opening quote) - reset(); - - // we entered the function by reading an open quote - JSON_ASSERT(current == '\"'); - - while (true) - { - // get next character - switch (get()) - { - // end of file while parsing string - case std::char_traits::eof(): - { - error_message = "invalid string: missing closing quote"; - return token_type::parse_error; - } - - // closing quote - case '\"': - { - return token_type::value_string; - } - - // escapes - case '\\': - { - switch (get()) - { - // quotation mark - case '\"': - add('\"'); - break; - // reverse solidus - case '\\': - add('\\'); - break; - // solidus - case '/': - add('/'); - break; - // backspace - case 'b': - add('\b'); - break; - // form feed - case 'f': - add('\f'); - break; - // line feed - case 'n': - add('\n'); - break; - // carriage return - case 'r': - add('\r'); - break; - // tab - case 't': - add('\t'); - break; - - // unicode escapes - case 'u': - { - const int codepoint1 = get_codepoint(); - int codepoint = codepoint1; // start with codepoint1 - - if (JSON_HEDLEY_UNLIKELY(codepoint1 == -1)) - { - error_message = "invalid string: '\\u' must be followed by 4 hex digits"; - return token_type::parse_error; - } - - // check if code point is a high surrogate - if (0xD800 <= codepoint1 && codepoint1 <= 0xDBFF) - { - // expect next \uxxxx entry - if (JSON_HEDLEY_LIKELY(get() == '\\' && get() == 'u')) - { - const int codepoint2 = get_codepoint(); - - if (JSON_HEDLEY_UNLIKELY(codepoint2 == -1)) - { - error_message = "invalid string: '\\u' must be followed by 4 hex digits"; - return token_type::parse_error; - } - - // check if codepoint2 is a low surrogate - if (JSON_HEDLEY_LIKELY(0xDC00 <= codepoint2 && codepoint2 <= 0xDFFF)) - { - // overwrite codepoint - codepoint = static_cast( - // high surrogate occupies the most significant 22 bits - (static_cast(codepoint1) << 10u) - // low surrogate occupies the least significant 15 bits - + static_cast(codepoint2) - // there is still the 0xD800, 0xDC00 and 0x10000 noise - // in the result, so we have to subtract with: - // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 - - 0x35FDC00u); - } - else - { - error_message = "invalid string: surrogate U+D800..U+DBFF must be followed by U+DC00..U+DFFF"; - return token_type::parse_error; - } - } - else - { - error_message = "invalid string: surrogate U+D800..U+DBFF must be followed by U+DC00..U+DFFF"; - return token_type::parse_error; - } - } - else - { - if (JSON_HEDLEY_UNLIKELY(0xDC00 <= codepoint1 && codepoint1 <= 0xDFFF)) - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; - return token_type::parse_error; - } - } - - // result of the above calculation yields a proper codepoint - JSON_ASSERT(0x00 <= codepoint && codepoint <= 0x10FFFF); - - // translate codepoint into bytes - if (codepoint < 0x80) - { - // 1-byte characters: 0xxxxxxx (ASCII) - add(static_cast(codepoint)); - } - else if (codepoint <= 0x7FF) - { - // 2-byte characters: 110xxxxx 10xxxxxx - add(static_cast(0xC0u | (static_cast(codepoint) >> 6u))); - add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); - } - else if (codepoint <= 0xFFFF) - { - // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx - add(static_cast(0xE0u | (static_cast(codepoint) >> 12u))); - add(static_cast(0x80u | ((static_cast(codepoint) >> 6u) & 0x3Fu))); - add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); - } - else - { - // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - add(static_cast(0xF0u | (static_cast(codepoint) >> 18u))); - add(static_cast(0x80u | ((static_cast(codepoint) >> 12u) & 0x3Fu))); - add(static_cast(0x80u | ((static_cast(codepoint) >> 6u) & 0x3Fu))); - add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); - } - - break; - } - - // other characters after escape - default: - error_message = "invalid string: forbidden character after backslash"; - return token_type::parse_error; - } - - break; - } - - // invalid control characters - case 0x00: - { - error_message = "invalid string: control character U+0000 (NUL) must be escaped to \\u0000"; - return token_type::parse_error; - } - - case 0x01: - { - error_message = "invalid string: control character U+0001 (SOH) must be escaped to \\u0001"; - return token_type::parse_error; - } - - case 0x02: - { - error_message = "invalid string: control character U+0002 (STX) must be escaped to \\u0002"; - return token_type::parse_error; - } - - case 0x03: - { - error_message = "invalid string: control character U+0003 (ETX) must be escaped to \\u0003"; - return token_type::parse_error; - } - - case 0x04: - { - error_message = "invalid string: control character U+0004 (EOT) must be escaped to \\u0004"; - return token_type::parse_error; - } - - case 0x05: - { - error_message = "invalid string: control character U+0005 (ENQ) must be escaped to \\u0005"; - return token_type::parse_error; - } - - case 0x06: - { - error_message = "invalid string: control character U+0006 (ACK) must be escaped to \\u0006"; - return token_type::parse_error; - } - - case 0x07: - { - error_message = "invalid string: control character U+0007 (BEL) must be escaped to \\u0007"; - return token_type::parse_error; - } - - case 0x08: - { - error_message = "invalid string: control character U+0008 (BS) must be escaped to \\u0008 or \\b"; - return token_type::parse_error; - } - - case 0x09: - { - error_message = "invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t"; - return token_type::parse_error; - } - - case 0x0A: - { - error_message = "invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n"; - return token_type::parse_error; - } - - case 0x0B: - { - error_message = "invalid string: control character U+000B (VT) must be escaped to \\u000B"; - return token_type::parse_error; - } - - case 0x0C: - { - error_message = "invalid string: control character U+000C (FF) must be escaped to \\u000C or \\f"; - return token_type::parse_error; - } - - case 0x0D: - { - error_message = "invalid string: control character U+000D (CR) must be escaped to \\u000D or \\r"; - return token_type::parse_error; - } - - case 0x0E: - { - error_message = "invalid string: control character U+000E (SO) must be escaped to \\u000E"; - return token_type::parse_error; - } - - case 0x0F: - { - error_message = "invalid string: control character U+000F (SI) must be escaped to \\u000F"; - return token_type::parse_error; - } - - case 0x10: - { - error_message = "invalid string: control character U+0010 (DLE) must be escaped to \\u0010"; - return token_type::parse_error; - } - - case 0x11: - { - error_message = "invalid string: control character U+0011 (DC1) must be escaped to \\u0011"; - return token_type::parse_error; - } - - case 0x12: - { - error_message = "invalid string: control character U+0012 (DC2) must be escaped to \\u0012"; - return token_type::parse_error; - } - - case 0x13: - { - error_message = "invalid string: control character U+0013 (DC3) must be escaped to \\u0013"; - return token_type::parse_error; - } - - case 0x14: - { - error_message = "invalid string: control character U+0014 (DC4) must be escaped to \\u0014"; - return token_type::parse_error; - } - - case 0x15: - { - error_message = "invalid string: control character U+0015 (NAK) must be escaped to \\u0015"; - return token_type::parse_error; - } - - case 0x16: - { - error_message = "invalid string: control character U+0016 (SYN) must be escaped to \\u0016"; - return token_type::parse_error; - } - - case 0x17: - { - error_message = "invalid string: control character U+0017 (ETB) must be escaped to \\u0017"; - return token_type::parse_error; - } - - case 0x18: - { - error_message = "invalid string: control character U+0018 (CAN) must be escaped to \\u0018"; - return token_type::parse_error; - } - - case 0x19: - { - error_message = "invalid string: control character U+0019 (EM) must be escaped to \\u0019"; - return token_type::parse_error; - } - - case 0x1A: - { - error_message = "invalid string: control character U+001A (SUB) must be escaped to \\u001A"; - return token_type::parse_error; - } - - case 0x1B: - { - error_message = "invalid string: control character U+001B (ESC) must be escaped to \\u001B"; - return token_type::parse_error; - } - - case 0x1C: - { - error_message = "invalid string: control character U+001C (FS) must be escaped to \\u001C"; - return token_type::parse_error; - } - - case 0x1D: - { - error_message = "invalid string: control character U+001D (GS) must be escaped to \\u001D"; - return token_type::parse_error; - } - - case 0x1E: - { - error_message = "invalid string: control character U+001E (RS) must be escaped to \\u001E"; - return token_type::parse_error; - } - - case 0x1F: - { - error_message = "invalid string: control character U+001F (US) must be escaped to \\u001F"; - return token_type::parse_error; - } - - // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) - case 0x20: - case 0x21: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: - case 0x5B: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: - case 0x7A: - case 0x7B: - case 0x7C: - case 0x7D: - case 0x7E: - case 0x7F: - { - add(current); - break; - } - - // U+0080..U+07FF: bytes C2..DF 80..BF - case 0xC2: - case 0xC3: - case 0xC4: - case 0xC5: - case 0xC6: - case 0xC7: - case 0xC8: - case 0xC9: - case 0xCA: - case 0xCB: - case 0xCC: - case 0xCD: - case 0xCE: - case 0xCF: - case 0xD0: - case 0xD1: - case 0xD2: - case 0xD3: - case 0xD4: - case 0xD5: - case 0xD6: - case 0xD7: - case 0xD8: - case 0xD9: - case 0xDA: - case 0xDB: - case 0xDC: - case 0xDD: - case 0xDE: - case 0xDF: - { - if (JSON_HEDLEY_UNLIKELY(!next_byte_in_range({0x80, 0xBF}))) - { - return token_type::parse_error; - } - break; - } - - // U+0800..U+0FFF: bytes E0 A0..BF 80..BF - case 0xE0: - { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF - // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF - case 0xE1: - case 0xE2: - case 0xE3: - case 0xE4: - case 0xE5: - case 0xE6: - case 0xE7: - case 0xE8: - case 0xE9: - case 0xEA: - case 0xEB: - case 0xEC: - case 0xEE: - case 0xEF: - { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+D000..U+D7FF: bytes ED 80..9F 80..BF - case 0xED: - { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF - case 0xF0: - { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF - case 0xF1: - case 0xF2: - case 0xF3: - { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF - case 0xF4: - { - if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // remaining bytes (80..C1 and F5..FF) are ill-formed - default: - { - error_message = "invalid string: ill-formed UTF-8 byte"; - return token_type::parse_error; - } - } - } - } - - /*! - * @brief scan a comment - * @return whether comment could be scanned successfully - */ - bool scan_comment() - { - switch (get()) - { - // single-line comments skip input until a newline or EOF is read - case '/': - { - while (true) - { - switch (get()) - { - case '\n': - case '\r': - case std::char_traits::eof(): - case '\0': - return true; - - default: - break; - } - } - } - - // multi-line comments skip input until */ is read - case '*': - { - while (true) - { - switch (get()) - { - case std::char_traits::eof(): - case '\0': - { - error_message = "invalid comment; missing closing '*/'"; - return false; - } - - case '*': - { - switch (get()) - { - case '/': - return true; - - default: - { - unget(); - continue; - } - } - } - - default: - continue; - } - } - } - - // unexpected character after reading '/' - default: - { - error_message = "invalid comment; expecting '/' or '*' after '/'"; - return false; - } - } - } - - JSON_HEDLEY_NON_NULL(2) - static void strtof(float& f, const char* str, char** endptr) noexcept - { - f = std::strtof(str, endptr); - } - - JSON_HEDLEY_NON_NULL(2) - static void strtof(double& f, const char* str, char** endptr) noexcept - { - f = std::strtod(str, endptr); - } - - JSON_HEDLEY_NON_NULL(2) - static void strtof(long double& f, const char* str, char** endptr) noexcept - { - f = std::strtold(str, endptr); - } - - /*! - @brief scan a number literal - - This function scans a string according to Sect. 6 of RFC 8259. - - The function is realized with a deterministic finite state machine derived - from the grammar described in RFC 8259. Starting in state "init", the - input is read and used to determined the next state. Only state "done" - accepts the number. State "error" is a trap state to model errors. In the - table below, "anything" means any character but the ones listed before. - - state | 0 | 1-9 | e E | + | - | . | anything - ---------|----------|----------|----------|---------|---------|----------|----------- - init | zero | any1 | [error] | [error] | minus | [error] | [error] - minus | zero | any1 | [error] | [error] | [error] | [error] | [error] - zero | done | done | exponent | done | done | decimal1 | done - any1 | any1 | any1 | exponent | done | done | decimal1 | done - decimal1 | decimal2 | decimal2 | [error] | [error] | [error] | [error] | [error] - decimal2 | decimal2 | decimal2 | exponent | done | done | done | done - exponent | any2 | any2 | [error] | sign | sign | [error] | [error] - sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] - any2 | any2 | any2 | done | done | done | done | done - - The state machine is realized with one label per state (prefixed with - "scan_number_") and `goto` statements between them. The state machine - contains cycles, but any cycle can be left when EOF is read. Therefore, - the function is guaranteed to terminate. - - During scanning, the read bytes are stored in token_buffer. This string is - then converted to a signed integer, an unsigned integer, or a - floating-point number. - - @return token_type::value_unsigned, token_type::value_integer, or - token_type::value_float if number could be successfully scanned, - token_type::parse_error otherwise - - @note The scanner is independent of the current locale. Internally, the - locale's decimal point is used instead of `.` to work with the - locale-dependent converters. - */ - token_type scan_number() // lgtm [cpp/use-of-goto] - { - // reset token_buffer to store the number's bytes - reset(); - - // the type of the parsed number; initially set to unsigned; will be - // changed if minus sign, decimal point or exponent is read - token_type number_type = token_type::value_unsigned; - - // state (init): we just found out we need to scan a number - switch (current) - { - case '-': - { - add(current); - goto scan_number_minus; - } - - case '0': - { - add(current); - goto scan_number_zero; - } - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - // all other characters are rejected outside scan_number() - default: // LCOV_EXCL_LINE - JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE - } - -scan_number_minus: - // state: we just parsed a leading minus sign - number_type = token_type::value_integer; - switch (get()) - { - case '0': - { - add(current); - goto scan_number_zero; - } - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - default: - { - error_message = "invalid number; expected digit after '-'"; - return token_type::parse_error; - } - } - -scan_number_zero: - // state: we just parse a zero (maybe with a leading minus sign) - switch (get()) - { - case '.': - { - add(decimal_point_char); - goto scan_number_decimal1; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_any1: - // state: we just parsed a number 0-9 (maybe with a leading minus sign) - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - case '.': - { - add(decimal_point_char); - goto scan_number_decimal1; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_decimal1: - // state: we just parsed a decimal point - number_type = token_type::value_float; - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_decimal2; - } - - default: - { - error_message = "invalid number; expected digit after '.'"; - return token_type::parse_error; - } - } - -scan_number_decimal2: - // we just parsed at least one number after a decimal point - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_decimal2; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_exponent: - // we just parsed an exponent - number_type = token_type::value_float; - switch (get()) - { - case '+': - case '-': - { - add(current); - goto scan_number_sign; - } - - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - { - error_message = - "invalid number; expected '+', '-', or digit after exponent"; - return token_type::parse_error; - } - } - -scan_number_sign: - // we just parsed an exponent sign - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - { - error_message = "invalid number; expected digit after exponent sign"; - return token_type::parse_error; - } - } - -scan_number_any2: - // we just parsed a number after the exponent or exponent sign - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - goto scan_number_done; - } - -scan_number_done: - // unget the character after the number (we only read it to know that - // we are done scanning a number) - unget(); - - char* endptr = nullptr; // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) - errno = 0; - - // try to parse integers first and fall back to floats - if (number_type == token_type::value_unsigned) - { - const auto x = std::strtoull(token_buffer.data(), &endptr, 10); - - // we checked the number format before - JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); - - if (errno == 0) - { - value_unsigned = static_cast(x); - if (value_unsigned == x) - { - return token_type::value_unsigned; - } - } - } - else if (number_type == token_type::value_integer) - { - const auto x = std::strtoll(token_buffer.data(), &endptr, 10); - - // we checked the number format before - JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); - - if (errno == 0) - { - value_integer = static_cast(x); - if (value_integer == x) - { - return token_type::value_integer; - } - } - } - - // this code is reached if we parse a floating-point number or if an - // integer conversion above failed - strtof(value_float, token_buffer.data(), &endptr); - - // we checked the number format before - JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); - - return token_type::value_float; - } - - /*! - @param[in] literal_text the literal text to expect - @param[in] length the length of the passed literal text - @param[in] return_type the token type to return on success - */ - JSON_HEDLEY_NON_NULL(2) - token_type scan_literal(const char_type* literal_text, const std::size_t length, - token_type return_type) - { - JSON_ASSERT(std::char_traits::to_char_type(current) == literal_text[0]); - for (std::size_t i = 1; i < length; ++i) - { - if (JSON_HEDLEY_UNLIKELY(std::char_traits::to_char_type(get()) != literal_text[i])) - { - error_message = "invalid literal"; - return token_type::parse_error; - } - } - return return_type; - } - - ///////////////////// - // input management - ///////////////////// - - /// reset token_buffer; current character is beginning of token - void reset() noexcept - { - token_buffer.clear(); - token_string.clear(); - token_string.push_back(std::char_traits::to_char_type(current)); - } - - /* - @brief get next character from the input - - This function provides the interface to the used input adapter. It does - not throw in case the input reached EOF, but returns a - `std::char_traits::eof()` in that case. Stores the scanned characters - for use in error messages. - - @return character read from the input - */ - char_int_type get() - { - ++position.chars_read_total; - ++position.chars_read_current_line; - - if (next_unget) - { - // just reset the next_unget variable and work with current - next_unget = false; - } - else - { - current = ia.get_character(); - } - - if (JSON_HEDLEY_LIKELY(current != std::char_traits::eof())) - { - token_string.push_back(std::char_traits::to_char_type(current)); - } - - if (current == '\n') - { - ++position.lines_read; - position.chars_read_current_line = 0; - } - - return current; - } - - /*! - @brief unget current character (read it again on next get) - - We implement unget by setting variable next_unget to true. The input is not - changed - we just simulate ungetting by modifying chars_read_total, - chars_read_current_line, and token_string. The next call to get() will - behave as if the unget character is read again. - */ - void unget() - { - next_unget = true; - - --position.chars_read_total; - - // in case we "unget" a newline, we have to also decrement the lines_read - if (position.chars_read_current_line == 0) - { - if (position.lines_read > 0) - { - --position.lines_read; - } - } - else - { - --position.chars_read_current_line; - } - - if (JSON_HEDLEY_LIKELY(current != std::char_traits::eof())) - { - JSON_ASSERT(!token_string.empty()); - token_string.pop_back(); - } - } - - /// add a character to token_buffer - void add(char_int_type c) - { - token_buffer.push_back(static_cast(c)); - } - - public: - ///////////////////// - // value getters - ///////////////////// - - /// return integer value - constexpr number_integer_t get_number_integer() const noexcept - { - return value_integer; - } - - /// return unsigned integer value - constexpr number_unsigned_t get_number_unsigned() const noexcept - { - return value_unsigned; - } - - /// return floating-point value - constexpr number_float_t get_number_float() const noexcept - { - return value_float; - } - - /// return current string value (implicitly resets the token; useful only once) - string_t& get_string() - { - return token_buffer; - } - - ///////////////////// - // diagnostics - ///////////////////// - - /// return position of last read token - constexpr position_t get_position() const noexcept - { - return position; - } - - /// return the last read token (for errors only). Will never contain EOF - /// (an arbitrary value that is not a valid char value, often -1), because - /// 255 may legitimately occur. May contain NUL, which should be escaped. - std::string get_token_string() const - { - // escape control characters - std::string result; - for (const auto c : token_string) - { - if (static_cast(c) <= '\x1F') - { - // escape control characters - std::array cs{{}}; - static_cast((std::snprintf)(cs.data(), cs.size(), "", static_cast(c))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) - result += cs.data(); - } - else - { - // add character as is - result.push_back(static_cast(c)); - } - } - - return result; - } - - /// return syntax error message - JSON_HEDLEY_RETURNS_NON_NULL - constexpr const char* get_error_message() const noexcept - { - return error_message; - } - - ///////////////////// - // actual scanner - ///////////////////// - - /*! - @brief skip the UTF-8 byte order mark - @return true iff there is no BOM or the correct BOM has been skipped - */ - bool skip_bom() - { - if (get() == 0xEF) - { - // check if we completely parse the BOM - return get() == 0xBB && get() == 0xBF; - } - - // the first character is not the beginning of the BOM; unget it to - // process is later - unget(); - return true; - } - - void skip_whitespace() - { - do - { - get(); - } - while (current == ' ' || current == '\t' || current == '\n' || current == '\r'); - } - - token_type scan() - { - // initially, skip the BOM - if (position.chars_read_total == 0 && !skip_bom()) - { - error_message = "invalid BOM; must be 0xEF 0xBB 0xBF if given"; - return token_type::parse_error; - } - - // read next character and ignore whitespace - skip_whitespace(); - - // ignore comments - while (ignore_comments && current == '/') - { - if (!scan_comment()) - { - return token_type::parse_error; - } - - // skip following whitespace - skip_whitespace(); - } - - switch (current) - { - // structural characters - case '[': - return token_type::begin_array; - case ']': - return token_type::end_array; - case '{': - return token_type::begin_object; - case '}': - return token_type::end_object; - case ':': - return token_type::name_separator; - case ',': - return token_type::value_separator; - - // literals - case 't': - { - std::array true_literal = {{static_cast('t'), static_cast('r'), static_cast('u'), static_cast('e')}}; - return scan_literal(true_literal.data(), true_literal.size(), token_type::literal_true); - } - case 'f': - { - std::array false_literal = {{static_cast('f'), static_cast('a'), static_cast('l'), static_cast('s'), static_cast('e')}}; - return scan_literal(false_literal.data(), false_literal.size(), token_type::literal_false); - } - case 'n': - { - std::array null_literal = {{static_cast('n'), static_cast('u'), static_cast('l'), static_cast('l')}}; - return scan_literal(null_literal.data(), null_literal.size(), token_type::literal_null); - } - - // string - case '\"': - return scan_string(); - - // number - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - return scan_number(); - - // end of input (the null byte is needed when parsing from - // string literals) - case '\0': - case std::char_traits::eof(): - return token_type::end_of_input; - - // error - default: - error_message = "invalid literal"; - return token_type::parse_error; - } - } - - private: - /// input adapter - InputAdapterType ia; - - /// whether comments should be ignored (true) or signaled as errors (false) - const bool ignore_comments = false; - - /// the current character - char_int_type current = std::char_traits::eof(); - - /// whether the next get() call should just return current - bool next_unget = false; - - /// the start position of the current token - position_t position {}; - - /// raw input token string (for error messages) - std::vector token_string {}; - - /// buffer for variable-length tokens (numbers, strings) - string_t token_buffer {}; - - /// a description of occurred lexer errors - const char* error_message = ""; - - // number values - number_integer_t value_integer = 0; - number_unsigned_t value_unsigned = 0; - number_float_t value_float = 0; - - /// the decimal point - const char_int_type decimal_point_char = '.'; -}; -} // namespace detail -} // namespace nlohmann - -// #include - -// #include - - -#include // size_t -#include // declval -#include // string - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -template -using null_function_t = decltype(std::declval().null()); - -template -using boolean_function_t = - decltype(std::declval().boolean(std::declval())); - -template -using number_integer_function_t = - decltype(std::declval().number_integer(std::declval())); - -template -using number_unsigned_function_t = - decltype(std::declval().number_unsigned(std::declval())); - -template -using number_float_function_t = decltype(std::declval().number_float( - std::declval(), std::declval())); - -template -using string_function_t = - decltype(std::declval().string(std::declval())); - -template -using binary_function_t = - decltype(std::declval().binary(std::declval())); - -template -using start_object_function_t = - decltype(std::declval().start_object(std::declval())); - -template -using key_function_t = - decltype(std::declval().key(std::declval())); - -template -using end_object_function_t = decltype(std::declval().end_object()); - -template -using start_array_function_t = - decltype(std::declval().start_array(std::declval())); - -template -using end_array_function_t = decltype(std::declval().end_array()); - -template -using parse_error_function_t = decltype(std::declval().parse_error( - std::declval(), std::declval(), - std::declval())); - -template -struct is_sax -{ - private: - static_assert(is_basic_json::value, - "BasicJsonType must be of type basic_json<...>"); - - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - using string_t = typename BasicJsonType::string_t; - using binary_t = typename BasicJsonType::binary_t; - using exception_t = typename BasicJsonType::exception; - - public: - static constexpr bool value = - is_detected_exact::value && - is_detected_exact::value && - is_detected_exact::value && - is_detected_exact::value && - is_detected_exact::value && - is_detected_exact::value && - is_detected_exact::value && - is_detected_exact::value && - is_detected_exact::value && - is_detected_exact::value && - is_detected_exact::value && - is_detected_exact::value && - is_detected_exact::value; -}; - -template -struct is_sax_static_asserts -{ - private: - static_assert(is_basic_json::value, - "BasicJsonType must be of type basic_json<...>"); - - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - using string_t = typename BasicJsonType::string_t; - using binary_t = typename BasicJsonType::binary_t; - using exception_t = typename BasicJsonType::exception; - - public: - static_assert(is_detected_exact::value, - "Missing/invalid function: bool null()"); - static_assert(is_detected_exact::value, - "Missing/invalid function: bool boolean(bool)"); - static_assert(is_detected_exact::value, - "Missing/invalid function: bool boolean(bool)"); - static_assert( - is_detected_exact::value, - "Missing/invalid function: bool number_integer(number_integer_t)"); - static_assert( - is_detected_exact::value, - "Missing/invalid function: bool number_unsigned(number_unsigned_t)"); - static_assert(is_detected_exact::value, - "Missing/invalid function: bool number_float(number_float_t, const string_t&)"); - static_assert( - is_detected_exact::value, - "Missing/invalid function: bool string(string_t&)"); - static_assert( - is_detected_exact::value, - "Missing/invalid function: bool binary(binary_t&)"); - static_assert(is_detected_exact::value, - "Missing/invalid function: bool start_object(std::size_t)"); - static_assert(is_detected_exact::value, - "Missing/invalid function: bool key(string_t&)"); - static_assert(is_detected_exact::value, - "Missing/invalid function: bool end_object()"); - static_assert(is_detected_exact::value, - "Missing/invalid function: bool start_array(std::size_t)"); - static_assert(is_detected_exact::value, - "Missing/invalid function: bool end_array()"); - static_assert( - is_detected_exact::value, - "Missing/invalid function: bool parse_error(std::size_t, const " - "std::string&, const exception&)"); -}; -} // namespace detail -} // namespace nlohmann - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ - -/// how to treat CBOR tags -enum class cbor_tag_handler_t -{ - error, ///< throw a parse_error exception in case of a tag - ignore, ///< ignore tags - store ///< store tags as binary type -}; - -/*! -@brief determine system byte order - -@return true if and only if system's byte order is little endian - -@note from https://stackoverflow.com/a/1001328/266378 -*/ -static inline bool little_endianness(int num = 1) noexcept -{ - return *reinterpret_cast(&num) == 1; -} - - -/////////////////// -// binary reader // -/////////////////// - -/*! -@brief deserialization of CBOR, MessagePack, and UBJSON values -*/ -template> -class binary_reader -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - using string_t = typename BasicJsonType::string_t; - using binary_t = typename BasicJsonType::binary_t; - using json_sax_t = SAX; - using char_type = typename InputAdapterType::char_type; - using char_int_type = typename std::char_traits::int_type; - - public: - /*! - @brief create a binary reader - - @param[in] adapter input adapter to read from - */ - explicit binary_reader(InputAdapterType&& adapter) noexcept : ia(std::move(adapter)) - { - (void)detail::is_sax_static_asserts {}; - } - - // make class move-only - binary_reader(const binary_reader&) = delete; - binary_reader(binary_reader&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) - binary_reader& operator=(const binary_reader&) = delete; - binary_reader& operator=(binary_reader&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) - ~binary_reader() = default; - - /*! - @param[in] format the binary format to parse - @param[in] sax_ a SAX event processor - @param[in] strict whether to expect the input to be consumed completed - @param[in] tag_handler how to treat CBOR tags - - @return whether parsing was successful - */ - JSON_HEDLEY_NON_NULL(3) - bool sax_parse(const input_format_t format, - json_sax_t* sax_, - const bool strict = true, - const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error) - { - sax = sax_; - bool result = false; - - switch (format) - { - case input_format_t::bson: - result = parse_bson_internal(); - break; - - case input_format_t::cbor: - result = parse_cbor_internal(true, tag_handler); - break; - - case input_format_t::msgpack: - result = parse_msgpack_internal(); - break; - - case input_format_t::ubjson: - result = parse_ubjson_internal(); - break; - - case input_format_t::json: // LCOV_EXCL_LINE - default: // LCOV_EXCL_LINE - JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE - } - - // strict mode: next byte must be EOF - if (result && strict) - { - if (format == input_format_t::ubjson) - { - get_ignore_noop(); - } - else - { - get(); - } - - if (JSON_HEDLEY_UNLIKELY(current != std::char_traits::eof())) - { - return sax->parse_error(chars_read, get_token_string(), - parse_error::create(110, chars_read, exception_message(format, "expected end of input; last byte: 0x" + get_token_string(), "value"), BasicJsonType())); - } - } - - return result; - } - - private: - ////////// - // BSON // - ////////// - - /*! - @brief Reads in a BSON-object and passes it to the SAX-parser. - @return whether a valid BSON-value was passed to the SAX parser - */ - bool parse_bson_internal() - { - std::int32_t document_size{}; - get_number(input_format_t::bson, document_size); - - if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) - { - return false; - } - - if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_list(/*is_array*/false))) - { - return false; - } - - return sax->end_object(); - } - - /*! - @brief Parses a C-style string from the BSON input. - @param[in,out] result A reference to the string variable where the read - string is to be stored. - @return `true` if the \x00-byte indicating the end of the string was - encountered before the EOF; false` indicates an unexpected EOF. - */ - bool get_bson_cstr(string_t& result) - { - auto out = std::back_inserter(result); - while (true) - { - get(); - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::bson, "cstring"))) - { - return false; - } - if (current == 0x00) - { - return true; - } - *out++ = static_cast(current); - } - } - - /*! - @brief Parses a zero-terminated string of length @a len from the BSON - input. - @param[in] len The length (including the zero-byte at the end) of the - string to be read. - @param[in,out] result A reference to the string variable where the read - string is to be stored. - @tparam NumberType The type of the length @a len - @pre len >= 1 - @return `true` if the string was successfully parsed - */ - template - bool get_bson_string(const NumberType len, string_t& result) - { - if (JSON_HEDLEY_UNLIKELY(len < 1)) - { - auto last_token = get_token_string(); - return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "string length must be at least 1, is " + std::to_string(len), "string"), BasicJsonType())); - } - - return get_string(input_format_t::bson, len - static_cast(1), result) && get() != std::char_traits::eof(); - } - - /*! - @brief Parses a byte array input of length @a len from the BSON input. - @param[in] len The length of the byte array to be read. - @param[in,out] result A reference to the binary variable where the read - array is to be stored. - @tparam NumberType The type of the length @a len - @pre len >= 0 - @return `true` if the byte array was successfully parsed - */ - template - bool get_bson_binary(const NumberType len, binary_t& result) - { - if (JSON_HEDLEY_UNLIKELY(len < 0)) - { - auto last_token = get_token_string(); - return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "byte array length cannot be negative, is " + std::to_string(len), "binary"), BasicJsonType())); - } - - // All BSON binary values have a subtype - std::uint8_t subtype{}; - get_number(input_format_t::bson, subtype); - result.set_subtype(subtype); - - return get_binary(input_format_t::bson, len, result); - } - - /*! - @brief Read a BSON document element of the given @a element_type. - @param[in] element_type The BSON element type, c.f. http://bsonspec.org/spec.html - @param[in] element_type_parse_position The position in the input stream, - where the `element_type` was read. - @warning Not all BSON element types are supported yet. An unsupported - @a element_type will give rise to a parse_error.114: - Unsupported BSON record type 0x... - @return whether a valid BSON-object/array was passed to the SAX parser - */ - bool parse_bson_element_internal(const char_int_type element_type, - const std::size_t element_type_parse_position) - { - switch (element_type) - { - case 0x01: // double - { - double number{}; - return get_number(input_format_t::bson, number) && sax->number_float(static_cast(number), ""); - } - - case 0x02: // string - { - std::int32_t len{}; - string_t value; - return get_number(input_format_t::bson, len) && get_bson_string(len, value) && sax->string(value); - } - - case 0x03: // object - { - return parse_bson_internal(); - } - - case 0x04: // array - { - return parse_bson_array(); - } - - case 0x05: // binary - { - std::int32_t len{}; - binary_t value; - return get_number(input_format_t::bson, len) && get_bson_binary(len, value) && sax->binary(value); - } - - case 0x08: // boolean - { - return sax->boolean(get() != 0); - } - - case 0x0A: // null - { - return sax->null(); - } - - case 0x10: // int32 - { - std::int32_t value{}; - return get_number(input_format_t::bson, value) && sax->number_integer(value); - } - - case 0x12: // int64 - { - std::int64_t value{}; - return get_number(input_format_t::bson, value) && sax->number_integer(value); - } - - default: // anything else not supported (yet) - { - std::array cr{{}}; - static_cast((std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast(element_type))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) - return sax->parse_error(element_type_parse_position, std::string(cr.data()), parse_error::create(114, element_type_parse_position, "Unsupported BSON record type 0x" + std::string(cr.data()), BasicJsonType())); - } - } - } - - /*! - @brief Read a BSON element list (as specified in the BSON-spec) - - The same binary layout is used for objects and arrays, hence it must be - indicated with the argument @a is_array which one is expected - (true --> array, false --> object). - - @param[in] is_array Determines if the element list being read is to be - treated as an object (@a is_array == false), or as an - array (@a is_array == true). - @return whether a valid BSON-object/array was passed to the SAX parser - */ - bool parse_bson_element_list(const bool is_array) - { - string_t key; - - while (auto element_type = get()) - { - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::bson, "element list"))) - { - return false; - } - - const std::size_t element_type_parse_position = chars_read; - if (JSON_HEDLEY_UNLIKELY(!get_bson_cstr(key))) - { - return false; - } - - if (!is_array && !sax->key(key)) - { - return false; - } - - if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_internal(element_type, element_type_parse_position))) - { - return false; - } - - // get_bson_cstr only appends - key.clear(); - } - - return true; - } - - /*! - @brief Reads an array from the BSON input and passes it to the SAX-parser. - @return whether a valid BSON-array was passed to the SAX parser - */ - bool parse_bson_array() - { - std::int32_t document_size{}; - get_number(input_format_t::bson, document_size); - - if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) - { - return false; - } - - if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_list(/*is_array*/true))) - { - return false; - } - - return sax->end_array(); - } - - ////////// - // CBOR // - ////////// - - /*! - @param[in] get_char whether a new character should be retrieved from the - input (true) or whether the last read character should - be considered instead (false) - @param[in] tag_handler how CBOR tags should be treated - - @return whether a valid CBOR value was passed to the SAX parser - */ - bool parse_cbor_internal(const bool get_char, - const cbor_tag_handler_t tag_handler) - { - switch (get_char ? get() : current) - { - // EOF - case std::char_traits::eof(): - return unexpect_eof(input_format_t::cbor, "value"); - - // Integer 0x00..0x17 (0..23) - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - return sax->number_unsigned(static_cast(current)); - - case 0x18: // Unsigned integer (one-byte uint8_t follows) - { - std::uint8_t number{}; - return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); - } - - case 0x19: // Unsigned integer (two-byte uint16_t follows) - { - std::uint16_t number{}; - return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); - } - - case 0x1A: // Unsigned integer (four-byte uint32_t follows) - { - std::uint32_t number{}; - return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); - } - - case 0x1B: // Unsigned integer (eight-byte uint64_t follows) - { - std::uint64_t number{}; - return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); - } - - // Negative integer -1-0x00..-1-0x17 (-1..-24) - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - return sax->number_integer(static_cast(0x20 - 1 - current)); - - case 0x38: // Negative integer (one-byte uint8_t follows) - { - std::uint8_t number{}; - return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); - } - - case 0x39: // Negative integer -1-n (two-byte uint16_t follows) - { - std::uint16_t number{}; - return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); - } - - case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) - { - std::uint32_t number{}; - return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); - } - - case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) - { - std::uint64_t number{}; - return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - - static_cast(number)); - } - - // Binary data (0x00..0x17 bytes follow) - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: // Binary data (one-byte uint8_t for n follows) - case 0x59: // Binary data (two-byte uint16_t for n follow) - case 0x5A: // Binary data (four-byte uint32_t for n follow) - case 0x5B: // Binary data (eight-byte uint64_t for n follow) - case 0x5F: // Binary data (indefinite length) - { - binary_t b; - return get_cbor_binary(b) && sax->binary(b); - } - - // UTF-8 string (0x00..0x17 bytes follow) - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: // UTF-8 string (one-byte uint8_t for n follows) - case 0x79: // UTF-8 string (two-byte uint16_t for n follow) - case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) - case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) - case 0x7F: // UTF-8 string (indefinite length) - { - string_t s; - return get_cbor_string(s) && sax->string(s); - } - - // array (0x00..0x17 data items follow) - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - case 0x90: - case 0x91: - case 0x92: - case 0x93: - case 0x94: - case 0x95: - case 0x96: - case 0x97: - return get_cbor_array(static_cast(static_cast(current) & 0x1Fu), tag_handler); - - case 0x98: // array (one-byte uint8_t for n follows) - { - std::uint8_t len{}; - return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast(len), tag_handler); - } - - case 0x99: // array (two-byte uint16_t for n follow) - { - std::uint16_t len{}; - return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast(len), tag_handler); - } - - case 0x9A: // array (four-byte uint32_t for n follow) - { - std::uint32_t len{}; - return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast(len), tag_handler); - } - - case 0x9B: // array (eight-byte uint64_t for n follow) - { - std::uint64_t len{}; - return get_number(input_format_t::cbor, len) && get_cbor_array(detail::conditional_static_cast(len), tag_handler); - } - - case 0x9F: // array (indefinite length) - return get_cbor_array(static_cast(-1), tag_handler); - - // map (0x00..0x17 pairs of data items follow) - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - return get_cbor_object(static_cast(static_cast(current) & 0x1Fu), tag_handler); - - case 0xB8: // map (one-byte uint8_t for n follows) - { - std::uint8_t len{}; - return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast(len), tag_handler); - } - - case 0xB9: // map (two-byte uint16_t for n follow) - { - std::uint16_t len{}; - return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast(len), tag_handler); - } - - case 0xBA: // map (four-byte uint32_t for n follow) - { - std::uint32_t len{}; - return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast(len), tag_handler); - } - - case 0xBB: // map (eight-byte uint64_t for n follow) - { - std::uint64_t len{}; - return get_number(input_format_t::cbor, len) && get_cbor_object(detail::conditional_static_cast(len), tag_handler); - } - - case 0xBF: // map (indefinite length) - return get_cbor_object(static_cast(-1), tag_handler); - - case 0xC6: // tagged item - case 0xC7: - case 0xC8: - case 0xC9: - case 0xCA: - case 0xCB: - case 0xCC: - case 0xCD: - case 0xCE: - case 0xCF: - case 0xD0: - case 0xD1: - case 0xD2: - case 0xD3: - case 0xD4: - case 0xD8: // tagged item (1 bytes follow) - case 0xD9: // tagged item (2 bytes follow) - case 0xDA: // tagged item (4 bytes follow) - case 0xDB: // tagged item (8 bytes follow) - { - switch (tag_handler) - { - case cbor_tag_handler_t::error: - { - auto last_token = get_token_string(); - return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, "invalid byte: 0x" + last_token, "value"), BasicJsonType())); - } - - case cbor_tag_handler_t::ignore: - { - // ignore binary subtype - switch (current) - { - case 0xD8: - { - std::uint8_t subtype_to_ignore{}; - get_number(input_format_t::cbor, subtype_to_ignore); - break; - } - case 0xD9: - { - std::uint16_t subtype_to_ignore{}; - get_number(input_format_t::cbor, subtype_to_ignore); - break; - } - case 0xDA: - { - std::uint32_t subtype_to_ignore{}; - get_number(input_format_t::cbor, subtype_to_ignore); - break; - } - case 0xDB: - { - std::uint64_t subtype_to_ignore{}; - get_number(input_format_t::cbor, subtype_to_ignore); - break; - } - default: - break; - } - return parse_cbor_internal(true, tag_handler); - } - - case cbor_tag_handler_t::store: - { - binary_t b; - // use binary subtype and store in binary container - switch (current) - { - case 0xD8: - { - std::uint8_t subtype{}; - get_number(input_format_t::cbor, subtype); - b.set_subtype(detail::conditional_static_cast(subtype)); - break; - } - case 0xD9: - { - std::uint16_t subtype{}; - get_number(input_format_t::cbor, subtype); - b.set_subtype(detail::conditional_static_cast(subtype)); - break; - } - case 0xDA: - { - std::uint32_t subtype{}; - get_number(input_format_t::cbor, subtype); - b.set_subtype(detail::conditional_static_cast(subtype)); - break; - } - case 0xDB: - { - std::uint64_t subtype{}; - get_number(input_format_t::cbor, subtype); - b.set_subtype(detail::conditional_static_cast(subtype)); - break; - } - default: - return parse_cbor_internal(true, tag_handler); - } - get(); - return get_cbor_binary(b) && sax->binary(b); - } - - default: // LCOV_EXCL_LINE - JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE - return false; // LCOV_EXCL_LINE - } - } - - case 0xF4: // false - return sax->boolean(false); - - case 0xF5: // true - return sax->boolean(true); - - case 0xF6: // null - return sax->null(); - - case 0xF9: // Half-Precision Float (two-byte IEEE 754) - { - const auto byte1_raw = get(); - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "number"))) - { - return false; - } - const auto byte2_raw = get(); - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "number"))) - { - return false; - } - - const auto byte1 = static_cast(byte1_raw); - const auto byte2 = static_cast(byte2_raw); - - // code from RFC 7049, Appendix D, Figure 3: - // As half-precision floating-point numbers were only added - // to IEEE 754 in 2008, today's programming platforms often - // still only have limited support for them. It is very - // easy to include at least decoding support for them even - // without such support. An example of a small decoder for - // half-precision floating-point numbers in the C language - // is shown in Fig. 3. - const auto half = static_cast((byte1 << 8u) + byte2); - const double val = [&half] - { - const int exp = (half >> 10u) & 0x1Fu; - const unsigned int mant = half & 0x3FFu; - JSON_ASSERT(0 <= exp&& exp <= 32); - JSON_ASSERT(mant <= 1024); - switch (exp) - { - case 0: - return std::ldexp(mant, -24); - case 31: - return (mant == 0) - ? std::numeric_limits::infinity() - : std::numeric_limits::quiet_NaN(); - default: - return std::ldexp(mant + 1024, exp - 25); - } - }(); - return sax->number_float((half & 0x8000u) != 0 - ? static_cast(-val) - : static_cast(val), ""); - } - - case 0xFA: // Single-Precision Float (four-byte IEEE 754) - { - float number{}; - return get_number(input_format_t::cbor, number) && sax->number_float(static_cast(number), ""); - } - - case 0xFB: // Double-Precision Float (eight-byte IEEE 754) - { - double number{}; - return get_number(input_format_t::cbor, number) && sax->number_float(static_cast(number), ""); - } - - default: // anything else (0xFF is handled inside the other types) - { - auto last_token = get_token_string(); - return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, "invalid byte: 0x" + last_token, "value"), BasicJsonType())); - } - } - } - - /*! - @brief reads a CBOR string - - This function first reads starting bytes to determine the expected - string length and then copies this number of bytes into a string. - Additionally, CBOR's strings with indefinite lengths are supported. - - @param[out] result created string - - @return whether string creation completed - */ - bool get_cbor_string(string_t& result) - { - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "string"))) - { - return false; - } - - switch (current) - { - // UTF-8 string (0x00..0x17 bytes follow) - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - { - return get_string(input_format_t::cbor, static_cast(current) & 0x1Fu, result); - } - - case 0x78: // UTF-8 string (one-byte uint8_t for n follows) - { - std::uint8_t len{}; - return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); - } - - case 0x79: // UTF-8 string (two-byte uint16_t for n follow) - { - std::uint16_t len{}; - return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); - } - - case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) - { - std::uint32_t len{}; - return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); - } - - case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) - { - std::uint64_t len{}; - return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); - } - - case 0x7F: // UTF-8 string (indefinite length) - { - while (get() != 0xFF) - { - string_t chunk; - if (!get_cbor_string(chunk)) - { - return false; - } - result.append(chunk); - } - return true; - } - - default: - { - auto last_token = get_token_string(); - return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, "expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0x" + last_token, "string"), BasicJsonType())); - } - } - } - - /*! - @brief reads a CBOR byte array - - This function first reads starting bytes to determine the expected - byte array length and then copies this number of bytes into the byte array. - Additionally, CBOR's byte arrays with indefinite lengths are supported. - - @param[out] result created byte array - - @return whether byte array creation completed - */ - bool get_cbor_binary(binary_t& result) - { - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "binary"))) - { - return false; - } - - switch (current) - { - // Binary data (0x00..0x17 bytes follow) - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - { - return get_binary(input_format_t::cbor, static_cast(current) & 0x1Fu, result); - } - - case 0x58: // Binary data (one-byte uint8_t for n follows) - { - std::uint8_t len{}; - return get_number(input_format_t::cbor, len) && - get_binary(input_format_t::cbor, len, result); - } - - case 0x59: // Binary data (two-byte uint16_t for n follow) - { - std::uint16_t len{}; - return get_number(input_format_t::cbor, len) && - get_binary(input_format_t::cbor, len, result); - } - - case 0x5A: // Binary data (four-byte uint32_t for n follow) - { - std::uint32_t len{}; - return get_number(input_format_t::cbor, len) && - get_binary(input_format_t::cbor, len, result); - } - - case 0x5B: // Binary data (eight-byte uint64_t for n follow) - { - std::uint64_t len{}; - return get_number(input_format_t::cbor, len) && - get_binary(input_format_t::cbor, len, result); - } - - case 0x5F: // Binary data (indefinite length) - { - while (get() != 0xFF) - { - binary_t chunk; - if (!get_cbor_binary(chunk)) - { - return false; - } - result.insert(result.end(), chunk.begin(), chunk.end()); - } - return true; - } - - default: - { - auto last_token = get_token_string(); - return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, "expected length specification (0x40-0x5B) or indefinite binary array type (0x5F); last byte: 0x" + last_token, "binary"), BasicJsonType())); - } - } - } - - /*! - @param[in] len the length of the array or static_cast(-1) for an - array of indefinite size - @param[in] tag_handler how CBOR tags should be treated - @return whether array creation completed - */ - bool get_cbor_array(const std::size_t len, - const cbor_tag_handler_t tag_handler) - { - if (JSON_HEDLEY_UNLIKELY(!sax->start_array(len))) - { - return false; - } - - if (len != static_cast(-1)) - { - for (std::size_t i = 0; i < len; ++i) - { - if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) - { - return false; - } - } - } - else - { - while (get() != 0xFF) - { - if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(false, tag_handler))) - { - return false; - } - } - } - - return sax->end_array(); - } - - /*! - @param[in] len the length of the object or static_cast(-1) for an - object of indefinite size - @param[in] tag_handler how CBOR tags should be treated - @return whether object creation completed - */ - bool get_cbor_object(const std::size_t len, - const cbor_tag_handler_t tag_handler) - { - if (JSON_HEDLEY_UNLIKELY(!sax->start_object(len))) - { - return false; - } - - if (len != 0) - { - string_t key; - if (len != static_cast(-1)) - { - for (std::size_t i = 0; i < len; ++i) - { - get(); - if (JSON_HEDLEY_UNLIKELY(!get_cbor_string(key) || !sax->key(key))) - { - return false; - } - - if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) - { - return false; - } - key.clear(); - } - } - else - { - while (get() != 0xFF) - { - if (JSON_HEDLEY_UNLIKELY(!get_cbor_string(key) || !sax->key(key))) - { - return false; - } - - if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) - { - return false; - } - key.clear(); - } - } - } - - return sax->end_object(); - } - - ///////////// - // MsgPack // - ///////////// - - /*! - @return whether a valid MessagePack value was passed to the SAX parser - */ - bool parse_msgpack_internal() - { - switch (get()) - { - // EOF - case std::char_traits::eof(): - return unexpect_eof(input_format_t::msgpack, "value"); - - // positive fixint - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: - case 0x5B: - case 0x5C: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: - case 0x7A: - case 0x7B: - case 0x7C: - case 0x7D: - case 0x7E: - case 0x7F: - return sax->number_unsigned(static_cast(current)); - - // fixmap - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - return get_msgpack_object(static_cast(static_cast(current) & 0x0Fu)); - - // fixarray - case 0x90: - case 0x91: - case 0x92: - case 0x93: - case 0x94: - case 0x95: - case 0x96: - case 0x97: - case 0x98: - case 0x99: - case 0x9A: - case 0x9B: - case 0x9C: - case 0x9D: - case 0x9E: - case 0x9F: - return get_msgpack_array(static_cast(static_cast(current) & 0x0Fu)); - - // fixstr - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: - case 0xBB: - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - case 0xD9: // str 8 - case 0xDA: // str 16 - case 0xDB: // str 32 - { - string_t s; - return get_msgpack_string(s) && sax->string(s); - } - - case 0xC0: // nil - return sax->null(); - - case 0xC2: // false - return sax->boolean(false); - - case 0xC3: // true - return sax->boolean(true); - - case 0xC4: // bin 8 - case 0xC5: // bin 16 - case 0xC6: // bin 32 - case 0xC7: // ext 8 - case 0xC8: // ext 16 - case 0xC9: // ext 32 - case 0xD4: // fixext 1 - case 0xD5: // fixext 2 - case 0xD6: // fixext 4 - case 0xD7: // fixext 8 - case 0xD8: // fixext 16 - { - binary_t b; - return get_msgpack_binary(b) && sax->binary(b); - } - - case 0xCA: // float 32 - { - float number{}; - return get_number(input_format_t::msgpack, number) && sax->number_float(static_cast(number), ""); - } - - case 0xCB: // float 64 - { - double number{}; - return get_number(input_format_t::msgpack, number) && sax->number_float(static_cast(number), ""); - } - - case 0xCC: // uint 8 - { - std::uint8_t number{}; - return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); - } - - case 0xCD: // uint 16 - { - std::uint16_t number{}; - return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); - } - - case 0xCE: // uint 32 - { - std::uint32_t number{}; - return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); - } - - case 0xCF: // uint 64 - { - std::uint64_t number{}; - return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); - } - - case 0xD0: // int 8 - { - std::int8_t number{}; - return get_number(input_format_t::msgpack, number) && sax->number_integer(number); - } - - case 0xD1: // int 16 - { - std::int16_t number{}; - return get_number(input_format_t::msgpack, number) && sax->number_integer(number); - } - - case 0xD2: // int 32 - { - std::int32_t number{}; - return get_number(input_format_t::msgpack, number) && sax->number_integer(number); - } - - case 0xD3: // int 64 - { - std::int64_t number{}; - return get_number(input_format_t::msgpack, number) && sax->number_integer(number); - } - - case 0xDC: // array 16 - { - std::uint16_t len{}; - return get_number(input_format_t::msgpack, len) && get_msgpack_array(static_cast(len)); - } - - case 0xDD: // array 32 - { - std::uint32_t len{}; - return get_number(input_format_t::msgpack, len) && get_msgpack_array(static_cast(len)); - } - - case 0xDE: // map 16 - { - std::uint16_t len{}; - return get_number(input_format_t::msgpack, len) && get_msgpack_object(static_cast(len)); - } - - case 0xDF: // map 32 - { - std::uint32_t len{}; - return get_number(input_format_t::msgpack, len) && get_msgpack_object(static_cast(len)); - } - - // negative fixint - case 0xE0: - case 0xE1: - case 0xE2: - case 0xE3: - case 0xE4: - case 0xE5: - case 0xE6: - case 0xE7: - case 0xE8: - case 0xE9: - case 0xEA: - case 0xEB: - case 0xEC: - case 0xED: - case 0xEE: - case 0xEF: - case 0xF0: - case 0xF1: - case 0xF2: - case 0xF3: - case 0xF4: - case 0xF5: - case 0xF6: - case 0xF7: - case 0xF8: - case 0xF9: - case 0xFA: - case 0xFB: - case 0xFC: - case 0xFD: - case 0xFE: - case 0xFF: - return sax->number_integer(static_cast(current)); - - default: // anything else - { - auto last_token = get_token_string(); - return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::msgpack, "invalid byte: 0x" + last_token, "value"), BasicJsonType())); - } - } - } - - /*! - @brief reads a MessagePack string - - This function first reads starting bytes to determine the expected - string length and then copies this number of bytes into a string. - - @param[out] result created string - - @return whether string creation completed - */ - bool get_msgpack_string(string_t& result) - { - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::msgpack, "string"))) - { - return false; - } - - switch (current) - { - // fixstr - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: - case 0xBB: - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - { - return get_string(input_format_t::msgpack, static_cast(current) & 0x1Fu, result); - } - - case 0xD9: // str 8 - { - std::uint8_t len{}; - return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); - } - - case 0xDA: // str 16 - { - std::uint16_t len{}; - return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); - } - - case 0xDB: // str 32 - { - std::uint32_t len{}; - return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); - } - - default: - { - auto last_token = get_token_string(); - return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::msgpack, "expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0x" + last_token, "string"), BasicJsonType())); - } - } - } - - /*! - @brief reads a MessagePack byte array - - This function first reads starting bytes to determine the expected - byte array length and then copies this number of bytes into a byte array. - - @param[out] result created byte array - - @return whether byte array creation completed - */ - bool get_msgpack_binary(binary_t& result) - { - // helper function to set the subtype - auto assign_and_return_true = [&result](std::int8_t subtype) - { - result.set_subtype(static_cast(subtype)); - return true; - }; - - switch (current) - { - case 0xC4: // bin 8 - { - std::uint8_t len{}; - return get_number(input_format_t::msgpack, len) && - get_binary(input_format_t::msgpack, len, result); - } - - case 0xC5: // bin 16 - { - std::uint16_t len{}; - return get_number(input_format_t::msgpack, len) && - get_binary(input_format_t::msgpack, len, result); - } - - case 0xC6: // bin 32 - { - std::uint32_t len{}; - return get_number(input_format_t::msgpack, len) && - get_binary(input_format_t::msgpack, len, result); - } - - case 0xC7: // ext 8 - { - std::uint8_t len{}; - std::int8_t subtype{}; - return get_number(input_format_t::msgpack, len) && - get_number(input_format_t::msgpack, subtype) && - get_binary(input_format_t::msgpack, len, result) && - assign_and_return_true(subtype); - } - - case 0xC8: // ext 16 - { - std::uint16_t len{}; - std::int8_t subtype{}; - return get_number(input_format_t::msgpack, len) && - get_number(input_format_t::msgpack, subtype) && - get_binary(input_format_t::msgpack, len, result) && - assign_and_return_true(subtype); - } - - case 0xC9: // ext 32 - { - std::uint32_t len{}; - std::int8_t subtype{}; - return get_number(input_format_t::msgpack, len) && - get_number(input_format_t::msgpack, subtype) && - get_binary(input_format_t::msgpack, len, result) && - assign_and_return_true(subtype); - } - - case 0xD4: // fixext 1 - { - std::int8_t subtype{}; - return get_number(input_format_t::msgpack, subtype) && - get_binary(input_format_t::msgpack, 1, result) && - assign_and_return_true(subtype); - } - - case 0xD5: // fixext 2 - { - std::int8_t subtype{}; - return get_number(input_format_t::msgpack, subtype) && - get_binary(input_format_t::msgpack, 2, result) && - assign_and_return_true(subtype); - } - - case 0xD6: // fixext 4 - { - std::int8_t subtype{}; - return get_number(input_format_t::msgpack, subtype) && - get_binary(input_format_t::msgpack, 4, result) && - assign_and_return_true(subtype); - } - - case 0xD7: // fixext 8 - { - std::int8_t subtype{}; - return get_number(input_format_t::msgpack, subtype) && - get_binary(input_format_t::msgpack, 8, result) && - assign_and_return_true(subtype); - } - - case 0xD8: // fixext 16 - { - std::int8_t subtype{}; - return get_number(input_format_t::msgpack, subtype) && - get_binary(input_format_t::msgpack, 16, result) && - assign_and_return_true(subtype); - } - - default: // LCOV_EXCL_LINE - return false; // LCOV_EXCL_LINE - } - } - - /*! - @param[in] len the length of the array - @return whether array creation completed - */ - bool get_msgpack_array(const std::size_t len) - { - if (JSON_HEDLEY_UNLIKELY(!sax->start_array(len))) - { - return false; - } - - for (std::size_t i = 0; i < len; ++i) - { - if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_internal())) - { - return false; - } - } - - return sax->end_array(); - } - - /*! - @param[in] len the length of the object - @return whether object creation completed - */ - bool get_msgpack_object(const std::size_t len) - { - if (JSON_HEDLEY_UNLIKELY(!sax->start_object(len))) - { - return false; - } - - string_t key; - for (std::size_t i = 0; i < len; ++i) - { - get(); - if (JSON_HEDLEY_UNLIKELY(!get_msgpack_string(key) || !sax->key(key))) - { - return false; - } - - if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_internal())) - { - return false; - } - key.clear(); - } - - return sax->end_object(); - } - - //////////// - // UBJSON // - //////////// - - /*! - @param[in] get_char whether a new character should be retrieved from the - input (true, default) or whether the last read - character should be considered instead - - @return whether a valid UBJSON value was passed to the SAX parser - */ - bool parse_ubjson_internal(const bool get_char = true) - { - return get_ubjson_value(get_char ? get_ignore_noop() : current); - } - - /*! - @brief reads a UBJSON string - - This function is either called after reading the 'S' byte explicitly - indicating a string, or in case of an object key where the 'S' byte can be - left out. - - @param[out] result created string - @param[in] get_char whether a new character should be retrieved from the - input (true, default) or whether the last read - character should be considered instead - - @return whether string creation completed - */ - bool get_ubjson_string(string_t& result, const bool get_char = true) - { - if (get_char) - { - get(); // TODO(niels): may we ignore N here? - } - - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "value"))) - { - return false; - } - - switch (current) - { - case 'U': - { - std::uint8_t len{}; - return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); - } - - case 'i': - { - std::int8_t len{}; - return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); - } - - case 'I': - { - std::int16_t len{}; - return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); - } - - case 'l': - { - std::int32_t len{}; - return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); - } - - case 'L': - { - std::int64_t len{}; - return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); - } - - default: - auto last_token = get_token_string(); - return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L); last byte: 0x" + last_token, "string"), BasicJsonType())); - } - } - - /*! - @param[out] result determined size - @return whether size determination completed - */ - bool get_ubjson_size_value(std::size_t& result) - { - switch (get_ignore_noop()) - { - case 'U': - { - std::uint8_t number{}; - if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) - { - return false; - } - result = static_cast(number); - return true; - } - - case 'i': - { - std::int8_t number{}; - if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) - { - return false; - } - result = static_cast(number); // NOLINT(bugprone-signed-char-misuse,cert-str34-c): number is not a char - return true; - } - - case 'I': - { - std::int16_t number{}; - if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) - { - return false; - } - result = static_cast(number); - return true; - } - - case 'l': - { - std::int32_t number{}; - if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) - { - return false; - } - result = static_cast(number); - return true; - } - - case 'L': - { - std::int64_t number{}; - if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) - { - return false; - } - result = static_cast(number); - return true; - } - - default: - { - auto last_token = get_token_string(); - return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L) after '#'; last byte: 0x" + last_token, "size"), BasicJsonType())); - } - } - } - - /*! - @brief determine the type and size for a container - - In the optimized UBJSON format, a type and a size can be provided to allow - for a more compact representation. - - @param[out] result pair of the size and the type - - @return whether pair creation completed - */ - bool get_ubjson_size_type(std::pair& result) - { - result.first = string_t::npos; // size - result.second = 0; // type - - get_ignore_noop(); - - if (current == '$') - { - result.second = get(); // must not ignore 'N', because 'N' maybe the type - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "type"))) - { - return false; - } - - get_ignore_noop(); - if (JSON_HEDLEY_UNLIKELY(current != '#')) - { - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "value"))) - { - return false; - } - auto last_token = get_token_string(); - return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "expected '#' after type information; last byte: 0x" + last_token, "size"), BasicJsonType())); - } - - return get_ubjson_size_value(result.first); - } - - if (current == '#') - { - return get_ubjson_size_value(result.first); - } - - return true; - } - - /*! - @param prefix the previously read or set type prefix - @return whether value creation completed - */ - bool get_ubjson_value(const char_int_type prefix) - { - switch (prefix) - { - case std::char_traits::eof(): // EOF - return unexpect_eof(input_format_t::ubjson, "value"); - - case 'T': // true - return sax->boolean(true); - case 'F': // false - return sax->boolean(false); - - case 'Z': // null - return sax->null(); - - case 'U': - { - std::uint8_t number{}; - return get_number(input_format_t::ubjson, number) && sax->number_unsigned(number); - } - - case 'i': - { - std::int8_t number{}; - return get_number(input_format_t::ubjson, number) && sax->number_integer(number); - } - - case 'I': - { - std::int16_t number{}; - return get_number(input_format_t::ubjson, number) && sax->number_integer(number); - } - - case 'l': - { - std::int32_t number{}; - return get_number(input_format_t::ubjson, number) && sax->number_integer(number); - } - - case 'L': - { - std::int64_t number{}; - return get_number(input_format_t::ubjson, number) && sax->number_integer(number); - } - - case 'd': - { - float number{}; - return get_number(input_format_t::ubjson, number) && sax->number_float(static_cast(number), ""); - } - - case 'D': - { - double number{}; - return get_number(input_format_t::ubjson, number) && sax->number_float(static_cast(number), ""); - } - - case 'H': - { - return get_ubjson_high_precision_number(); - } - - case 'C': // char - { - get(); - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "char"))) - { - return false; - } - if (JSON_HEDLEY_UNLIKELY(current > 127)) - { - auto last_token = get_token_string(); - return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + last_token, "char"), BasicJsonType())); - } - string_t s(1, static_cast(current)); - return sax->string(s); - } - - case 'S': // string - { - string_t s; - return get_ubjson_string(s) && sax->string(s); - } - - case '[': // array - return get_ubjson_array(); - - case '{': // object - return get_ubjson_object(); - - default: // anything else - { - auto last_token = get_token_string(); - return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "invalid byte: 0x" + last_token, "value"), BasicJsonType())); - } - } - } - - /*! - @return whether array creation completed - */ - bool get_ubjson_array() - { - std::pair size_and_type; - if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_type(size_and_type))) - { - return false; - } - - if (size_and_type.first != string_t::npos) - { - if (JSON_HEDLEY_UNLIKELY(!sax->start_array(size_and_type.first))) - { - return false; - } - - if (size_and_type.second != 0) - { - if (size_and_type.second != 'N') - { - for (std::size_t i = 0; i < size_and_type.first; ++i) - { - if (JSON_HEDLEY_UNLIKELY(!get_ubjson_value(size_and_type.second))) - { - return false; - } - } - } - } - else - { - for (std::size_t i = 0; i < size_and_type.first; ++i) - { - if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) - { - return false; - } - } - } - } - else - { - if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) - { - return false; - } - - while (current != ']') - { - if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal(false))) - { - return false; - } - get_ignore_noop(); - } - } - - return sax->end_array(); - } - - /*! - @return whether object creation completed - */ - bool get_ubjson_object() - { - std::pair size_and_type; - if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_type(size_and_type))) - { - return false; - } - - string_t key; - if (size_and_type.first != string_t::npos) - { - if (JSON_HEDLEY_UNLIKELY(!sax->start_object(size_and_type.first))) - { - return false; - } - - if (size_and_type.second != 0) - { - for (std::size_t i = 0; i < size_and_type.first; ++i) - { - if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key) || !sax->key(key))) - { - return false; - } - if (JSON_HEDLEY_UNLIKELY(!get_ubjson_value(size_and_type.second))) - { - return false; - } - key.clear(); - } - } - else - { - for (std::size_t i = 0; i < size_and_type.first; ++i) - { - if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key) || !sax->key(key))) - { - return false; - } - if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) - { - return false; - } - key.clear(); - } - } - } - else - { - if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) - { - return false; - } - - while (current != '}') - { - if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key, false) || !sax->key(key))) - { - return false; - } - if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) - { - return false; - } - get_ignore_noop(); - key.clear(); - } - } - - return sax->end_object(); - } - - // Note, no reader for UBJSON binary types is implemented because they do - // not exist - - bool get_ubjson_high_precision_number() - { - // get size of following number string - std::size_t size{}; - auto res = get_ubjson_size_value(size); - if (JSON_HEDLEY_UNLIKELY(!res)) - { - return res; - } - - // get number string - std::vector number_vector; - for (std::size_t i = 0; i < size; ++i) - { - get(); - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "number"))) - { - return false; - } - number_vector.push_back(static_cast(current)); - } - - // parse number string - using ia_type = decltype(detail::input_adapter(number_vector)); - auto number_lexer = detail::lexer(detail::input_adapter(number_vector), false); - const auto result_number = number_lexer.scan(); - const auto number_string = number_lexer.get_token_string(); - const auto result_remainder = number_lexer.scan(); - - using token_type = typename detail::lexer_base::token_type; - - if (JSON_HEDLEY_UNLIKELY(result_remainder != token_type::end_of_input)) - { - return sax->parse_error(chars_read, number_string, parse_error::create(115, chars_read, exception_message(input_format_t::ubjson, "invalid number text: " + number_lexer.get_token_string(), "high-precision number"), BasicJsonType())); - } - - switch (result_number) - { - case token_type::value_integer: - return sax->number_integer(number_lexer.get_number_integer()); - case token_type::value_unsigned: - return sax->number_unsigned(number_lexer.get_number_unsigned()); - case token_type::value_float: - return sax->number_float(number_lexer.get_number_float(), std::move(number_string)); - case token_type::uninitialized: - case token_type::literal_true: - case token_type::literal_false: - case token_type::literal_null: - case token_type::value_string: - case token_type::begin_array: - case token_type::begin_object: - case token_type::end_array: - case token_type::end_object: - case token_type::name_separator: - case token_type::value_separator: - case token_type::parse_error: - case token_type::end_of_input: - case token_type::literal_or_value: - default: - return sax->parse_error(chars_read, number_string, parse_error::create(115, chars_read, exception_message(input_format_t::ubjson, "invalid number text: " + number_lexer.get_token_string(), "high-precision number"), BasicJsonType())); - } - } - - /////////////////////// - // Utility functions // - /////////////////////// - - /*! - @brief get next character from the input - - This function provides the interface to the used input adapter. It does - not throw in case the input reached EOF, but returns a -'ve valued - `std::char_traits::eof()` in that case. - - @return character read from the input - */ - char_int_type get() - { - ++chars_read; - return current = ia.get_character(); - } - - /*! - @return character read from the input after ignoring all 'N' entries - */ - char_int_type get_ignore_noop() - { - do - { - get(); - } - while (current == 'N'); - - return current; - } - - /* - @brief read a number from the input - - @tparam NumberType the type of the number - @param[in] format the current format (for diagnostics) - @param[out] result number of type @a NumberType - - @return whether conversion completed - - @note This function needs to respect the system's endianness, because - bytes in CBOR, MessagePack, and UBJSON are stored in network order - (big endian) and therefore need reordering on little endian systems. - */ - template - bool get_number(const input_format_t format, NumberType& result) - { - // step 1: read input into array with system's byte order - std::array vec{}; - for (std::size_t i = 0; i < sizeof(NumberType); ++i) - { - get(); - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "number"))) - { - return false; - } - - // reverse byte order prior to conversion if necessary - if (is_little_endian != InputIsLittleEndian) - { - vec[sizeof(NumberType) - i - 1] = static_cast(current); - } - else - { - vec[i] = static_cast(current); // LCOV_EXCL_LINE - } - } - - // step 2: convert array into number of type T and return - std::memcpy(&result, vec.data(), sizeof(NumberType)); - return true; - } - - /*! - @brief create a string by reading characters from the input - - @tparam NumberType the type of the number - @param[in] format the current format (for diagnostics) - @param[in] len number of characters to read - @param[out] result string created by reading @a len bytes - - @return whether string creation completed - - @note We can not reserve @a len bytes for the result, because @a len - may be too large. Usually, @ref unexpect_eof() detects the end of - the input before we run out of string memory. - */ - template - bool get_string(const input_format_t format, - const NumberType len, - string_t& result) - { - bool success = true; - for (NumberType i = 0; i < len; i++) - { - get(); - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "string"))) - { - success = false; - break; - } - result.push_back(static_cast(current)); - } - return success; - } - - /*! - @brief create a byte array by reading bytes from the input - - @tparam NumberType the type of the number - @param[in] format the current format (for diagnostics) - @param[in] len number of bytes to read - @param[out] result byte array created by reading @a len bytes - - @return whether byte array creation completed - - @note We can not reserve @a len bytes for the result, because @a len - may be too large. Usually, @ref unexpect_eof() detects the end of - the input before we run out of memory. - */ - template - bool get_binary(const input_format_t format, - const NumberType len, - binary_t& result) - { - bool success = true; - for (NumberType i = 0; i < len; i++) - { - get(); - if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "binary"))) - { - success = false; - break; - } - result.push_back(static_cast(current)); - } - return success; - } - - /*! - @param[in] format the current format (for diagnostics) - @param[in] context further context information (for diagnostics) - @return whether the last read character is not EOF - */ - JSON_HEDLEY_NON_NULL(3) - bool unexpect_eof(const input_format_t format, const char* context) const - { - if (JSON_HEDLEY_UNLIKELY(current == std::char_traits::eof())) - { - return sax->parse_error(chars_read, "", - parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context), BasicJsonType())); - } - return true; - } - - /*! - @return a string representation of the last read byte - */ - std::string get_token_string() const - { - std::array cr{{}}; - static_cast((std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast(current))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) - return std::string{cr.data()}; - } - - /*! - @param[in] format the current format - @param[in] detail a detailed error message - @param[in] context further context information - @return a message string to use in the parse_error exceptions - */ - std::string exception_message(const input_format_t format, - const std::string& detail, - const std::string& context) const - { - std::string error_msg = "syntax error while parsing "; - - switch (format) - { - case input_format_t::cbor: - error_msg += "CBOR"; - break; - - case input_format_t::msgpack: - error_msg += "MessagePack"; - break; - - case input_format_t::ubjson: - error_msg += "UBJSON"; - break; - - case input_format_t::bson: - error_msg += "BSON"; - break; - - case input_format_t::json: // LCOV_EXCL_LINE - default: // LCOV_EXCL_LINE - JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE - } - - return error_msg + " " + context + ": " + detail; - } - - private: - /// input adapter - InputAdapterType ia; - - /// the current character - char_int_type current = std::char_traits::eof(); - - /// the number of characters read - std::size_t chars_read = 0; - - /// whether we can assume little endianness - const bool is_little_endian = little_endianness(); - - /// the SAX parser - json_sax_t* sax = nullptr; -}; -} // namespace detail -} // namespace nlohmann - -// #include - -// #include - -// #include - - -#include // isfinite -#include // uint8_t -#include // function -#include // string -#include // move -#include // vector - -// #include - -// #include - -// #include - -// #include - -// #include - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -//////////// -// parser // -//////////// - -enum class parse_event_t : std::uint8_t -{ - /// the parser read `{` and started to process a JSON object - object_start, - /// the parser read `}` and finished processing a JSON object - object_end, - /// the parser read `[` and started to process a JSON array - array_start, - /// the parser read `]` and finished processing a JSON array - array_end, - /// the parser read a key of a value in an object - key, - /// the parser finished reading a JSON value - value -}; - -template -using parser_callback_t = - std::function; - -/*! -@brief syntax analysis - -This class implements a recursive descent parser. -*/ -template -class parser -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - using string_t = typename BasicJsonType::string_t; - using lexer_t = lexer; - using token_type = typename lexer_t::token_type; - - public: - /// a parser reading from an input adapter - explicit parser(InputAdapterType&& adapter, - const parser_callback_t cb = nullptr, - const bool allow_exceptions_ = true, - const bool skip_comments = false) - : callback(cb) - , m_lexer(std::move(adapter), skip_comments) - , allow_exceptions(allow_exceptions_) - { - // read first token - get_token(); - } - - /*! - @brief public parser interface - - @param[in] strict whether to expect the last token to be EOF - @param[in,out] result parsed JSON value - - @throw parse_error.101 in case of an unexpected token - @throw parse_error.102 if to_unicode fails or surrogate error - @throw parse_error.103 if to_unicode fails - */ - void parse(const bool strict, BasicJsonType& result) - { - if (callback) - { - json_sax_dom_callback_parser sdp(result, callback, allow_exceptions); - sax_parse_internal(&sdp); - - // in strict mode, input must be completely read - if (strict && (get_token() != token_type::end_of_input)) - { - sdp.parse_error(m_lexer.get_position(), - m_lexer.get_token_string(), - parse_error::create(101, m_lexer.get_position(), - exception_message(token_type::end_of_input, "value"), BasicJsonType())); - } - - // in case of an error, return discarded value - if (sdp.is_errored()) - { - result = value_t::discarded; - return; - } - - // set top-level value to null if it was discarded by the callback - // function - if (result.is_discarded()) - { - result = nullptr; - } - } - else - { - json_sax_dom_parser sdp(result, allow_exceptions); - sax_parse_internal(&sdp); - - // in strict mode, input must be completely read - if (strict && (get_token() != token_type::end_of_input)) - { - sdp.parse_error(m_lexer.get_position(), - m_lexer.get_token_string(), - parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_of_input, "value"), BasicJsonType())); - } - - // in case of an error, return discarded value - if (sdp.is_errored()) - { - result = value_t::discarded; - return; - } - } - - result.assert_invariant(); - } - - /*! - @brief public accept interface - - @param[in] strict whether to expect the last token to be EOF - @return whether the input is a proper JSON text - */ - bool accept(const bool strict = true) - { - json_sax_acceptor sax_acceptor; - return sax_parse(&sax_acceptor, strict); - } - - template - JSON_HEDLEY_NON_NULL(2) - bool sax_parse(SAX* sax, const bool strict = true) - { - (void)detail::is_sax_static_asserts {}; - const bool result = sax_parse_internal(sax); - - // strict mode: next byte must be EOF - if (result && strict && (get_token() != token_type::end_of_input)) - { - return sax->parse_error(m_lexer.get_position(), - m_lexer.get_token_string(), - parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_of_input, "value"), BasicJsonType())); - } - - return result; - } - - private: - template - JSON_HEDLEY_NON_NULL(2) - bool sax_parse_internal(SAX* sax) - { - // stack to remember the hierarchy of structured values we are parsing - // true = array; false = object - std::vector states; - // value to avoid a goto (see comment where set to true) - bool skip_to_state_evaluation = false; - - while (true) - { - if (!skip_to_state_evaluation) - { - // invariant: get_token() was called before each iteration - switch (last_token) - { - case token_type::begin_object: - { - if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) - { - return false; - } - - // closing } -> we are done - if (get_token() == token_type::end_object) - { - if (JSON_HEDLEY_UNLIKELY(!sax->end_object())) - { - return false; - } - break; - } - - // parse key - if (JSON_HEDLEY_UNLIKELY(last_token != token_type::value_string)) - { - return sax->parse_error(m_lexer.get_position(), - m_lexer.get_token_string(), - parse_error::create(101, m_lexer.get_position(), exception_message(token_type::value_string, "object key"), BasicJsonType())); - } - if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string()))) - { - return false; - } - - // parse separator (:) - if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::name_separator)) - { - return sax->parse_error(m_lexer.get_position(), - m_lexer.get_token_string(), - parse_error::create(101, m_lexer.get_position(), exception_message(token_type::name_separator, "object separator"), BasicJsonType())); - } - - // remember we are now inside an object - states.push_back(false); - - // parse values - get_token(); - continue; - } - - case token_type::begin_array: - { - if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) - { - return false; - } - - // closing ] -> we are done - if (get_token() == token_type::end_array) - { - if (JSON_HEDLEY_UNLIKELY(!sax->end_array())) - { - return false; - } - break; - } - - // remember we are now inside an array - states.push_back(true); - - // parse values (no need to call get_token) - continue; - } - - case token_type::value_float: - { - const auto res = m_lexer.get_number_float(); - - if (JSON_HEDLEY_UNLIKELY(!std::isfinite(res))) - { - return sax->parse_error(m_lexer.get_position(), - m_lexer.get_token_string(), - out_of_range::create(406, "number overflow parsing '" + m_lexer.get_token_string() + "'", BasicJsonType())); - } - - if (JSON_HEDLEY_UNLIKELY(!sax->number_float(res, m_lexer.get_string()))) - { - return false; - } - - break; - } - - case token_type::literal_false: - { - if (JSON_HEDLEY_UNLIKELY(!sax->boolean(false))) - { - return false; - } - break; - } - - case token_type::literal_null: - { - if (JSON_HEDLEY_UNLIKELY(!sax->null())) - { - return false; - } - break; - } - - case token_type::literal_true: - { - if (JSON_HEDLEY_UNLIKELY(!sax->boolean(true))) - { - return false; - } - break; - } - - case token_type::value_integer: - { - if (JSON_HEDLEY_UNLIKELY(!sax->number_integer(m_lexer.get_number_integer()))) - { - return false; - } - break; - } - - case token_type::value_string: - { - if (JSON_HEDLEY_UNLIKELY(!sax->string(m_lexer.get_string()))) - { - return false; - } - break; - } - - case token_type::value_unsigned: - { - if (JSON_HEDLEY_UNLIKELY(!sax->number_unsigned(m_lexer.get_number_unsigned()))) - { - return false; - } - break; - } - - case token_type::parse_error: - { - // using "uninitialized" to avoid "expected" message - return sax->parse_error(m_lexer.get_position(), - m_lexer.get_token_string(), - parse_error::create(101, m_lexer.get_position(), exception_message(token_type::uninitialized, "value"), BasicJsonType())); - } - - case token_type::uninitialized: - case token_type::end_array: - case token_type::end_object: - case token_type::name_separator: - case token_type::value_separator: - case token_type::end_of_input: - case token_type::literal_or_value: - default: // the last token was unexpected - { - return sax->parse_error(m_lexer.get_position(), - m_lexer.get_token_string(), - parse_error::create(101, m_lexer.get_position(), exception_message(token_type::literal_or_value, "value"), BasicJsonType())); - } - } - } - else - { - skip_to_state_evaluation = false; - } - - // we reached this line after we successfully parsed a value - if (states.empty()) - { - // empty stack: we reached the end of the hierarchy: done - return true; - } - - if (states.back()) // array - { - // comma -> next value - if (get_token() == token_type::value_separator) - { - // parse a new value - get_token(); - continue; - } - - // closing ] - if (JSON_HEDLEY_LIKELY(last_token == token_type::end_array)) - { - if (JSON_HEDLEY_UNLIKELY(!sax->end_array())) - { - return false; - } - - // We are done with this array. Before we can parse a - // new value, we need to evaluate the new state first. - // By setting skip_to_state_evaluation to false, we - // are effectively jumping to the beginning of this if. - JSON_ASSERT(!states.empty()); - states.pop_back(); - skip_to_state_evaluation = true; - continue; - } - - return sax->parse_error(m_lexer.get_position(), - m_lexer.get_token_string(), - parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_array, "array"), BasicJsonType())); - } - - // states.back() is false -> object - - // comma -> next value - if (get_token() == token_type::value_separator) - { - // parse key - if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::value_string)) - { - return sax->parse_error(m_lexer.get_position(), - m_lexer.get_token_string(), - parse_error::create(101, m_lexer.get_position(), exception_message(token_type::value_string, "object key"), BasicJsonType())); - } - - if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string()))) - { - return false; - } - - // parse separator (:) - if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::name_separator)) - { - return sax->parse_error(m_lexer.get_position(), - m_lexer.get_token_string(), - parse_error::create(101, m_lexer.get_position(), exception_message(token_type::name_separator, "object separator"), BasicJsonType())); - } - - // parse values - get_token(); - continue; - } - - // closing } - if (JSON_HEDLEY_LIKELY(last_token == token_type::end_object)) - { - if (JSON_HEDLEY_UNLIKELY(!sax->end_object())) - { - return false; - } - - // We are done with this object. Before we can parse a - // new value, we need to evaluate the new state first. - // By setting skip_to_state_evaluation to false, we - // are effectively jumping to the beginning of this if. - JSON_ASSERT(!states.empty()); - states.pop_back(); - skip_to_state_evaluation = true; - continue; - } - - return sax->parse_error(m_lexer.get_position(), - m_lexer.get_token_string(), - parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_object, "object"), BasicJsonType())); - } - } - - /// get next token from lexer - token_type get_token() - { - return last_token = m_lexer.scan(); - } - - std::string exception_message(const token_type expected, const std::string& context) - { - std::string error_msg = "syntax error "; - - if (!context.empty()) - { - error_msg += "while parsing " + context + " "; - } - - error_msg += "- "; - - if (last_token == token_type::parse_error) - { - error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" + - m_lexer.get_token_string() + "'"; - } - else - { - error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token)); - } - - if (expected != token_type::uninitialized) - { - error_msg += "; expected " + std::string(lexer_t::token_type_name(expected)); - } - - return error_msg; - } - - private: - /// callback function - const parser_callback_t callback = nullptr; - /// the type of the last read token - token_type last_token = token_type::uninitialized; - /// the lexer - lexer_t m_lexer; - /// whether to throw exceptions in case of errors - const bool allow_exceptions = true; -}; - -} // namespace detail -} // namespace nlohmann - -// #include - - -// #include - - -#include // ptrdiff_t -#include // numeric_limits - -// #include - - -namespace nlohmann -{ -namespace detail -{ -/* -@brief an iterator for primitive JSON types - -This class models an iterator for primitive JSON types (boolean, number, -string). It's only purpose is to allow the iterator/const_iterator classes -to "iterate" over primitive values. Internally, the iterator is modeled by -a `difference_type` variable. Value begin_value (`0`) models the begin, -end_value (`1`) models past the end. -*/ -class primitive_iterator_t -{ - private: - using difference_type = std::ptrdiff_t; - static constexpr difference_type begin_value = 0; - static constexpr difference_type end_value = begin_value + 1; - - JSON_PRIVATE_UNLESS_TESTED: - /// iterator as signed integer type - difference_type m_it = (std::numeric_limits::min)(); - - public: - constexpr difference_type get_value() const noexcept - { - return m_it; - } - - /// set iterator to a defined beginning - void set_begin() noexcept - { - m_it = begin_value; - } - - /// set iterator to a defined past the end - void set_end() noexcept - { - m_it = end_value; - } - - /// return whether the iterator can be dereferenced - constexpr bool is_begin() const noexcept - { - return m_it == begin_value; - } - - /// return whether the iterator is at end - constexpr bool is_end() const noexcept - { - return m_it == end_value; - } - - friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it == rhs.m_it; - } - - friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it < rhs.m_it; - } - - primitive_iterator_t operator+(difference_type n) noexcept - { - auto result = *this; - result += n; - return result; - } - - friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it - rhs.m_it; - } - - primitive_iterator_t& operator++() noexcept - { - ++m_it; - return *this; - } - - primitive_iterator_t const operator++(int) noexcept // NOLINT(readability-const-return-type) - { - auto result = *this; - ++m_it; - return result; - } - - primitive_iterator_t& operator--() noexcept - { - --m_it; - return *this; - } - - primitive_iterator_t const operator--(int) noexcept // NOLINT(readability-const-return-type) - { - auto result = *this; - --m_it; - return result; - } - - primitive_iterator_t& operator+=(difference_type n) noexcept - { - m_it += n; - return *this; - } - - primitive_iterator_t& operator-=(difference_type n) noexcept - { - m_it -= n; - return *this; - } -}; -} // namespace detail -} // namespace nlohmann - - -namespace nlohmann -{ -namespace detail -{ -/*! -@brief an iterator value - -@note This structure could easily be a union, but MSVC currently does not allow -unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. -*/ -template struct internal_iterator -{ - /// iterator for JSON objects - typename BasicJsonType::object_t::iterator object_iterator {}; - /// iterator for JSON arrays - typename BasicJsonType::array_t::iterator array_iterator {}; - /// generic iterator for all other types - primitive_iterator_t primitive_iterator {}; -}; -} // namespace detail -} // namespace nlohmann - -// #include - - -#include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next -#include // conditional, is_const, remove_const - -// #include - -// #include - -// #include - -// #include - -// #include - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -// forward declare, to be able to friend it later on -template class iteration_proxy; -template class iteration_proxy_value; - -/*! -@brief a template for a bidirectional iterator for the @ref basic_json class -This class implements a both iterators (iterator and const_iterator) for the -@ref basic_json class. -@note An iterator is called *initialized* when a pointer to a JSON value has - been set (e.g., by a constructor or a copy assignment). If the iterator is - default-constructed, it is *uninitialized* and most methods are undefined. - **The library uses assertions to detect calls on uninitialized iterators.** -@requirement The class satisfies the following concept requirements: -- -[BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator): - The iterator that can be moved can be moved in both directions (i.e. - incremented and decremented). -@since version 1.0.0, simplified in version 2.0.9, change to bidirectional - iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593) -*/ -template -class iter_impl // NOLINT(cppcoreguidelines-special-member-functions,hicpp-special-member-functions) -{ - /// the iterator with BasicJsonType of different const-ness - using other_iter_impl = iter_impl::value, typename std::remove_const::type, const BasicJsonType>::type>; - /// allow basic_json to access private members - friend other_iter_impl; - friend BasicJsonType; - friend iteration_proxy; - friend iteration_proxy_value; - - using object_t = typename BasicJsonType::object_t; - using array_t = typename BasicJsonType::array_t; - // make sure BasicJsonType is basic_json or const basic_json - static_assert(is_basic_json::type>::value, - "iter_impl only accepts (const) basic_json"); - - public: - - /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. - /// The C++ Standard has never required user-defined iterators to derive from std::iterator. - /// A user-defined iterator should provide publicly accessible typedefs named - /// iterator_category, value_type, difference_type, pointer, and reference. - /// Note that value_type is required to be non-const, even for constant iterators. - using iterator_category = std::bidirectional_iterator_tag; - - /// the type of the values when the iterator is dereferenced - using value_type = typename BasicJsonType::value_type; - /// a type to represent differences between iterators - using difference_type = typename BasicJsonType::difference_type; - /// defines a pointer to the type iterated over (value_type) - using pointer = typename std::conditional::value, - typename BasicJsonType::const_pointer, - typename BasicJsonType::pointer>::type; - /// defines a reference to the type iterated over (value_type) - using reference = - typename std::conditional::value, - typename BasicJsonType::const_reference, - typename BasicJsonType::reference>::type; - - iter_impl() = default; - ~iter_impl() = default; - iter_impl(iter_impl&&) noexcept = default; - iter_impl& operator=(iter_impl&&) noexcept = default; - - /*! - @brief constructor for a given JSON instance - @param[in] object pointer to a JSON object for this iterator - @pre object != nullptr - @post The iterator is initialized; i.e. `m_object != nullptr`. - */ - explicit iter_impl(pointer object) noexcept : m_object(object) - { - JSON_ASSERT(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - m_it.object_iterator = typename object_t::iterator(); - break; - } - - case value_t::array: - { - m_it.array_iterator = typename array_t::iterator(); - break; - } - - case value_t::null: - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - { - m_it.primitive_iterator = primitive_iterator_t(); - break; - } - } - } - - /*! - @note The conventional copy constructor and copy assignment are implicitly - defined. Combined with the following converting constructor and - assignment, they support: (1) copy from iterator to iterator, (2) - copy from const iterator to const iterator, and (3) conversion from - iterator to const iterator. However conversion from const iterator - to iterator is not defined. - */ - - /*! - @brief const copy constructor - @param[in] other const iterator to copy from - @note This copy constructor had to be defined explicitly to circumvent a bug - occurring on msvc v19.0 compiler (VS 2015) debug build. For more - information refer to: https://github.com/nlohmann/json/issues/1608 - */ - iter_impl(const iter_impl& other) noexcept - : m_object(other.m_object), m_it(other.m_it) - {} - - /*! - @brief converting assignment - @param[in] other const iterator to copy from - @return const/non-const iterator - @note It is not checked whether @a other is initialized. - */ - iter_impl& operator=(const iter_impl& other) noexcept - { - if (&other != this) - { - m_object = other.m_object; - m_it = other.m_it; - } - return *this; - } - - /*! - @brief converting constructor - @param[in] other non-const iterator to copy from - @note It is not checked whether @a other is initialized. - */ - iter_impl(const iter_impl::type>& other) noexcept - : m_object(other.m_object), m_it(other.m_it) - {} - - /*! - @brief converting assignment - @param[in] other non-const iterator to copy from - @return const/non-const iterator - @note It is not checked whether @a other is initialized. - */ - iter_impl& operator=(const iter_impl::type>& other) noexcept // NOLINT(cert-oop54-cpp) - { - m_object = other.m_object; - m_it = other.m_it; - return *this; - } - - JSON_PRIVATE_UNLESS_TESTED: - /*! - @brief set the iterator to the first value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_begin() noexcept - { - JSON_ASSERT(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - m_it.object_iterator = m_object->m_value.object->begin(); - break; - } - - case value_t::array: - { - m_it.array_iterator = m_object->m_value.array->begin(); - break; - } - - case value_t::null: - { - // set to end so begin()==end() is true: null is empty - m_it.primitive_iterator.set_end(); - break; - } - - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - { - m_it.primitive_iterator.set_begin(); - break; - } - } - } - - /*! - @brief set the iterator past the last value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_end() noexcept - { - JSON_ASSERT(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - m_it.object_iterator = m_object->m_value.object->end(); - break; - } - - case value_t::array: - { - m_it.array_iterator = m_object->m_value.array->end(); - break; - } - - case value_t::null: - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - { - m_it.primitive_iterator.set_end(); - break; - } - } - } - - public: - /*! - @brief return a reference to the value pointed to by the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator*() const - { - JSON_ASSERT(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - JSON_ASSERT(m_it.object_iterator != m_object->m_value.object->end()); - return m_it.object_iterator->second; - } - - case value_t::array: - { - JSON_ASSERT(m_it.array_iterator != m_object->m_value.array->end()); - return *m_it.array_iterator; - } - - case value_t::null: - JSON_THROW(invalid_iterator::create(214, "cannot get value", *m_object)); - - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - { - if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.is_begin())) - { - return *m_object; - } - - JSON_THROW(invalid_iterator::create(214, "cannot get value", *m_object)); - } - } - } - - /*! - @brief dereference the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - pointer operator->() const - { - JSON_ASSERT(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - JSON_ASSERT(m_it.object_iterator != m_object->m_value.object->end()); - return &(m_it.object_iterator->second); - } - - case value_t::array: - { - JSON_ASSERT(m_it.array_iterator != m_object->m_value.array->end()); - return &*m_it.array_iterator; - } - - case value_t::null: - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - { - if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.is_begin())) - { - return m_object; - } - - JSON_THROW(invalid_iterator::create(214, "cannot get value", *m_object)); - } - } - } - - /*! - @brief post-increment (it++) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl const operator++(int) // NOLINT(readability-const-return-type) - { - auto result = *this; - ++(*this); - return result; - } - - /*! - @brief pre-increment (++it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator++() - { - JSON_ASSERT(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - std::advance(m_it.object_iterator, 1); - break; - } - - case value_t::array: - { - std::advance(m_it.array_iterator, 1); - break; - } - - case value_t::null: - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - { - ++m_it.primitive_iterator; - break; - } - } - - return *this; - } - - /*! - @brief post-decrement (it--) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl const operator--(int) // NOLINT(readability-const-return-type) - { - auto result = *this; - --(*this); - return result; - } - - /*! - @brief pre-decrement (--it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator--() - { - JSON_ASSERT(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - std::advance(m_it.object_iterator, -1); - break; - } - - case value_t::array: - { - std::advance(m_it.array_iterator, -1); - break; - } - - case value_t::null: - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - { - --m_it.primitive_iterator; - break; - } - } - - return *this; - } - - /*! - @brief comparison: equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - template < typename IterImpl, detail::enable_if_t < (std::is_same::value || std::is_same::value), std::nullptr_t > = nullptr > - bool operator==(const IterImpl& other) const - { - // if objects are not the same, the comparison is undefined - if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object)) - { - JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers", *m_object)); - } - - JSON_ASSERT(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - return (m_it.object_iterator == other.m_it.object_iterator); - - case value_t::array: - return (m_it.array_iterator == other.m_it.array_iterator); - - case value_t::null: - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - return (m_it.primitive_iterator == other.m_it.primitive_iterator); - } - } - - /*! - @brief comparison: not equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - template < typename IterImpl, detail::enable_if_t < (std::is_same::value || std::is_same::value), std::nullptr_t > = nullptr > - bool operator!=(const IterImpl& other) const - { - return !operator==(other); - } - - /*! - @brief comparison: smaller - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<(const iter_impl& other) const - { - // if objects are not the same, the comparison is undefined - if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object)) - { - JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers", *m_object)); - } - - JSON_ASSERT(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators", *m_object)); - - case value_t::array: - return (m_it.array_iterator < other.m_it.array_iterator); - - case value_t::null: - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - return (m_it.primitive_iterator < other.m_it.primitive_iterator); - } - } - - /*! - @brief comparison: less than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<=(const iter_impl& other) const - { - return !other.operator < (*this); - } - - /*! - @brief comparison: greater than - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>(const iter_impl& other) const - { - return !operator<=(other); - } - - /*! - @brief comparison: greater than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>=(const iter_impl& other) const - { - return !operator<(other); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator+=(difference_type i) - { - JSON_ASSERT(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators", *m_object)); - - case value_t::array: - { - std::advance(m_it.array_iterator, i); - break; - } - - case value_t::null: - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - { - m_it.primitive_iterator += i; - break; - } - } - - return *this; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator-=(difference_type i) - { - return operator+=(-i); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator+(difference_type i) const - { - auto result = *this; - result += i; - return result; - } - - /*! - @brief addition of distance and iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - friend iter_impl operator+(difference_type i, const iter_impl& it) - { - auto result = it; - result += i; - return result; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator-(difference_type i) const - { - auto result = *this; - result -= i; - return result; - } - - /*! - @brief return difference - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - difference_type operator-(const iter_impl& other) const - { - JSON_ASSERT(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators", *m_object)); - - case value_t::array: - return m_it.array_iterator - other.m_it.array_iterator; - - case value_t::null: - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - return m_it.primitive_iterator - other.m_it.primitive_iterator; - } - } - - /*! - @brief access to successor - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator[](difference_type n) const - { - JSON_ASSERT(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators", *m_object)); - - case value_t::array: - return *std::next(m_it.array_iterator, n); - - case value_t::null: - JSON_THROW(invalid_iterator::create(214, "cannot get value", *m_object)); - - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - { - if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.get_value() == -n)) - { - return *m_object; - } - - JSON_THROW(invalid_iterator::create(214, "cannot get value", *m_object)); - } - } - } - - /*! - @brief return the key of an object iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - const typename object_t::key_type& key() const - { - JSON_ASSERT(m_object != nullptr); - - if (JSON_HEDLEY_LIKELY(m_object->is_object())) - { - return m_it.object_iterator->first; - } - - JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators", *m_object)); - } - - /*! - @brief return the value of an iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference value() const - { - return operator*(); - } - - JSON_PRIVATE_UNLESS_TESTED: - /// associated JSON instance - pointer m_object = nullptr; - /// the actual iterator of the associated instance - internal_iterator::type> m_it {}; -}; -} // namespace detail -} // namespace nlohmann - -// #include - -// #include - - -#include // ptrdiff_t -#include // reverse_iterator -#include // declval - -namespace nlohmann -{ -namespace detail -{ -////////////////////// -// reverse_iterator // -////////////////////// - -/*! -@brief a template for a reverse iterator class - -@tparam Base the base iterator type to reverse. Valid types are @ref -iterator (to create @ref reverse_iterator) and @ref const_iterator (to -create @ref const_reverse_iterator). - -@requirement The class satisfies the following concept requirements: -- -[BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator): - The iterator that can be moved can be moved in both directions (i.e. - incremented and decremented). -- [OutputIterator](https://en.cppreference.com/w/cpp/named_req/OutputIterator): - It is possible to write to the pointed-to element (only if @a Base is - @ref iterator). - -@since version 1.0.0 -*/ -template -class json_reverse_iterator : public std::reverse_iterator -{ - public: - using difference_type = std::ptrdiff_t; - /// shortcut to the reverse iterator adapter - using base_iterator = std::reverse_iterator; - /// the reference type for the pointed-to element - using reference = typename Base::reference; - - /// create reverse iterator from iterator - explicit json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept - : base_iterator(it) {} - - /// create reverse iterator from base class - explicit json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {} - - /// post-increment (it++) - json_reverse_iterator const operator++(int) // NOLINT(readability-const-return-type) - { - return static_cast(base_iterator::operator++(1)); - } - - /// pre-increment (++it) - json_reverse_iterator& operator++() - { - return static_cast(base_iterator::operator++()); - } - - /// post-decrement (it--) - json_reverse_iterator const operator--(int) // NOLINT(readability-const-return-type) - { - return static_cast(base_iterator::operator--(1)); - } - - /// pre-decrement (--it) - json_reverse_iterator& operator--() - { - return static_cast(base_iterator::operator--()); - } - - /// add to iterator - json_reverse_iterator& operator+=(difference_type i) - { - return static_cast(base_iterator::operator+=(i)); - } - - /// add to iterator - json_reverse_iterator operator+(difference_type i) const - { - return static_cast(base_iterator::operator+(i)); - } - - /// subtract from iterator - json_reverse_iterator operator-(difference_type i) const - { - return static_cast(base_iterator::operator-(i)); - } - - /// return difference - difference_type operator-(const json_reverse_iterator& other) const - { - return base_iterator(*this) - base_iterator(other); - } - - /// access to successor - reference operator[](difference_type n) const - { - return *(this->operator+(n)); - } - - /// return the key of an object iterator - auto key() const -> decltype(std::declval().key()) - { - auto it = --this->base(); - return it.key(); - } - - /// return the value of an iterator - reference value() const - { - auto it = --this->base(); - return it.operator * (); - } -}; -} // namespace detail -} // namespace nlohmann - -// #include - -// #include - - -#include // all_of -#include // isdigit -#include // max -#include // accumulate -#include // string -#include // move -#include // vector - -// #include - -// #include - -// #include - -// #include - - -namespace nlohmann -{ - -/// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document -/// @sa https://json.nlohmann.me/api/json_pointer/ -template -class json_pointer -{ - // allow basic_json to access private members - NLOHMANN_BASIC_JSON_TPL_DECLARATION - friend class basic_json; - - public: - /// @brief create JSON pointer - /// @sa https://json.nlohmann.me/api/json_pointer/json_pointer/ - explicit json_pointer(const std::string& s = "") - : reference_tokens(split(s)) - {} - - /// @brief return a string representation of the JSON pointer - /// @sa https://json.nlohmann.me/api/json_pointer/to_string/ - std::string to_string() const - { - return std::accumulate(reference_tokens.begin(), reference_tokens.end(), - std::string{}, - [](const std::string & a, const std::string & b) - { - return a + "/" + detail::escape(b); - }); - } - - /// @brief return a string representation of the JSON pointer - /// @sa https://json.nlohmann.me/api/json_pointer/operator_string/ - operator std::string() const - { - return to_string(); - } - - /// @brief append another JSON pointer at the end of this JSON pointer - /// @sa https://json.nlohmann.me/api/json_pointer/operator_slasheq/ - json_pointer& operator/=(const json_pointer& ptr) - { - reference_tokens.insert(reference_tokens.end(), - ptr.reference_tokens.begin(), - ptr.reference_tokens.end()); - return *this; - } - - /// @brief append an unescaped reference token at the end of this JSON pointer - /// @sa https://json.nlohmann.me/api/json_pointer/operator_slasheq/ - json_pointer& operator/=(std::string token) - { - push_back(std::move(token)); - return *this; - } - - /// @brief append an array index at the end of this JSON pointer - /// @sa https://json.nlohmann.me/api/json_pointer/operator_slasheq/ - json_pointer& operator/=(std::size_t array_idx) - { - return *this /= std::to_string(array_idx); - } - - /// @brief create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer - /// @sa https://json.nlohmann.me/api/json_pointer/operator_slash/ - friend json_pointer operator/(const json_pointer& lhs, - const json_pointer& rhs) - { - return json_pointer(lhs) /= rhs; - } - - /// @brief create a new JSON pointer by appending the unescaped token at the end of the JSON pointer - /// @sa https://json.nlohmann.me/api/json_pointer/operator_slash/ - friend json_pointer operator/(const json_pointer& lhs, std::string token) // NOLINT(performance-unnecessary-value-param) - { - return json_pointer(lhs) /= std::move(token); - } - - /// @brief create a new JSON pointer by appending the array-index-token at the end of the JSON pointer - /// @sa https://json.nlohmann.me/api/json_pointer/operator_slash/ - friend json_pointer operator/(const json_pointer& lhs, std::size_t array_idx) - { - return json_pointer(lhs) /= array_idx; - } - - /// @brief returns the parent of this JSON pointer - /// @sa https://json.nlohmann.me/api/json_pointer/parent_pointer/ - json_pointer parent_pointer() const - { - if (empty()) - { - return *this; - } - - json_pointer res = *this; - res.pop_back(); - return res; - } - - /// @brief remove last reference token - /// @sa https://json.nlohmann.me/api/json_pointer/pop_back/ - void pop_back() - { - if (JSON_HEDLEY_UNLIKELY(empty())) - { - JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent", BasicJsonType())); - } - - reference_tokens.pop_back(); - } - - /// @brief return last reference token - /// @sa https://json.nlohmann.me/api/json_pointer/back/ - const std::string& back() const - { - if (JSON_HEDLEY_UNLIKELY(empty())) - { - JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent", BasicJsonType())); - } - - return reference_tokens.back(); - } - - /// @brief append an unescaped token at the end of the reference pointer - /// @sa https://json.nlohmann.me/api/json_pointer/push_back/ - void push_back(const std::string& token) - { - reference_tokens.push_back(token); - } - - /// @brief append an unescaped token at the end of the reference pointer - /// @sa https://json.nlohmann.me/api/json_pointer/push_back/ - void push_back(std::string&& token) - { - reference_tokens.push_back(std::move(token)); - } - - /// @brief return whether pointer points to the root document - /// @sa https://json.nlohmann.me/api/json_pointer/empty/ - bool empty() const noexcept - { - return reference_tokens.empty(); - } - - private: - /*! - @param[in] s reference token to be converted into an array index - - @return integer representation of @a s - - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index begins not with a digit - @throw out_of_range.404 if string @a s could not be converted to an integer - @throw out_of_range.410 if an array index exceeds size_type - */ - static typename BasicJsonType::size_type array_index(const std::string& s) - { - using size_type = typename BasicJsonType::size_type; - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_HEDLEY_UNLIKELY(s.size() > 1 && s[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, "array index '" + s + "' must not begin with '0'", BasicJsonType())); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_HEDLEY_UNLIKELY(s.size() > 1 && !(s[0] >= '1' && s[0] <= '9'))) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + s + "' is not a number", BasicJsonType())); - } - - std::size_t processed_chars = 0; - unsigned long long res = 0; // NOLINT(runtime/int) - JSON_TRY - { - res = std::stoull(s, &processed_chars); - } - JSON_CATCH(std::out_of_range&) - { - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'", BasicJsonType())); - } - - // check if the string was completely read - if (JSON_HEDLEY_UNLIKELY(processed_chars != s.size())) - { - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'", BasicJsonType())); - } - - // only triggered on special platforms (like 32bit), see also - // https://github.com/nlohmann/json/pull/2203 - if (res >= static_cast((std::numeric_limits::max)())) // NOLINT(runtime/int) - { - JSON_THROW(detail::out_of_range::create(410, "array index " + s + " exceeds size_type", BasicJsonType())); // LCOV_EXCL_LINE - } - - return static_cast(res); - } - - JSON_PRIVATE_UNLESS_TESTED: - json_pointer top() const - { - if (JSON_HEDLEY_UNLIKELY(empty())) - { - JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent", BasicJsonType())); - } - - json_pointer result = *this; - result.reference_tokens = {reference_tokens[0]}; - return result; - } - - private: - /*! - @brief create and return a reference to the pointed to value - - @complexity Linear in the number of reference tokens. - - @throw parse_error.109 if array index is not a number - @throw type_error.313 if value cannot be unflattened - */ - BasicJsonType& get_and_create(BasicJsonType& j) const - { - auto* result = &j; - - // in case no reference tokens exist, return a reference to the JSON value - // j which will be overwritten by a primitive value - for (const auto& reference_token : reference_tokens) - { - switch (result->type()) - { - case detail::value_t::null: - { - if (reference_token == "0") - { - // start a new array if reference token is 0 - result = &result->operator[](0); - } - else - { - // start a new object otherwise - result = &result->operator[](reference_token); - } - break; - } - - case detail::value_t::object: - { - // create an entry in the object - result = &result->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - // create an entry in the array - result = &result->operator[](array_index(reference_token)); - break; - } - - /* - The following code is only reached if there exists a reference - token _and_ the current value is primitive. In this case, we have - an error situation, because primitive values may only occur as - single value; that is, with an empty list of reference tokens. - */ - case detail::value_t::string: - case detail::value_t::boolean: - case detail::value_t::number_integer: - case detail::value_t::number_unsigned: - case detail::value_t::number_float: - case detail::value_t::binary: - case detail::value_t::discarded: - default: - JSON_THROW(detail::type_error::create(313, "invalid value to unflatten", j)); - } - } - - return *result; - } - - /*! - @brief return a reference to the pointed to value - - @note This version does not throw if a value is not present, but tries to - create nested values instead. For instance, calling this function - with pointer `"/this/that"` on a null value is equivalent to calling - `operator[]("this").operator[]("that")` on that value, effectively - changing the null value to an object. - - @param[in] ptr a JSON value - - @return reference to the JSON value pointed to by the JSON pointer - - @complexity Linear in the length of the JSON pointer. - - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - BasicJsonType& get_unchecked(BasicJsonType* ptr) const - { - for (const auto& reference_token : reference_tokens) - { - // convert null values to arrays or objects before continuing - if (ptr->is_null()) - { - // check if reference token is a number - const bool nums = - std::all_of(reference_token.begin(), reference_token.end(), - [](const unsigned char x) - { - return std::isdigit(x); - }); - - // change value to array for numbers or "-" or to object otherwise - *ptr = (nums || reference_token == "-") - ? detail::value_t::array - : detail::value_t::object; - } - - switch (ptr->type()) - { - case detail::value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - if (reference_token == "-") - { - // explicitly treat "-" as index beyond the end - ptr = &ptr->operator[](ptr->m_value.array->size()); - } - else - { - // convert array index to number; unchecked access - ptr = &ptr->operator[](array_index(reference_token)); - } - break; - } - - case detail::value_t::null: - case detail::value_t::string: - case detail::value_t::boolean: - case detail::value_t::number_integer: - case detail::value_t::number_unsigned: - case detail::value_t::number_float: - case detail::value_t::binary: - case detail::value_t::discarded: - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'", *ptr)); - } - } - - return *ptr; - } - - /*! - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.402 if the array index '-' is used - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - BasicJsonType& get_checked(BasicJsonType* ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->type()) - { - case detail::value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) - { - // "-" always fails the range check - JSON_THROW(detail::out_of_range::create(402, - "array index '-' (" + std::to_string(ptr->m_value.array->size()) + - ") is out of range", *ptr)); - } - - // note: at performs range check - ptr = &ptr->at(array_index(reference_token)); - break; - } - - case detail::value_t::null: - case detail::value_t::string: - case detail::value_t::boolean: - case detail::value_t::number_integer: - case detail::value_t::number_unsigned: - case detail::value_t::number_float: - case detail::value_t::binary: - case detail::value_t::discarded: - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'", *ptr)); - } - } - - return *ptr; - } - - /*! - @brief return a const reference to the pointed to value - - @param[in] ptr a JSON value - - @return const reference to the JSON value pointed to by the JSON - pointer - - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.402 if the array index '-' is used - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->type()) - { - case detail::value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) - { - // "-" cannot be used for const access - JSON_THROW(detail::out_of_range::create(402, "array index '-' (" + std::to_string(ptr->m_value.array->size()) + ") is out of range", *ptr)); - } - - // use unchecked array access - ptr = &ptr->operator[](array_index(reference_token)); - break; - } - - case detail::value_t::null: - case detail::value_t::string: - case detail::value_t::boolean: - case detail::value_t::number_integer: - case detail::value_t::number_unsigned: - case detail::value_t::number_float: - case detail::value_t::binary: - case detail::value_t::discarded: - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'", *ptr)); - } - } - - return *ptr; - } - - /*! - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.402 if the array index '-' is used - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - const BasicJsonType& get_checked(const BasicJsonType* ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->type()) - { - case detail::value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) - { - // "-" always fails the range check - JSON_THROW(detail::out_of_range::create(402, - "array index '-' (" + std::to_string(ptr->m_value.array->size()) + - ") is out of range", *ptr)); - } - - // note: at performs range check - ptr = &ptr->at(array_index(reference_token)); - break; - } - - case detail::value_t::null: - case detail::value_t::string: - case detail::value_t::boolean: - case detail::value_t::number_integer: - case detail::value_t::number_unsigned: - case detail::value_t::number_float: - case detail::value_t::binary: - case detail::value_t::discarded: - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'", *ptr)); - } - } - - return *ptr; - } - - /*! - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - */ - bool contains(const BasicJsonType* ptr) const - { - for (const auto& reference_token : reference_tokens) - { - switch (ptr->type()) - { - case detail::value_t::object: - { - if (!ptr->contains(reference_token)) - { - // we did not find the key in the object - return false; - } - - ptr = &ptr->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) - { - // "-" always fails the range check - return false; - } - if (JSON_HEDLEY_UNLIKELY(reference_token.size() == 1 && !("0" <= reference_token && reference_token <= "9"))) - { - // invalid char - return false; - } - if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1)) - { - if (JSON_HEDLEY_UNLIKELY(!('1' <= reference_token[0] && reference_token[0] <= '9'))) - { - // first char should be between '1' and '9' - return false; - } - for (std::size_t i = 1; i < reference_token.size(); i++) - { - if (JSON_HEDLEY_UNLIKELY(!('0' <= reference_token[i] && reference_token[i] <= '9'))) - { - // other char should be between '0' and '9' - return false; - } - } - } - - const auto idx = array_index(reference_token); - if (idx >= ptr->size()) - { - // index out of range - return false; - } - - ptr = &ptr->operator[](idx); - break; - } - - case detail::value_t::null: - case detail::value_t::string: - case detail::value_t::boolean: - case detail::value_t::number_integer: - case detail::value_t::number_unsigned: - case detail::value_t::number_float: - case detail::value_t::binary: - case detail::value_t::discarded: - default: - { - // we do not expect primitive values if there is still a - // reference token to process - return false; - } - } - } - - // no reference token left means we found a primitive value - return true; - } - - /*! - @brief split the string input to reference tokens - - @note This function is only called by the json_pointer constructor. - All exceptions below are documented there. - - @throw parse_error.107 if the pointer is not empty or begins with '/' - @throw parse_error.108 if character '~' is not followed by '0' or '1' - */ - static std::vector split(const std::string& reference_string) - { - std::vector result; - - // special case: empty reference string -> no reference tokens - if (reference_string.empty()) - { - return result; - } - - // check if nonempty reference string begins with slash - if (JSON_HEDLEY_UNLIKELY(reference_string[0] != '/')) - { - JSON_THROW(detail::parse_error::create(107, 1, "JSON pointer must be empty or begin with '/' - was: '" + reference_string + "'", BasicJsonType())); - } - - // extract the reference tokens: - // - slash: position of the last read slash (or end of string) - // - start: position after the previous slash - for ( - // search for the first slash after the first character - std::size_t slash = reference_string.find_first_of('/', 1), - // set the beginning of the first reference token - start = 1; - // we can stop if start == 0 (if slash == std::string::npos) - start != 0; - // set the beginning of the next reference token - // (will eventually be 0 if slash == std::string::npos) - start = (slash == std::string::npos) ? 0 : slash + 1, - // find next slash - slash = reference_string.find_first_of('/', start)) - { - // use the text between the beginning of the reference token - // (start) and the last slash (slash). - auto reference_token = reference_string.substr(start, slash - start); - - // check reference tokens are properly escaped - for (std::size_t pos = reference_token.find_first_of('~'); - pos != std::string::npos; - pos = reference_token.find_first_of('~', pos + 1)) - { - JSON_ASSERT(reference_token[pos] == '~'); - - // ~ must be followed by 0 or 1 - if (JSON_HEDLEY_UNLIKELY(pos == reference_token.size() - 1 || - (reference_token[pos + 1] != '0' && - reference_token[pos + 1] != '1'))) - { - JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'", BasicJsonType())); - } - } - - // finally, store the reference token - detail::unescape(reference_token); - result.push_back(reference_token); - } - - return result; - } - - private: - /*! - @param[in] reference_string the reference string to the current value - @param[in] value the value to consider - @param[in,out] result the result object to insert values to - - @note Empty objects or arrays are flattened to `null`. - */ - static void flatten(const std::string& reference_string, - const BasicJsonType& value, - BasicJsonType& result) - { - switch (value.type()) - { - case detail::value_t::array: - { - if (value.m_value.array->empty()) - { - // flatten empty array as null - result[reference_string] = nullptr; - } - else - { - // iterate array and use index as reference string - for (std::size_t i = 0; i < value.m_value.array->size(); ++i) - { - flatten(reference_string + "/" + std::to_string(i), - value.m_value.array->operator[](i), result); - } - } - break; - } - - case detail::value_t::object: - { - if (value.m_value.object->empty()) - { - // flatten empty object as null - result[reference_string] = nullptr; - } - else - { - // iterate object and use keys as reference string - for (const auto& element : *value.m_value.object) - { - flatten(reference_string + "/" + detail::escape(element.first), element.second, result); - } - } - break; - } - - case detail::value_t::null: - case detail::value_t::string: - case detail::value_t::boolean: - case detail::value_t::number_integer: - case detail::value_t::number_unsigned: - case detail::value_t::number_float: - case detail::value_t::binary: - case detail::value_t::discarded: - default: - { - // add primitive value with its reference string - result[reference_string] = value; - break; - } - } - } - - /*! - @param[in] value flattened JSON - - @return unflattened JSON - - @throw parse_error.109 if array index is not a number - @throw type_error.314 if value is not an object - @throw type_error.315 if object values are not primitive - @throw type_error.313 if value cannot be unflattened - */ - static BasicJsonType - unflatten(const BasicJsonType& value) - { - if (JSON_HEDLEY_UNLIKELY(!value.is_object())) - { - JSON_THROW(detail::type_error::create(314, "only objects can be unflattened", value)); - } - - BasicJsonType result; - - // iterate the JSON object values - for (const auto& element : *value.m_value.object) - { - if (JSON_HEDLEY_UNLIKELY(!element.second.is_primitive())) - { - JSON_THROW(detail::type_error::create(315, "values in object must be primitive", element.second)); - } - - // assign value to reference pointed to by JSON pointer; Note that if - // the JSON pointer is "" (i.e., points to the whole value), function - // get_and_create returns a reference to result itself. An assignment - // will then create a primitive value. - json_pointer(element.first).get_and_create(result) = element.second; - } - - return result; - } - - /*! - @brief compares two JSON pointers for equality - - @param[in] lhs JSON pointer to compare - @param[in] rhs JSON pointer to compare - @return whether @a lhs is equal to @a rhs - - @complexity Linear in the length of the JSON pointer - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - */ - friend bool operator==(json_pointer const& lhs, - json_pointer const& rhs) noexcept - { - return lhs.reference_tokens == rhs.reference_tokens; - } - - /*! - @brief compares two JSON pointers for inequality - - @param[in] lhs JSON pointer to compare - @param[in] rhs JSON pointer to compare - @return whether @a lhs is not equal @a rhs - - @complexity Linear in the length of the JSON pointer - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - */ - friend bool operator!=(json_pointer const& lhs, - json_pointer const& rhs) noexcept - { - return !(lhs == rhs); - } - - /// the reference tokens - std::vector reference_tokens; -}; -} // namespace nlohmann - -// #include - - -#include -#include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -template -class json_ref -{ - public: - using value_type = BasicJsonType; - - json_ref(value_type&& value) - : owned_value(std::move(value)) - {} - - json_ref(const value_type& value) - : value_ref(&value) - {} - - json_ref(std::initializer_list init) - : owned_value(init) - {} - - template < - class... Args, - enable_if_t::value, int> = 0 > - json_ref(Args && ... args) - : owned_value(std::forward(args)...) - {} - - // class should be movable only - json_ref(json_ref&&) noexcept = default; - json_ref(const json_ref&) = delete; - json_ref& operator=(const json_ref&) = delete; - json_ref& operator=(json_ref&&) = delete; - ~json_ref() = default; - - value_type moved_or_copied() const - { - if (value_ref == nullptr) - { - return std::move(owned_value); - } - return *value_ref; - } - - value_type const& operator*() const - { - return value_ref ? *value_ref : owned_value; - } - - value_type const* operator->() const - { - return &** this; - } - - private: - mutable value_type owned_value = nullptr; - value_type const* value_ref = nullptr; -}; -} // namespace detail -} // namespace nlohmann - -// #include - -// #include - -// #include - -// #include - -// #include - - -#include // reverse -#include // array -#include // isnan, isinf -#include // uint8_t, uint16_t, uint32_t, uint64_t -#include // memcpy -#include // numeric_limits -#include // string -#include // move - -// #include - -// #include - -// #include - - -#include // copy -#include // size_t -#include // back_inserter -#include // shared_ptr, make_shared -#include // basic_string -#include // vector - -#ifndef JSON_NO_IO - #include // streamsize - #include // basic_ostream -#endif // JSON_NO_IO - -// #include - - -namespace nlohmann -{ -namespace detail -{ -/// abstract output adapter interface -template struct output_adapter_protocol -{ - virtual void write_character(CharType c) = 0; - virtual void write_characters(const CharType* s, std::size_t length) = 0; - virtual ~output_adapter_protocol() = default; - - output_adapter_protocol() = default; - output_adapter_protocol(const output_adapter_protocol&) = default; - output_adapter_protocol(output_adapter_protocol&&) noexcept = default; - output_adapter_protocol& operator=(const output_adapter_protocol&) = default; - output_adapter_protocol& operator=(output_adapter_protocol&&) noexcept = default; -}; - -/// a type to simplify interfaces -template -using output_adapter_t = std::shared_ptr>; - -/// output adapter for byte vectors -template> -class output_vector_adapter : public output_adapter_protocol -{ - public: - explicit output_vector_adapter(std::vector& vec) noexcept - : v(vec) - {} - - void write_character(CharType c) override - { - v.push_back(c); - } - - JSON_HEDLEY_NON_NULL(2) - void write_characters(const CharType* s, std::size_t length) override - { - std::copy(s, s + length, std::back_inserter(v)); - } - - private: - std::vector& v; -}; - -#ifndef JSON_NO_IO -/// output adapter for output streams -template -class output_stream_adapter : public output_adapter_protocol -{ - public: - explicit output_stream_adapter(std::basic_ostream& s) noexcept - : stream(s) - {} - - void write_character(CharType c) override - { - stream.put(c); - } - - JSON_HEDLEY_NON_NULL(2) - void write_characters(const CharType* s, std::size_t length) override - { - stream.write(s, static_cast(length)); - } - - private: - std::basic_ostream& stream; -}; -#endif // JSON_NO_IO - -/// output adapter for basic_string -template> -class output_string_adapter : public output_adapter_protocol -{ - public: - explicit output_string_adapter(StringType& s) noexcept - : str(s) - {} - - void write_character(CharType c) override - { - str.push_back(c); - } - - JSON_HEDLEY_NON_NULL(2) - void write_characters(const CharType* s, std::size_t length) override - { - str.append(s, length); - } - - private: - StringType& str; -}; - -template> -class output_adapter -{ - public: - template> - output_adapter(std::vector& vec) - : oa(std::make_shared>(vec)) {} - -#ifndef JSON_NO_IO - output_adapter(std::basic_ostream& s) - : oa(std::make_shared>(s)) {} -#endif // JSON_NO_IO - - output_adapter(StringType& s) - : oa(std::make_shared>(s)) {} - - operator output_adapter_t() - { - return oa; - } - - private: - output_adapter_t oa = nullptr; -}; -} // namespace detail -} // namespace nlohmann - - -namespace nlohmann -{ -namespace detail -{ -/////////////////// -// binary writer // -/////////////////// - -/*! -@brief serialization to CBOR and MessagePack values -*/ -template -class binary_writer -{ - using string_t = typename BasicJsonType::string_t; - using binary_t = typename BasicJsonType::binary_t; - using number_float_t = typename BasicJsonType::number_float_t; - - public: - /*! - @brief create a binary writer - - @param[in] adapter output adapter to write to - */ - explicit binary_writer(output_adapter_t adapter) : oa(std::move(adapter)) - { - JSON_ASSERT(oa); - } - - /*! - @param[in] j JSON value to serialize - @pre j.type() == value_t::object - */ - void write_bson(const BasicJsonType& j) - { - switch (j.type()) - { - case value_t::object: - { - write_bson_object(*j.m_value.object); - break; - } - - case value_t::null: - case value_t::array: - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - { - JSON_THROW(type_error::create(317, "to serialize to BSON, top-level type must be object, but is " + std::string(j.type_name()), j)); - } - } - } - - /*! - @param[in] j JSON value to serialize - */ - void write_cbor(const BasicJsonType& j) - { - switch (j.type()) - { - case value_t::null: - { - oa->write_character(to_char_type(0xF6)); - break; - } - - case value_t::boolean: - { - oa->write_character(j.m_value.boolean - ? to_char_type(0xF5) - : to_char_type(0xF4)); - break; - } - - case value_t::number_integer: - { - if (j.m_value.number_integer >= 0) - { - // CBOR does not differentiate between positive signed - // integers and unsigned integers. Therefore, we used the - // code from the value_t::number_unsigned case here. - if (j.m_value.number_integer <= 0x17) - { - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x18)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x19)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x1A)); - write_number(static_cast(j.m_value.number_integer)); - } - else - { - oa->write_character(to_char_type(0x1B)); - write_number(static_cast(j.m_value.number_integer)); - } - } - else - { - // The conversions below encode the sign in the first - // byte, and the value is converted to a positive number. - const auto positive_number = -1 - j.m_value.number_integer; - if (j.m_value.number_integer >= -24) - { - write_number(static_cast(0x20 + positive_number)); - } - else if (positive_number <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x38)); - write_number(static_cast(positive_number)); - } - else if (positive_number <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x39)); - write_number(static_cast(positive_number)); - } - else if (positive_number <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x3A)); - write_number(static_cast(positive_number)); - } - else - { - oa->write_character(to_char_type(0x3B)); - write_number(static_cast(positive_number)); - } - } - break; - } - - case value_t::number_unsigned: - { - if (j.m_value.number_unsigned <= 0x17) - { - write_number(static_cast(j.m_value.number_unsigned)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x18)); - write_number(static_cast(j.m_value.number_unsigned)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x19)); - write_number(static_cast(j.m_value.number_unsigned)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x1A)); - write_number(static_cast(j.m_value.number_unsigned)); - } - else - { - oa->write_character(to_char_type(0x1B)); - write_number(static_cast(j.m_value.number_unsigned)); - } - break; - } - - case value_t::number_float: - { - if (std::isnan(j.m_value.number_float)) - { - // NaN is 0xf97e00 in CBOR - oa->write_character(to_char_type(0xF9)); - oa->write_character(to_char_type(0x7E)); - oa->write_character(to_char_type(0x00)); - } - else if (std::isinf(j.m_value.number_float)) - { - // Infinity is 0xf97c00, -Infinity is 0xf9fc00 - oa->write_character(to_char_type(0xf9)); - oa->write_character(j.m_value.number_float > 0 ? to_char_type(0x7C) : to_char_type(0xFC)); - oa->write_character(to_char_type(0x00)); - } - else - { - write_compact_float(j.m_value.number_float, detail::input_format_t::cbor); - } - break; - } - - case value_t::string: - { - // step 1: write control byte and the string length - const auto N = j.m_value.string->size(); - if (N <= 0x17) - { - write_number(static_cast(0x60 + N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x78)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x79)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x7A)); - write_number(static_cast(N)); - } - // LCOV_EXCL_START - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x7B)); - write_number(static_cast(N)); - } - // LCOV_EXCL_STOP - - // step 2: write the string - oa->write_characters( - reinterpret_cast(j.m_value.string->c_str()), - j.m_value.string->size()); - break; - } - - case value_t::array: - { - // step 1: write control byte and the array size - const auto N = j.m_value.array->size(); - if (N <= 0x17) - { - write_number(static_cast(0x80 + N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x98)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x99)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x9A)); - write_number(static_cast(N)); - } - // LCOV_EXCL_START - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x9B)); - write_number(static_cast(N)); - } - // LCOV_EXCL_STOP - - // step 2: write each element - for (const auto& el : *j.m_value.array) - { - write_cbor(el); - } - break; - } - - case value_t::binary: - { - if (j.m_value.binary->has_subtype()) - { - if (j.m_value.binary->subtype() <= (std::numeric_limits::max)()) - { - write_number(static_cast(0xd8)); - write_number(static_cast(j.m_value.binary->subtype())); - } - else if (j.m_value.binary->subtype() <= (std::numeric_limits::max)()) - { - write_number(static_cast(0xd9)); - write_number(static_cast(j.m_value.binary->subtype())); - } - else if (j.m_value.binary->subtype() <= (std::numeric_limits::max)()) - { - write_number(static_cast(0xda)); - write_number(static_cast(j.m_value.binary->subtype())); - } - else if (j.m_value.binary->subtype() <= (std::numeric_limits::max)()) - { - write_number(static_cast(0xdb)); - write_number(static_cast(j.m_value.binary->subtype())); - } - } - - // step 1: write control byte and the binary array size - const auto N = j.m_value.binary->size(); - if (N <= 0x17) - { - write_number(static_cast(0x40 + N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x58)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x59)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x5A)); - write_number(static_cast(N)); - } - // LCOV_EXCL_START - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0x5B)); - write_number(static_cast(N)); - } - // LCOV_EXCL_STOP - - // step 2: write each element - oa->write_characters( - reinterpret_cast(j.m_value.binary->data()), - N); - - break; - } - - case value_t::object: - { - // step 1: write control byte and the object size - const auto N = j.m_value.object->size(); - if (N <= 0x17) - { - write_number(static_cast(0xA0 + N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0xB8)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0xB9)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0xBA)); - write_number(static_cast(N)); - } - // LCOV_EXCL_START - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(to_char_type(0xBB)); - write_number(static_cast(N)); - } - // LCOV_EXCL_STOP - - // step 2: write each element - for (const auto& el : *j.m_value.object) - { - write_cbor(el.first); - write_cbor(el.second); - } - break; - } - - case value_t::discarded: - default: - break; - } - } - - /*! - @param[in] j JSON value to serialize - */ - void write_msgpack(const BasicJsonType& j) - { - switch (j.type()) - { - case value_t::null: // nil - { - oa->write_character(to_char_type(0xC0)); - break; - } - - case value_t::boolean: // true and false - { - oa->write_character(j.m_value.boolean - ? to_char_type(0xC3) - : to_char_type(0xC2)); - break; - } - - case value_t::number_integer: - { - if (j.m_value.number_integer >= 0) - { - // MessagePack does not differentiate between positive - // signed integers and unsigned integers. Therefore, we used - // the code from the value_t::number_unsigned case here. - if (j.m_value.number_unsigned < 128) - { - // positive fixnum - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 8 - oa->write_character(to_char_type(0xCC)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 16 - oa->write_character(to_char_type(0xCD)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 32 - oa->write_character(to_char_type(0xCE)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 64 - oa->write_character(to_char_type(0xCF)); - write_number(static_cast(j.m_value.number_integer)); - } - } - else - { - if (j.m_value.number_integer >= -32) - { - // negative fixnum - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() && - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 8 - oa->write_character(to_char_type(0xD0)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() && - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 16 - oa->write_character(to_char_type(0xD1)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() && - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 32 - oa->write_character(to_char_type(0xD2)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() && - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 64 - oa->write_character(to_char_type(0xD3)); - write_number(static_cast(j.m_value.number_integer)); - } - } - break; - } - - case value_t::number_unsigned: - { - if (j.m_value.number_unsigned < 128) - { - // positive fixnum - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 8 - oa->write_character(to_char_type(0xCC)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 16 - oa->write_character(to_char_type(0xCD)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 32 - oa->write_character(to_char_type(0xCE)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 64 - oa->write_character(to_char_type(0xCF)); - write_number(static_cast(j.m_value.number_integer)); - } - break; - } - - case value_t::number_float: - { - write_compact_float(j.m_value.number_float, detail::input_format_t::msgpack); - break; - } - - case value_t::string: - { - // step 1: write control byte and the string length - const auto N = j.m_value.string->size(); - if (N <= 31) - { - // fixstr - write_number(static_cast(0xA0 | N)); - } - else if (N <= (std::numeric_limits::max)()) - { - // str 8 - oa->write_character(to_char_type(0xD9)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - // str 16 - oa->write_character(to_char_type(0xDA)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - // str 32 - oa->write_character(to_char_type(0xDB)); - write_number(static_cast(N)); - } - - // step 2: write the string - oa->write_characters( - reinterpret_cast(j.m_value.string->c_str()), - j.m_value.string->size()); - break; - } - - case value_t::array: - { - // step 1: write control byte and the array size - const auto N = j.m_value.array->size(); - if (N <= 15) - { - // fixarray - write_number(static_cast(0x90 | N)); - } - else if (N <= (std::numeric_limits::max)()) - { - // array 16 - oa->write_character(to_char_type(0xDC)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - // array 32 - oa->write_character(to_char_type(0xDD)); - write_number(static_cast(N)); - } - - // step 2: write each element - for (const auto& el : *j.m_value.array) - { - write_msgpack(el); - } - break; - } - - case value_t::binary: - { - // step 0: determine if the binary type has a set subtype to - // determine whether or not to use the ext or fixext types - const bool use_ext = j.m_value.binary->has_subtype(); - - // step 1: write control byte and the byte string length - const auto N = j.m_value.binary->size(); - if (N <= (std::numeric_limits::max)()) - { - std::uint8_t output_type{}; - bool fixed = true; - if (use_ext) - { - switch (N) - { - case 1: - output_type = 0xD4; // fixext 1 - break; - case 2: - output_type = 0xD5; // fixext 2 - break; - case 4: - output_type = 0xD6; // fixext 4 - break; - case 8: - output_type = 0xD7; // fixext 8 - break; - case 16: - output_type = 0xD8; // fixext 16 - break; - default: - output_type = 0xC7; // ext 8 - fixed = false; - break; - } - - } - else - { - output_type = 0xC4; // bin 8 - fixed = false; - } - - oa->write_character(to_char_type(output_type)); - if (!fixed) - { - write_number(static_cast(N)); - } - } - else if (N <= (std::numeric_limits::max)()) - { - std::uint8_t output_type = use_ext - ? 0xC8 // ext 16 - : 0xC5; // bin 16 - - oa->write_character(to_char_type(output_type)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - std::uint8_t output_type = use_ext - ? 0xC9 // ext 32 - : 0xC6; // bin 32 - - oa->write_character(to_char_type(output_type)); - write_number(static_cast(N)); - } - - // step 1.5: if this is an ext type, write the subtype - if (use_ext) - { - write_number(static_cast(j.m_value.binary->subtype())); - } - - // step 2: write the byte string - oa->write_characters( - reinterpret_cast(j.m_value.binary->data()), - N); - - break; - } - - case value_t::object: - { - // step 1: write control byte and the object size - const auto N = j.m_value.object->size(); - if (N <= 15) - { - // fixmap - write_number(static_cast(0x80 | (N & 0xF))); - } - else if (N <= (std::numeric_limits::max)()) - { - // map 16 - oa->write_character(to_char_type(0xDE)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - // map 32 - oa->write_character(to_char_type(0xDF)); - write_number(static_cast(N)); - } - - // step 2: write each element - for (const auto& el : *j.m_value.object) - { - write_msgpack(el.first); - write_msgpack(el.second); - } - break; - } - - case value_t::discarded: - default: - break; - } - } - - /*! - @param[in] j JSON value to serialize - @param[in] use_count whether to use '#' prefixes (optimized format) - @param[in] use_type whether to use '$' prefixes (optimized format) - @param[in] add_prefix whether prefixes need to be used for this value - */ - void write_ubjson(const BasicJsonType& j, const bool use_count, - const bool use_type, const bool add_prefix = true) - { - switch (j.type()) - { - case value_t::null: - { - if (add_prefix) - { - oa->write_character(to_char_type('Z')); - } - break; - } - - case value_t::boolean: - { - if (add_prefix) - { - oa->write_character(j.m_value.boolean - ? to_char_type('T') - : to_char_type('F')); - } - break; - } - - case value_t::number_integer: - { - write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix); - break; - } - - case value_t::number_unsigned: - { - write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix); - break; - } - - case value_t::number_float: - { - write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix); - break; - } - - case value_t::string: - { - if (add_prefix) - { - oa->write_character(to_char_type('S')); - } - write_number_with_ubjson_prefix(j.m_value.string->size(), true); - oa->write_characters( - reinterpret_cast(j.m_value.string->c_str()), - j.m_value.string->size()); - break; - } - - case value_t::array: - { - if (add_prefix) - { - oa->write_character(to_char_type('[')); - } - - bool prefix_required = true; - if (use_type && !j.m_value.array->empty()) - { - JSON_ASSERT(use_count); - const CharType first_prefix = ubjson_prefix(j.front()); - const bool same_prefix = std::all_of(j.begin() + 1, j.end(), - [this, first_prefix](const BasicJsonType & v) - { - return ubjson_prefix(v) == first_prefix; - }); - - if (same_prefix) - { - prefix_required = false; - oa->write_character(to_char_type('$')); - oa->write_character(first_prefix); - } - } - - if (use_count) - { - oa->write_character(to_char_type('#')); - write_number_with_ubjson_prefix(j.m_value.array->size(), true); - } - - for (const auto& el : *j.m_value.array) - { - write_ubjson(el, use_count, use_type, prefix_required); - } - - if (!use_count) - { - oa->write_character(to_char_type(']')); - } - - break; - } - - case value_t::binary: - { - if (add_prefix) - { - oa->write_character(to_char_type('[')); - } - - if (use_type && !j.m_value.binary->empty()) - { - JSON_ASSERT(use_count); - oa->write_character(to_char_type('$')); - oa->write_character('U'); - } - - if (use_count) - { - oa->write_character(to_char_type('#')); - write_number_with_ubjson_prefix(j.m_value.binary->size(), true); - } - - if (use_type) - { - oa->write_characters( - reinterpret_cast(j.m_value.binary->data()), - j.m_value.binary->size()); - } - else - { - for (size_t i = 0; i < j.m_value.binary->size(); ++i) - { - oa->write_character(to_char_type('U')); - oa->write_character(j.m_value.binary->data()[i]); - } - } - - if (!use_count) - { - oa->write_character(to_char_type(']')); - } - - break; - } - - case value_t::object: - { - if (add_prefix) - { - oa->write_character(to_char_type('{')); - } - - bool prefix_required = true; - if (use_type && !j.m_value.object->empty()) - { - JSON_ASSERT(use_count); - const CharType first_prefix = ubjson_prefix(j.front()); - const bool same_prefix = std::all_of(j.begin(), j.end(), - [this, first_prefix](const BasicJsonType & v) - { - return ubjson_prefix(v) == first_prefix; - }); - - if (same_prefix) - { - prefix_required = false; - oa->write_character(to_char_type('$')); - oa->write_character(first_prefix); - } - } - - if (use_count) - { - oa->write_character(to_char_type('#')); - write_number_with_ubjson_prefix(j.m_value.object->size(), true); - } - - for (const auto& el : *j.m_value.object) - { - write_number_with_ubjson_prefix(el.first.size(), true); - oa->write_characters( - reinterpret_cast(el.first.c_str()), - el.first.size()); - write_ubjson(el.second, use_count, use_type, prefix_required); - } - - if (!use_count) - { - oa->write_character(to_char_type('}')); - } - - break; - } - - case value_t::discarded: - default: - break; - } - } - - private: - ////////// - // BSON // - ////////// - - /*! - @return The size of a BSON document entry header, including the id marker - and the entry name size (and its null-terminator). - */ - static std::size_t calc_bson_entry_header_size(const string_t& name, const BasicJsonType& j) - { - const auto it = name.find(static_cast(0)); - if (JSON_HEDLEY_UNLIKELY(it != BasicJsonType::string_t::npos)) - { - JSON_THROW(out_of_range::create(409, "BSON key cannot contain code point U+0000 (at byte " + std::to_string(it) + ")", j)); - static_cast(j); - } - - return /*id*/ 1ul + name.size() + /*zero-terminator*/1u; - } - - /*! - @brief Writes the given @a element_type and @a name to the output adapter - */ - void write_bson_entry_header(const string_t& name, - const std::uint8_t element_type) - { - oa->write_character(to_char_type(element_type)); // boolean - oa->write_characters( - reinterpret_cast(name.c_str()), - name.size() + 1u); - } - - /*! - @brief Writes a BSON element with key @a name and boolean value @a value - */ - void write_bson_boolean(const string_t& name, - const bool value) - { - write_bson_entry_header(name, 0x08); - oa->write_character(value ? to_char_type(0x01) : to_char_type(0x00)); - } - - /*! - @brief Writes a BSON element with key @a name and double value @a value - */ - void write_bson_double(const string_t& name, - const double value) - { - write_bson_entry_header(name, 0x01); - write_number(value); - } - - /*! - @return The size of the BSON-encoded string in @a value - */ - static std::size_t calc_bson_string_size(const string_t& value) - { - return sizeof(std::int32_t) + value.size() + 1ul; - } - - /*! - @brief Writes a BSON element with key @a name and string value @a value - */ - void write_bson_string(const string_t& name, - const string_t& value) - { - write_bson_entry_header(name, 0x02); - - write_number(static_cast(value.size() + 1ul)); - oa->write_characters( - reinterpret_cast(value.c_str()), - value.size() + 1); - } - - /*! - @brief Writes a BSON element with key @a name and null value - */ - void write_bson_null(const string_t& name) - { - write_bson_entry_header(name, 0x0A); - } - - /*! - @return The size of the BSON-encoded integer @a value - */ - static std::size_t calc_bson_integer_size(const std::int64_t value) - { - return (std::numeric_limits::min)() <= value && value <= (std::numeric_limits::max)() - ? sizeof(std::int32_t) - : sizeof(std::int64_t); - } - - /*! - @brief Writes a BSON element with key @a name and integer @a value - */ - void write_bson_integer(const string_t& name, - const std::int64_t value) - { - if ((std::numeric_limits::min)() <= value && value <= (std::numeric_limits::max)()) - { - write_bson_entry_header(name, 0x10); // int32 - write_number(static_cast(value)); - } - else - { - write_bson_entry_header(name, 0x12); // int64 - write_number(static_cast(value)); - } - } - - /*! - @return The size of the BSON-encoded unsigned integer in @a j - */ - static constexpr std::size_t calc_bson_unsigned_size(const std::uint64_t value) noexcept - { - return (value <= static_cast((std::numeric_limits::max)())) - ? sizeof(std::int32_t) - : sizeof(std::int64_t); - } - - /*! - @brief Writes a BSON element with key @a name and unsigned @a value - */ - void write_bson_unsigned(const string_t& name, - const BasicJsonType& j) - { - if (j.m_value.number_unsigned <= static_cast((std::numeric_limits::max)())) - { - write_bson_entry_header(name, 0x10 /* int32 */); - write_number(static_cast(j.m_value.number_unsigned)); - } - else if (j.m_value.number_unsigned <= static_cast((std::numeric_limits::max)())) - { - write_bson_entry_header(name, 0x12 /* int64 */); - write_number(static_cast(j.m_value.number_unsigned)); - } - else - { - JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(j.m_value.number_unsigned) + " cannot be represented by BSON as it does not fit int64", j)); - } - } - - /*! - @brief Writes a BSON element with key @a name and object @a value - */ - void write_bson_object_entry(const string_t& name, - const typename BasicJsonType::object_t& value) - { - write_bson_entry_header(name, 0x03); // object - write_bson_object(value); - } - - /*! - @return The size of the BSON-encoded array @a value - */ - static std::size_t calc_bson_array_size(const typename BasicJsonType::array_t& value) - { - std::size_t array_index = 0ul; - - const std::size_t embedded_document_size = std::accumulate(std::begin(value), std::end(value), static_cast(0), [&array_index](std::size_t result, const typename BasicJsonType::array_t::value_type & el) - { - return result + calc_bson_element_size(std::to_string(array_index++), el); - }); - - return sizeof(std::int32_t) + embedded_document_size + 1ul; - } - - /*! - @return The size of the BSON-encoded binary array @a value - */ - static std::size_t calc_bson_binary_size(const typename BasicJsonType::binary_t& value) - { - return sizeof(std::int32_t) + value.size() + 1ul; - } - - /*! - @brief Writes a BSON element with key @a name and array @a value - */ - void write_bson_array(const string_t& name, - const typename BasicJsonType::array_t& value) - { - write_bson_entry_header(name, 0x04); // array - write_number(static_cast(calc_bson_array_size(value))); - - std::size_t array_index = 0ul; - - for (const auto& el : value) - { - write_bson_element(std::to_string(array_index++), el); - } - - oa->write_character(to_char_type(0x00)); - } - - /*! - @brief Writes a BSON element with key @a name and binary value @a value - */ - void write_bson_binary(const string_t& name, - const binary_t& value) - { - write_bson_entry_header(name, 0x05); - - write_number(static_cast(value.size())); - write_number(value.has_subtype() ? static_cast(value.subtype()) : static_cast(0x00)); - - oa->write_characters(reinterpret_cast(value.data()), value.size()); - } - - /*! - @brief Calculates the size necessary to serialize the JSON value @a j with its @a name - @return The calculated size for the BSON document entry for @a j with the given @a name. - */ - static std::size_t calc_bson_element_size(const string_t& name, - const BasicJsonType& j) - { - const auto header_size = calc_bson_entry_header_size(name, j); - switch (j.type()) - { - case value_t::object: - return header_size + calc_bson_object_size(*j.m_value.object); - - case value_t::array: - return header_size + calc_bson_array_size(*j.m_value.array); - - case value_t::binary: - return header_size + calc_bson_binary_size(*j.m_value.binary); - - case value_t::boolean: - return header_size + 1ul; - - case value_t::number_float: - return header_size + 8ul; - - case value_t::number_integer: - return header_size + calc_bson_integer_size(j.m_value.number_integer); - - case value_t::number_unsigned: - return header_size + calc_bson_unsigned_size(j.m_value.number_unsigned); - - case value_t::string: - return header_size + calc_bson_string_size(*j.m_value.string); - - case value_t::null: - return header_size + 0ul; - - // LCOV_EXCL_START - case value_t::discarded: - default: - JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) - return 0ul; - // LCOV_EXCL_STOP - } - } - - /*! - @brief Serializes the JSON value @a j to BSON and associates it with the - key @a name. - @param name The name to associate with the JSON entity @a j within the - current BSON document - */ - void write_bson_element(const string_t& name, - const BasicJsonType& j) - { - switch (j.type()) - { - case value_t::object: - return write_bson_object_entry(name, *j.m_value.object); - - case value_t::array: - return write_bson_array(name, *j.m_value.array); - - case value_t::binary: - return write_bson_binary(name, *j.m_value.binary); - - case value_t::boolean: - return write_bson_boolean(name, j.m_value.boolean); - - case value_t::number_float: - return write_bson_double(name, j.m_value.number_float); - - case value_t::number_integer: - return write_bson_integer(name, j.m_value.number_integer); - - case value_t::number_unsigned: - return write_bson_unsigned(name, j); - - case value_t::string: - return write_bson_string(name, *j.m_value.string); - - case value_t::null: - return write_bson_null(name); - - // LCOV_EXCL_START - case value_t::discarded: - default: - JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) - return; - // LCOV_EXCL_STOP - } - } - - /*! - @brief Calculates the size of the BSON serialization of the given - JSON-object @a j. - @param[in] value JSON value to serialize - @pre value.type() == value_t::object - */ - static std::size_t calc_bson_object_size(const typename BasicJsonType::object_t& value) - { - std::size_t document_size = std::accumulate(value.begin(), value.end(), static_cast(0), - [](size_t result, const typename BasicJsonType::object_t::value_type & el) - { - return result += calc_bson_element_size(el.first, el.second); - }); - - return sizeof(std::int32_t) + document_size + 1ul; - } - - /*! - @param[in] value JSON value to serialize - @pre value.type() == value_t::object - */ - void write_bson_object(const typename BasicJsonType::object_t& value) - { - write_number(static_cast(calc_bson_object_size(value))); - - for (const auto& el : value) - { - write_bson_element(el.first, el.second); - } - - oa->write_character(to_char_type(0x00)); - } - - ////////// - // CBOR // - ////////// - - static constexpr CharType get_cbor_float_prefix(float /*unused*/) - { - return to_char_type(0xFA); // Single-Precision Float - } - - static constexpr CharType get_cbor_float_prefix(double /*unused*/) - { - return to_char_type(0xFB); // Double-Precision Float - } - - ///////////// - // MsgPack // - ///////////// - - static constexpr CharType get_msgpack_float_prefix(float /*unused*/) - { - return to_char_type(0xCA); // float 32 - } - - static constexpr CharType get_msgpack_float_prefix(double /*unused*/) - { - return to_char_type(0xCB); // float 64 - } - - //////////// - // UBJSON // - //////////// - - // UBJSON: write number (floating point) - template::value, int>::type = 0> - void write_number_with_ubjson_prefix(const NumberType n, - const bool add_prefix) - { - if (add_prefix) - { - oa->write_character(get_ubjson_float_prefix(n)); - } - write_number(n); - } - - // UBJSON: write number (unsigned integer) - template::value, int>::type = 0> - void write_number_with_ubjson_prefix(const NumberType n, - const bool add_prefix) - { - if (n <= static_cast((std::numeric_limits::max)())) - { - if (add_prefix) - { - oa->write_character(to_char_type('i')); // int8 - } - write_number(static_cast(n)); - } - else if (n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(to_char_type('U')); // uint8 - } - write_number(static_cast(n)); - } - else if (n <= static_cast((std::numeric_limits::max)())) - { - if (add_prefix) - { - oa->write_character(to_char_type('I')); // int16 - } - write_number(static_cast(n)); - } - else if (n <= static_cast((std::numeric_limits::max)())) - { - if (add_prefix) - { - oa->write_character(to_char_type('l')); // int32 - } - write_number(static_cast(n)); - } - else if (n <= static_cast((std::numeric_limits::max)())) - { - if (add_prefix) - { - oa->write_character(to_char_type('L')); // int64 - } - write_number(static_cast(n)); - } - else - { - if (add_prefix) - { - oa->write_character(to_char_type('H')); // high-precision number - } - - const auto number = BasicJsonType(n).dump(); - write_number_with_ubjson_prefix(number.size(), true); - for (std::size_t i = 0; i < number.size(); ++i) - { - oa->write_character(to_char_type(static_cast(number[i]))); - } - } - } - - // UBJSON: write number (signed integer) - template < typename NumberType, typename std::enable_if < - std::is_signed::value&& - !std::is_floating_point::value, int >::type = 0 > - void write_number_with_ubjson_prefix(const NumberType n, - const bool add_prefix) - { - if ((std::numeric_limits::min)() <= n && n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(to_char_type('i')); // int8 - } - write_number(static_cast(n)); - } - else if (static_cast((std::numeric_limits::min)()) <= n && n <= static_cast((std::numeric_limits::max)())) - { - if (add_prefix) - { - oa->write_character(to_char_type('U')); // uint8 - } - write_number(static_cast(n)); - } - else if ((std::numeric_limits::min)() <= n && n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(to_char_type('I')); // int16 - } - write_number(static_cast(n)); - } - else if ((std::numeric_limits::min)() <= n && n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(to_char_type('l')); // int32 - } - write_number(static_cast(n)); - } - else if ((std::numeric_limits::min)() <= n && n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(to_char_type('L')); // int64 - } - write_number(static_cast(n)); - } - // LCOV_EXCL_START - else - { - if (add_prefix) - { - oa->write_character(to_char_type('H')); // high-precision number - } - - const auto number = BasicJsonType(n).dump(); - write_number_with_ubjson_prefix(number.size(), true); - for (std::size_t i = 0; i < number.size(); ++i) - { - oa->write_character(to_char_type(static_cast(number[i]))); - } - } - // LCOV_EXCL_STOP - } - - /*! - @brief determine the type prefix of container values - */ - CharType ubjson_prefix(const BasicJsonType& j) const noexcept - { - switch (j.type()) - { - case value_t::null: - return 'Z'; - - case value_t::boolean: - return j.m_value.boolean ? 'T' : 'F'; - - case value_t::number_integer: - { - if ((std::numeric_limits::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits::max)()) - { - return 'i'; - } - if ((std::numeric_limits::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits::max)()) - { - return 'U'; - } - if ((std::numeric_limits::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits::max)()) - { - return 'I'; - } - if ((std::numeric_limits::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits::max)()) - { - return 'l'; - } - if ((std::numeric_limits::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits::max)()) - { - return 'L'; - } - // anything else is treated as high-precision number - return 'H'; // LCOV_EXCL_LINE - } - - case value_t::number_unsigned: - { - if (j.m_value.number_unsigned <= static_cast((std::numeric_limits::max)())) - { - return 'i'; - } - if (j.m_value.number_unsigned <= static_cast((std::numeric_limits::max)())) - { - return 'U'; - } - if (j.m_value.number_unsigned <= static_cast((std::numeric_limits::max)())) - { - return 'I'; - } - if (j.m_value.number_unsigned <= static_cast((std::numeric_limits::max)())) - { - return 'l'; - } - if (j.m_value.number_unsigned <= static_cast((std::numeric_limits::max)())) - { - return 'L'; - } - // anything else is treated as high-precision number - return 'H'; // LCOV_EXCL_LINE - } - - case value_t::number_float: - return get_ubjson_float_prefix(j.m_value.number_float); - - case value_t::string: - return 'S'; - - case value_t::array: // fallthrough - case value_t::binary: - return '['; - - case value_t::object: - return '{'; - - case value_t::discarded: - default: // discarded values - return 'N'; - } - } - - static constexpr CharType get_ubjson_float_prefix(float /*unused*/) - { - return 'd'; // float 32 - } - - static constexpr CharType get_ubjson_float_prefix(double /*unused*/) - { - return 'D'; // float 64 - } - - /////////////////////// - // Utility functions // - /////////////////////// - - /* - @brief write a number to output input - @param[in] n number of type @a NumberType - @tparam NumberType the type of the number - @tparam OutputIsLittleEndian Set to true if output data is - required to be little endian - - @note This function needs to respect the system's endianness, because bytes - in CBOR, MessagePack, and UBJSON are stored in network order (big - endian) and therefore need reordering on little endian systems. - */ - template - void write_number(const NumberType n) - { - // step 1: write number to array of length NumberType - std::array vec{}; - std::memcpy(vec.data(), &n, sizeof(NumberType)); - - // step 2: write array to output (with possible reordering) - if (is_little_endian != OutputIsLittleEndian) - { - // reverse byte order prior to conversion if necessary - std::reverse(vec.begin(), vec.end()); - } - - oa->write_characters(vec.data(), sizeof(NumberType)); - } - - void write_compact_float(const number_float_t n, detail::input_format_t format) - { -#ifdef __GNUC__ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wfloat-equal" -#endif - if (static_cast(n) >= static_cast(std::numeric_limits::lowest()) && - static_cast(n) <= static_cast((std::numeric_limits::max)()) && - static_cast(static_cast(n)) == static_cast(n)) - { - oa->write_character(format == detail::input_format_t::cbor - ? get_cbor_float_prefix(static_cast(n)) - : get_msgpack_float_prefix(static_cast(n))); - write_number(static_cast(n)); - } - else - { - oa->write_character(format == detail::input_format_t::cbor - ? get_cbor_float_prefix(n) - : get_msgpack_float_prefix(n)); - write_number(n); - } -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#endif - } - - public: - // The following to_char_type functions are implement the conversion - // between uint8_t and CharType. In case CharType is not unsigned, - // such a conversion is required to allow values greater than 128. - // See for a discussion. - template < typename C = CharType, - enable_if_t < std::is_signed::value && std::is_signed::value > * = nullptr > - static constexpr CharType to_char_type(std::uint8_t x) noexcept - { - return *reinterpret_cast(&x); - } - - template < typename C = CharType, - enable_if_t < std::is_signed::value && std::is_unsigned::value > * = nullptr > - static CharType to_char_type(std::uint8_t x) noexcept - { - static_assert(sizeof(std::uint8_t) == sizeof(CharType), "size of CharType must be equal to std::uint8_t"); - static_assert(std::is_trivial::value, "CharType must be trivial"); - CharType result; - std::memcpy(&result, &x, sizeof(x)); - return result; - } - - template::value>* = nullptr> - static constexpr CharType to_char_type(std::uint8_t x) noexcept - { - return x; - } - - template < typename InputCharType, typename C = CharType, - enable_if_t < - std::is_signed::value && - std::is_signed::value && - std::is_same::type>::value - > * = nullptr > - static constexpr CharType to_char_type(InputCharType x) noexcept - { - return x; - } - - private: - /// whether we can assume little endianness - const bool is_little_endian = little_endianness(); - - /// the output - output_adapter_t oa = nullptr; -}; -} // namespace detail -} // namespace nlohmann - -// #include - -// #include - - -#include // reverse, remove, fill, find, none_of -#include // array -#include // localeconv, lconv -#include // labs, isfinite, isnan, signbit -#include // size_t, ptrdiff_t -#include // uint8_t -#include // snprintf -#include // numeric_limits -#include // string, char_traits -#include // setfill, setw -#include // stringstream -#include // is_same -#include // move - -// #include - - -#include // array -#include // signbit, isfinite -#include // intN_t, uintN_t -#include // memcpy, memmove -#include // numeric_limits -#include // conditional - -// #include - - -namespace nlohmann -{ -namespace detail -{ - -/*! -@brief implements the Grisu2 algorithm for binary to decimal floating-point -conversion. - -This implementation is a slightly modified version of the reference -implementation which may be obtained from -http://florian.loitsch.com/publications (bench.tar.gz). - -The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch. - -For a detailed description of the algorithm see: - -[1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with - Integers", Proceedings of the ACM SIGPLAN 2010 Conference on Programming - Language Design and Implementation, PLDI 2010 -[2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", - Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language - Design and Implementation, PLDI 1996 -*/ -namespace dtoa_impl -{ - -template -Target reinterpret_bits(const Source source) -{ - static_assert(sizeof(Target) == sizeof(Source), "size mismatch"); - - Target target; - std::memcpy(&target, &source, sizeof(Source)); - return target; -} - -struct diyfp // f * 2^e -{ - static constexpr int kPrecision = 64; // = q - - std::uint64_t f = 0; - int e = 0; - - constexpr diyfp(std::uint64_t f_, int e_) noexcept : f(f_), e(e_) {} - - /*! - @brief returns x - y - @pre x.e == y.e and x.f >= y.f - */ - static diyfp sub(const diyfp& x, const diyfp& y) noexcept - { - JSON_ASSERT(x.e == y.e); - JSON_ASSERT(x.f >= y.f); - - return {x.f - y.f, x.e}; - } - - /*! - @brief returns x * y - @note The result is rounded. (Only the upper q bits are returned.) - */ - static diyfp mul(const diyfp& x, const diyfp& y) noexcept - { - static_assert(kPrecision == 64, "internal error"); - - // Computes: - // f = round((x.f * y.f) / 2^q) - // e = x.e + y.e + q - - // Emulate the 64-bit * 64-bit multiplication: - // - // p = u * v - // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi) - // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi ) - // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 ) - // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 ) - // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3) - // = (p0_lo ) + 2^32 (Q ) + 2^64 (H ) - // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H ) - // - // (Since Q might be larger than 2^32 - 1) - // - // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H) - // - // (Q_hi + H does not overflow a 64-bit int) - // - // = p_lo + 2^64 p_hi - - const std::uint64_t u_lo = x.f & 0xFFFFFFFFu; - const std::uint64_t u_hi = x.f >> 32u; - const std::uint64_t v_lo = y.f & 0xFFFFFFFFu; - const std::uint64_t v_hi = y.f >> 32u; - - const std::uint64_t p0 = u_lo * v_lo; - const std::uint64_t p1 = u_lo * v_hi; - const std::uint64_t p2 = u_hi * v_lo; - const std::uint64_t p3 = u_hi * v_hi; - - const std::uint64_t p0_hi = p0 >> 32u; - const std::uint64_t p1_lo = p1 & 0xFFFFFFFFu; - const std::uint64_t p1_hi = p1 >> 32u; - const std::uint64_t p2_lo = p2 & 0xFFFFFFFFu; - const std::uint64_t p2_hi = p2 >> 32u; - - std::uint64_t Q = p0_hi + p1_lo + p2_lo; - - // The full product might now be computed as - // - // p_hi = p3 + p2_hi + p1_hi + (Q >> 32) - // p_lo = p0_lo + (Q << 32) - // - // But in this particular case here, the full p_lo is not required. - // Effectively we only need to add the highest bit in p_lo to p_hi (and - // Q_hi + 1 does not overflow). - - Q += std::uint64_t{1} << (64u - 32u - 1u); // round, ties up - - const std::uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32u); - - return {h, x.e + y.e + 64}; - } - - /*! - @brief normalize x such that the significand is >= 2^(q-1) - @pre x.f != 0 - */ - static diyfp normalize(diyfp x) noexcept - { - JSON_ASSERT(x.f != 0); - - while ((x.f >> 63u) == 0) - { - x.f <<= 1u; - x.e--; - } - - return x; - } - - /*! - @brief normalize x such that the result has the exponent E - @pre e >= x.e and the upper e - x.e bits of x.f must be zero. - */ - static diyfp normalize_to(const diyfp& x, const int target_exponent) noexcept - { - const int delta = x.e - target_exponent; - - JSON_ASSERT(delta >= 0); - JSON_ASSERT(((x.f << delta) >> delta) == x.f); - - return {x.f << delta, target_exponent}; - } -}; - -struct boundaries -{ - diyfp w; - diyfp minus; - diyfp plus; -}; - -/*! -Compute the (normalized) diyfp representing the input number 'value' and its -boundaries. - -@pre value must be finite and positive -*/ -template -boundaries compute_boundaries(FloatType value) -{ - JSON_ASSERT(std::isfinite(value)); - JSON_ASSERT(value > 0); - - // Convert the IEEE representation into a diyfp. - // - // If v is denormal: - // value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1)) - // If v is normalized: - // value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1)) - - static_assert(std::numeric_limits::is_iec559, - "internal error: dtoa_short requires an IEEE-754 floating-point implementation"); - - constexpr int kPrecision = std::numeric_limits::digits; // = p (includes the hidden bit) - constexpr int kBias = std::numeric_limits::max_exponent - 1 + (kPrecision - 1); - constexpr int kMinExp = 1 - kBias; - constexpr std::uint64_t kHiddenBit = std::uint64_t{1} << (kPrecision - 1); // = 2^(p-1) - - using bits_type = typename std::conditional::type; - - const auto bits = static_cast(reinterpret_bits(value)); - const std::uint64_t E = bits >> (kPrecision - 1); - const std::uint64_t F = bits & (kHiddenBit - 1); - - const bool is_denormal = E == 0; - const diyfp v = is_denormal - ? diyfp(F, kMinExp) - : diyfp(F + kHiddenBit, static_cast(E) - kBias); - - // Compute the boundaries m- and m+ of the floating-point value - // v = f * 2^e. - // - // Determine v- and v+, the floating-point predecessor and successor if v, - // respectively. - // - // v- = v - 2^e if f != 2^(p-1) or e == e_min (A) - // = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B) - // - // v+ = v + 2^e - // - // Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_ - // between m- and m+ round to v, regardless of how the input rounding - // algorithm breaks ties. - // - // ---+-------------+-------------+-------------+-------------+--- (A) - // v- m- v m+ v+ - // - // -----------------+------+------+-------------+-------------+--- (B) - // v- m- v m+ v+ - - const bool lower_boundary_is_closer = F == 0 && E > 1; - const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1); - const diyfp m_minus = lower_boundary_is_closer - ? diyfp(4 * v.f - 1, v.e - 2) // (B) - : diyfp(2 * v.f - 1, v.e - 1); // (A) - - // Determine the normalized w+ = m+. - const diyfp w_plus = diyfp::normalize(m_plus); - - // Determine w- = m- such that e_(w-) = e_(w+). - const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e); - - return {diyfp::normalize(v), w_minus, w_plus}; -} - -// Given normalized diyfp w, Grisu needs to find a (normalized) cached -// power-of-ten c, such that the exponent of the product c * w = f * 2^e lies -// within a certain range [alpha, gamma] (Definition 3.2 from [1]) -// -// alpha <= e = e_c + e_w + q <= gamma -// -// or -// -// f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q -// <= f_c * f_w * 2^gamma -// -// Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies -// -// 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma -// -// or -// -// 2^(q - 2 + alpha) <= c * w < 2^(q + gamma) -// -// The choice of (alpha,gamma) determines the size of the table and the form of -// the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well -// in practice: -// -// The idea is to cut the number c * w = f * 2^e into two parts, which can be -// processed independently: An integral part p1, and a fractional part p2: -// -// f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e -// = (f div 2^-e) + (f mod 2^-e) * 2^e -// = p1 + p2 * 2^e -// -// The conversion of p1 into decimal form requires a series of divisions and -// modulos by (a power of) 10. These operations are faster for 32-bit than for -// 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be -// achieved by choosing -// -// -e >= 32 or e <= -32 := gamma -// -// In order to convert the fractional part -// -// p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ... -// -// into decimal form, the fraction is repeatedly multiplied by 10 and the digits -// d[-i] are extracted in order: -// -// (10 * p2) div 2^-e = d[-1] -// (10 * p2) mod 2^-e = d[-2] / 10^1 + ... -// -// The multiplication by 10 must not overflow. It is sufficient to choose -// -// 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64. -// -// Since p2 = f mod 2^-e < 2^-e, -// -// -e <= 60 or e >= -60 := alpha - -constexpr int kAlpha = -60; -constexpr int kGamma = -32; - -struct cached_power // c = f * 2^e ~= 10^k -{ - std::uint64_t f; - int e; - int k; -}; - -/*! -For a normalized diyfp w = f * 2^e, this function returns a (normalized) cached -power-of-ten c = f_c * 2^e_c, such that the exponent of the product w * c -satisfies (Definition 3.2 from [1]) - - alpha <= e_c + e + q <= gamma. -*/ -inline cached_power get_cached_power_for_binary_exponent(int e) -{ - // Now - // - // alpha <= e_c + e + q <= gamma (1) - // ==> f_c * 2^alpha <= c * 2^e * 2^q - // - // and since the c's are normalized, 2^(q-1) <= f_c, - // - // ==> 2^(q - 1 + alpha) <= c * 2^(e + q) - // ==> 2^(alpha - e - 1) <= c - // - // If c were an exact power of ten, i.e. c = 10^k, one may determine k as - // - // k = ceil( log_10( 2^(alpha - e - 1) ) ) - // = ceil( (alpha - e - 1) * log_10(2) ) - // - // From the paper: - // "In theory the result of the procedure could be wrong since c is rounded, - // and the computation itself is approximated [...]. In practice, however, - // this simple function is sufficient." - // - // For IEEE double precision floating-point numbers converted into - // normalized diyfp's w = f * 2^e, with q = 64, - // - // e >= -1022 (min IEEE exponent) - // -52 (p - 1) - // -52 (p - 1, possibly normalize denormal IEEE numbers) - // -11 (normalize the diyfp) - // = -1137 - // - // and - // - // e <= +1023 (max IEEE exponent) - // -52 (p - 1) - // -11 (normalize the diyfp) - // = 960 - // - // This binary exponent range [-1137,960] results in a decimal exponent - // range [-307,324]. One does not need to store a cached power for each - // k in this range. For each such k it suffices to find a cached power - // such that the exponent of the product lies in [alpha,gamma]. - // This implies that the difference of the decimal exponents of adjacent - // table entries must be less than or equal to - // - // floor( (gamma - alpha) * log_10(2) ) = 8. - // - // (A smaller distance gamma-alpha would require a larger table.) - - // NB: - // Actually this function returns c, such that -60 <= e_c + e + 64 <= -34. - - constexpr int kCachedPowersMinDecExp = -300; - constexpr int kCachedPowersDecStep = 8; - - static constexpr std::array kCachedPowers = - { - { - { 0xAB70FE17C79AC6CA, -1060, -300 }, - { 0xFF77B1FCBEBCDC4F, -1034, -292 }, - { 0xBE5691EF416BD60C, -1007, -284 }, - { 0x8DD01FAD907FFC3C, -980, -276 }, - { 0xD3515C2831559A83, -954, -268 }, - { 0x9D71AC8FADA6C9B5, -927, -260 }, - { 0xEA9C227723EE8BCB, -901, -252 }, - { 0xAECC49914078536D, -874, -244 }, - { 0x823C12795DB6CE57, -847, -236 }, - { 0xC21094364DFB5637, -821, -228 }, - { 0x9096EA6F3848984F, -794, -220 }, - { 0xD77485CB25823AC7, -768, -212 }, - { 0xA086CFCD97BF97F4, -741, -204 }, - { 0xEF340A98172AACE5, -715, -196 }, - { 0xB23867FB2A35B28E, -688, -188 }, - { 0x84C8D4DFD2C63F3B, -661, -180 }, - { 0xC5DD44271AD3CDBA, -635, -172 }, - { 0x936B9FCEBB25C996, -608, -164 }, - { 0xDBAC6C247D62A584, -582, -156 }, - { 0xA3AB66580D5FDAF6, -555, -148 }, - { 0xF3E2F893DEC3F126, -529, -140 }, - { 0xB5B5ADA8AAFF80B8, -502, -132 }, - { 0x87625F056C7C4A8B, -475, -124 }, - { 0xC9BCFF6034C13053, -449, -116 }, - { 0x964E858C91BA2655, -422, -108 }, - { 0xDFF9772470297EBD, -396, -100 }, - { 0xA6DFBD9FB8E5B88F, -369, -92 }, - { 0xF8A95FCF88747D94, -343, -84 }, - { 0xB94470938FA89BCF, -316, -76 }, - { 0x8A08F0F8BF0F156B, -289, -68 }, - { 0xCDB02555653131B6, -263, -60 }, - { 0x993FE2C6D07B7FAC, -236, -52 }, - { 0xE45C10C42A2B3B06, -210, -44 }, - { 0xAA242499697392D3, -183, -36 }, - { 0xFD87B5F28300CA0E, -157, -28 }, - { 0xBCE5086492111AEB, -130, -20 }, - { 0x8CBCCC096F5088CC, -103, -12 }, - { 0xD1B71758E219652C, -77, -4 }, - { 0x9C40000000000000, -50, 4 }, - { 0xE8D4A51000000000, -24, 12 }, - { 0xAD78EBC5AC620000, 3, 20 }, - { 0x813F3978F8940984, 30, 28 }, - { 0xC097CE7BC90715B3, 56, 36 }, - { 0x8F7E32CE7BEA5C70, 83, 44 }, - { 0xD5D238A4ABE98068, 109, 52 }, - { 0x9F4F2726179A2245, 136, 60 }, - { 0xED63A231D4C4FB27, 162, 68 }, - { 0xB0DE65388CC8ADA8, 189, 76 }, - { 0x83C7088E1AAB65DB, 216, 84 }, - { 0xC45D1DF942711D9A, 242, 92 }, - { 0x924D692CA61BE758, 269, 100 }, - { 0xDA01EE641A708DEA, 295, 108 }, - { 0xA26DA3999AEF774A, 322, 116 }, - { 0xF209787BB47D6B85, 348, 124 }, - { 0xB454E4A179DD1877, 375, 132 }, - { 0x865B86925B9BC5C2, 402, 140 }, - { 0xC83553C5C8965D3D, 428, 148 }, - { 0x952AB45CFA97A0B3, 455, 156 }, - { 0xDE469FBD99A05FE3, 481, 164 }, - { 0xA59BC234DB398C25, 508, 172 }, - { 0xF6C69A72A3989F5C, 534, 180 }, - { 0xB7DCBF5354E9BECE, 561, 188 }, - { 0x88FCF317F22241E2, 588, 196 }, - { 0xCC20CE9BD35C78A5, 614, 204 }, - { 0x98165AF37B2153DF, 641, 212 }, - { 0xE2A0B5DC971F303A, 667, 220 }, - { 0xA8D9D1535CE3B396, 694, 228 }, - { 0xFB9B7CD9A4A7443C, 720, 236 }, - { 0xBB764C4CA7A44410, 747, 244 }, - { 0x8BAB8EEFB6409C1A, 774, 252 }, - { 0xD01FEF10A657842C, 800, 260 }, - { 0x9B10A4E5E9913129, 827, 268 }, - { 0xE7109BFBA19C0C9D, 853, 276 }, - { 0xAC2820D9623BF429, 880, 284 }, - { 0x80444B5E7AA7CF85, 907, 292 }, - { 0xBF21E44003ACDD2D, 933, 300 }, - { 0x8E679C2F5E44FF8F, 960, 308 }, - { 0xD433179D9C8CB841, 986, 316 }, - { 0x9E19DB92B4E31BA9, 1013, 324 }, - } - }; - - // This computation gives exactly the same results for k as - // k = ceil((kAlpha - e - 1) * 0.30102999566398114) - // for |e| <= 1500, but doesn't require floating-point operations. - // NB: log_10(2) ~= 78913 / 2^18 - JSON_ASSERT(e >= -1500); - JSON_ASSERT(e <= 1500); - const int f = kAlpha - e - 1; - const int k = (f * 78913) / (1 << 18) + static_cast(f > 0); - - const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep; - JSON_ASSERT(index >= 0); - JSON_ASSERT(static_cast(index) < kCachedPowers.size()); - - const cached_power cached = kCachedPowers[static_cast(index)]; - JSON_ASSERT(kAlpha <= cached.e + e + 64); - JSON_ASSERT(kGamma >= cached.e + e + 64); - - return cached; -} - -/*! -For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k. -For n == 0, returns 1 and sets pow10 := 1. -*/ -inline int find_largest_pow10(const std::uint32_t n, std::uint32_t& pow10) -{ - // LCOV_EXCL_START - if (n >= 1000000000) - { - pow10 = 1000000000; - return 10; - } - // LCOV_EXCL_STOP - if (n >= 100000000) - { - pow10 = 100000000; - return 9; - } - if (n >= 10000000) - { - pow10 = 10000000; - return 8; - } - if (n >= 1000000) - { - pow10 = 1000000; - return 7; - } - if (n >= 100000) - { - pow10 = 100000; - return 6; - } - if (n >= 10000) - { - pow10 = 10000; - return 5; - } - if (n >= 1000) - { - pow10 = 1000; - return 4; - } - if (n >= 100) - { - pow10 = 100; - return 3; - } - if (n >= 10) - { - pow10 = 10; - return 2; - } - - pow10 = 1; - return 1; -} - -inline void grisu2_round(char* buf, int len, std::uint64_t dist, std::uint64_t delta, - std::uint64_t rest, std::uint64_t ten_k) -{ - JSON_ASSERT(len >= 1); - JSON_ASSERT(dist <= delta); - JSON_ASSERT(rest <= delta); - JSON_ASSERT(ten_k > 0); - - // <--------------------------- delta ----> - // <---- dist ---------> - // --------------[------------------+-------------------]-------------- - // M- w M+ - // - // ten_k - // <------> - // <---- rest ----> - // --------------[------------------+----+--------------]-------------- - // w V - // = buf * 10^k - // - // ten_k represents a unit-in-the-last-place in the decimal representation - // stored in buf. - // Decrement buf by ten_k while this takes buf closer to w. - - // The tests are written in this order to avoid overflow in unsigned - // integer arithmetic. - - while (rest < dist - && delta - rest >= ten_k - && (rest + ten_k < dist || dist - rest > rest + ten_k - dist)) - { - JSON_ASSERT(buf[len - 1] != '0'); - buf[len - 1]--; - rest += ten_k; - } -} - -/*! -Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+. -M- and M+ must be normalized and share the same exponent -60 <= e <= -32. -*/ -inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, - diyfp M_minus, diyfp w, diyfp M_plus) -{ - static_assert(kAlpha >= -60, "internal error"); - static_assert(kGamma <= -32, "internal error"); - - // Generates the digits (and the exponent) of a decimal floating-point - // number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's - // w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma. - // - // <--------------------------- delta ----> - // <---- dist ---------> - // --------------[------------------+-------------------]-------------- - // M- w M+ - // - // Grisu2 generates the digits of M+ from left to right and stops as soon as - // V is in [M-,M+]. - - JSON_ASSERT(M_plus.e >= kAlpha); - JSON_ASSERT(M_plus.e <= kGamma); - - std::uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e) - std::uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e) - - // Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0): - // - // M+ = f * 2^e - // = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e - // = ((p1 ) * 2^-e + (p2 )) * 2^e - // = p1 + p2 * 2^e - - const diyfp one(std::uint64_t{1} << -M_plus.e, M_plus.e); - - auto p1 = static_cast(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.) - std::uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e - - // 1) - // - // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0] - - JSON_ASSERT(p1 > 0); - - std::uint32_t pow10{}; - const int k = find_largest_pow10(p1, pow10); - - // 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1) - // - // p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1)) - // = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1)) - // - // M+ = p1 + p2 * 2^e - // = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e - // = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e - // = d[k-1] * 10^(k-1) + ( rest) * 2^e - // - // Now generate the digits d[n] of p1 from left to right (n = k-1,...,0) - // - // p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0] - // - // but stop as soon as - // - // rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e - - int n = k; - while (n > 0) - { - // Invariants: - // M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k) - // pow10 = 10^(n-1) <= p1 < 10^n - // - const std::uint32_t d = p1 / pow10; // d = p1 div 10^(n-1) - const std::uint32_t r = p1 % pow10; // r = p1 mod 10^(n-1) - // - // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e - // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e) - // - JSON_ASSERT(d <= 9); - buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d - // - // M+ = buffer * 10^(n-1) + (r + p2 * 2^e) - // - p1 = r; - n--; - // - // M+ = buffer * 10^n + (p1 + p2 * 2^e) - // pow10 = 10^n - // - - // Now check if enough digits have been generated. - // Compute - // - // p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e - // - // Note: - // Since rest and delta share the same exponent e, it suffices to - // compare the significands. - const std::uint64_t rest = (std::uint64_t{p1} << -one.e) + p2; - if (rest <= delta) - { - // V = buffer * 10^n, with M- <= V <= M+. - - decimal_exponent += n; - - // We may now just stop. But instead look if the buffer could be - // decremented to bring V closer to w. - // - // pow10 = 10^n is now 1 ulp in the decimal representation V. - // The rounding procedure works with diyfp's with an implicit - // exponent of e. - // - // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e - // - const std::uint64_t ten_n = std::uint64_t{pow10} << -one.e; - grisu2_round(buffer, length, dist, delta, rest, ten_n); - - return; - } - - pow10 /= 10; - // - // pow10 = 10^(n-1) <= p1 < 10^n - // Invariants restored. - } - - // 2) - // - // The digits of the integral part have been generated: - // - // M+ = d[k-1]...d[1]d[0] + p2 * 2^e - // = buffer + p2 * 2^e - // - // Now generate the digits of the fractional part p2 * 2^e. - // - // Note: - // No decimal point is generated: the exponent is adjusted instead. - // - // p2 actually represents the fraction - // - // p2 * 2^e - // = p2 / 2^-e - // = d[-1] / 10^1 + d[-2] / 10^2 + ... - // - // Now generate the digits d[-m] of p1 from left to right (m = 1,2,...) - // - // p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m - // + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...) - // - // using - // - // 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e) - // = ( d) * 2^-e + ( r) - // - // or - // 10^m * p2 * 2^e = d + r * 2^e - // - // i.e. - // - // M+ = buffer + p2 * 2^e - // = buffer + 10^-m * (d + r * 2^e) - // = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e - // - // and stop as soon as 10^-m * r * 2^e <= delta * 2^e - - JSON_ASSERT(p2 > delta); - - int m = 0; - for (;;) - { - // Invariant: - // M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e - // = buffer * 10^-m + 10^-m * (p2 ) * 2^e - // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e - // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e - // - JSON_ASSERT(p2 <= (std::numeric_limits::max)() / 10); - p2 *= 10; - const std::uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e - const std::uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e - // - // M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e - // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e)) - // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e - // - JSON_ASSERT(d <= 9); - buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d - // - // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e - // - p2 = r; - m++; - // - // M+ = buffer * 10^-m + 10^-m * p2 * 2^e - // Invariant restored. - - // Check if enough digits have been generated. - // - // 10^-m * p2 * 2^e <= delta * 2^e - // p2 * 2^e <= 10^m * delta * 2^e - // p2 <= 10^m * delta - delta *= 10; - dist *= 10; - if (p2 <= delta) - { - break; - } - } - - // V = buffer * 10^-m, with M- <= V <= M+. - - decimal_exponent -= m; - - // 1 ulp in the decimal representation is now 10^-m. - // Since delta and dist are now scaled by 10^m, we need to do the - // same with ulp in order to keep the units in sync. - // - // 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e - // - const std::uint64_t ten_m = one.f; - grisu2_round(buffer, length, dist, delta, p2, ten_m); - - // By construction this algorithm generates the shortest possible decimal - // number (Loitsch, Theorem 6.2) which rounds back to w. - // For an input number of precision p, at least - // - // N = 1 + ceil(p * log_10(2)) - // - // decimal digits are sufficient to identify all binary floating-point - // numbers (Matula, "In-and-Out conversions"). - // This implies that the algorithm does not produce more than N decimal - // digits. - // - // N = 17 for p = 53 (IEEE double precision) - // N = 9 for p = 24 (IEEE single precision) -} - -/*! -v = buf * 10^decimal_exponent -len is the length of the buffer (number of decimal digits) -The buffer must be large enough, i.e. >= max_digits10. -*/ -JSON_HEDLEY_NON_NULL(1) -inline void grisu2(char* buf, int& len, int& decimal_exponent, - diyfp m_minus, diyfp v, diyfp m_plus) -{ - JSON_ASSERT(m_plus.e == m_minus.e); - JSON_ASSERT(m_plus.e == v.e); - - // --------(-----------------------+-----------------------)-------- (A) - // m- v m+ - // - // --------------------(-----------+-----------------------)-------- (B) - // m- v m+ - // - // First scale v (and m- and m+) such that the exponent is in the range - // [alpha, gamma]. - - const cached_power cached = get_cached_power_for_binary_exponent(m_plus.e); - - const diyfp c_minus_k(cached.f, cached.e); // = c ~= 10^-k - - // The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma] - const diyfp w = diyfp::mul(v, c_minus_k); - const diyfp w_minus = diyfp::mul(m_minus, c_minus_k); - const diyfp w_plus = diyfp::mul(m_plus, c_minus_k); - - // ----(---+---)---------------(---+---)---------------(---+---)---- - // w- w w+ - // = c*m- = c*v = c*m+ - // - // diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and - // w+ are now off by a small amount. - // In fact: - // - // w - v * 10^k < 1 ulp - // - // To account for this inaccuracy, add resp. subtract 1 ulp. - // - // --------+---[---------------(---+---)---------------]---+-------- - // w- M- w M+ w+ - // - // Now any number in [M-, M+] (bounds included) will round to w when input, - // regardless of how the input rounding algorithm breaks ties. - // - // And digit_gen generates the shortest possible such number in [M-, M+]. - // Note that this does not mean that Grisu2 always generates the shortest - // possible number in the interval (m-, m+). - const diyfp M_minus(w_minus.f + 1, w_minus.e); - const diyfp M_plus (w_plus.f - 1, w_plus.e ); - - decimal_exponent = -cached.k; // = -(-k) = k - - grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus); -} - -/*! -v = buf * 10^decimal_exponent -len is the length of the buffer (number of decimal digits) -The buffer must be large enough, i.e. >= max_digits10. -*/ -template -JSON_HEDLEY_NON_NULL(1) -void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value) -{ - static_assert(diyfp::kPrecision >= std::numeric_limits::digits + 3, - "internal error: not enough precision"); - - JSON_ASSERT(std::isfinite(value)); - JSON_ASSERT(value > 0); - - // If the neighbors (and boundaries) of 'value' are always computed for double-precision - // numbers, all float's can be recovered using strtod (and strtof). However, the resulting - // decimal representations are not exactly "short". - // - // The documentation for 'std::to_chars' (https://en.cppreference.com/w/cpp/utility/to_chars) - // says "value is converted to a string as if by std::sprintf in the default ("C") locale" - // and since sprintf promotes floats to doubles, I think this is exactly what 'std::to_chars' - // does. - // On the other hand, the documentation for 'std::to_chars' requires that "parsing the - // representation using the corresponding std::from_chars function recovers value exactly". That - // indicates that single precision floating-point numbers should be recovered using - // 'std::strtof'. - // - // NB: If the neighbors are computed for single-precision numbers, there is a single float - // (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision - // value is off by 1 ulp. -#if 0 - const boundaries w = compute_boundaries(static_cast(value)); -#else - const boundaries w = compute_boundaries(value); -#endif - - grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus); -} - -/*! -@brief appends a decimal representation of e to buf -@return a pointer to the element following the exponent. -@pre -1000 < e < 1000 -*/ -JSON_HEDLEY_NON_NULL(1) -JSON_HEDLEY_RETURNS_NON_NULL -inline char* append_exponent(char* buf, int e) -{ - JSON_ASSERT(e > -1000); - JSON_ASSERT(e < 1000); - - if (e < 0) - { - e = -e; - *buf++ = '-'; - } - else - { - *buf++ = '+'; - } - - auto k = static_cast(e); - if (k < 10) - { - // Always print at least two digits in the exponent. - // This is for compatibility with printf("%g"). - *buf++ = '0'; - *buf++ = static_cast('0' + k); - } - else if (k < 100) - { - *buf++ = static_cast('0' + k / 10); - k %= 10; - *buf++ = static_cast('0' + k); - } - else - { - *buf++ = static_cast('0' + k / 100); - k %= 100; - *buf++ = static_cast('0' + k / 10); - k %= 10; - *buf++ = static_cast('0' + k); - } - - return buf; -} - -/*! -@brief prettify v = buf * 10^decimal_exponent - -If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point -notation. Otherwise it will be printed in exponential notation. - -@pre min_exp < 0 -@pre max_exp > 0 -*/ -JSON_HEDLEY_NON_NULL(1) -JSON_HEDLEY_RETURNS_NON_NULL -inline char* format_buffer(char* buf, int len, int decimal_exponent, - int min_exp, int max_exp) -{ - JSON_ASSERT(min_exp < 0); - JSON_ASSERT(max_exp > 0); - - const int k = len; - const int n = len + decimal_exponent; - - // v = buf * 10^(n-k) - // k is the length of the buffer (number of decimal digits) - // n is the position of the decimal point relative to the start of the buffer. - - if (k <= n && n <= max_exp) - { - // digits[000] - // len <= max_exp + 2 - - std::memset(buf + k, '0', static_cast(n) - static_cast(k)); - // Make it look like a floating-point number (#362, #378) - buf[n + 0] = '.'; - buf[n + 1] = '0'; - return buf + (static_cast(n) + 2); - } - - if (0 < n && n <= max_exp) - { - // dig.its - // len <= max_digits10 + 1 - - JSON_ASSERT(k > n); - - std::memmove(buf + (static_cast(n) + 1), buf + n, static_cast(k) - static_cast(n)); - buf[n] = '.'; - return buf + (static_cast(k) + 1U); - } - - if (min_exp < n && n <= 0) - { - // 0.[000]digits - // len <= 2 + (-min_exp - 1) + max_digits10 - - std::memmove(buf + (2 + static_cast(-n)), buf, static_cast(k)); - buf[0] = '0'; - buf[1] = '.'; - std::memset(buf + 2, '0', static_cast(-n)); - return buf + (2U + static_cast(-n) + static_cast(k)); - } - - if (k == 1) - { - // dE+123 - // len <= 1 + 5 - - buf += 1; - } - else - { - // d.igitsE+123 - // len <= max_digits10 + 1 + 5 - - std::memmove(buf + 2, buf + 1, static_cast(k) - 1); - buf[1] = '.'; - buf += 1 + static_cast(k); - } - - *buf++ = 'e'; - return append_exponent(buf, n - 1); -} - -} // namespace dtoa_impl - -/*! -@brief generates a decimal representation of the floating-point number value in [first, last). - -The format of the resulting decimal representation is similar to printf's %g -format. Returns an iterator pointing past-the-end of the decimal representation. - -@note The input number must be finite, i.e. NaN's and Inf's are not supported. -@note The buffer must be large enough. -@note The result is NOT null-terminated. -*/ -template -JSON_HEDLEY_NON_NULL(1, 2) -JSON_HEDLEY_RETURNS_NON_NULL -char* to_chars(char* first, const char* last, FloatType value) -{ - static_cast(last); // maybe unused - fix warning - JSON_ASSERT(std::isfinite(value)); - - // Use signbit(value) instead of (value < 0) since signbit works for -0. - if (std::signbit(value)) - { - value = -value; - *first++ = '-'; - } - -#ifdef __GNUC__ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wfloat-equal" -#endif - if (value == 0) // +-0 - { - *first++ = '0'; - // Make it look like a floating-point number (#362, #378) - *first++ = '.'; - *first++ = '0'; - return first; - } -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#endif - - JSON_ASSERT(last - first >= std::numeric_limits::max_digits10); - - // Compute v = buffer * 10^decimal_exponent. - // The decimal digits are stored in the buffer, which needs to be interpreted - // as an unsigned decimal integer. - // len is the length of the buffer, i.e. the number of decimal digits. - int len = 0; - int decimal_exponent = 0; - dtoa_impl::grisu2(first, len, decimal_exponent, value); - - JSON_ASSERT(len <= std::numeric_limits::max_digits10); - - // Format the buffer like printf("%.*g", prec, value) - constexpr int kMinExp = -4; - // Use digits10 here to increase compatibility with version 2. - constexpr int kMaxExp = std::numeric_limits::digits10; - - JSON_ASSERT(last - first >= kMaxExp + 2); - JSON_ASSERT(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits::max_digits10); - JSON_ASSERT(last - first >= std::numeric_limits::max_digits10 + 6); - - return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp); -} - -} // namespace detail -} // namespace nlohmann - -// #include - -// #include - -// #include - -// #include - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -/////////////////// -// serialization // -/////////////////// - -/// how to treat decoding errors -enum class error_handler_t -{ - strict, ///< throw a type_error exception in case of invalid UTF-8 - replace, ///< replace invalid UTF-8 sequences with U+FFFD - ignore ///< ignore invalid UTF-8 sequences -}; - -template -class serializer -{ - using string_t = typename BasicJsonType::string_t; - using number_float_t = typename BasicJsonType::number_float_t; - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using binary_char_t = typename BasicJsonType::binary_t::value_type; - static constexpr std::uint8_t UTF8_ACCEPT = 0; - static constexpr std::uint8_t UTF8_REJECT = 1; - - public: - /*! - @param[in] s output stream to serialize to - @param[in] ichar indentation character to use - @param[in] error_handler_ how to react on decoding errors - */ - serializer(output_adapter_t s, const char ichar, - error_handler_t error_handler_ = error_handler_t::strict) - : o(std::move(s)) - , loc(std::localeconv()) - , thousands_sep(loc->thousands_sep == nullptr ? '\0' : std::char_traits::to_char_type(* (loc->thousands_sep))) - , decimal_point(loc->decimal_point == nullptr ? '\0' : std::char_traits::to_char_type(* (loc->decimal_point))) - , indent_char(ichar) - , indent_string(512, indent_char) - , error_handler(error_handler_) - {} - - // delete because of pointer members - serializer(const serializer&) = delete; - serializer& operator=(const serializer&) = delete; - serializer(serializer&&) = delete; - serializer& operator=(serializer&&) = delete; - ~serializer() = default; - - /*! - @brief internal implementation of the serialization function - - This function is called by the public member function dump and organizes - the serialization internally. The indentation level is propagated as - additional parameter. In case of arrays and objects, the function is - called recursively. - - - strings and object keys are escaped using `escape_string()` - - integer numbers are converted implicitly via `operator<<` - - floating-point numbers are converted to a string using `"%g"` format - - binary values are serialized as objects containing the subtype and the - byte array - - @param[in] val value to serialize - @param[in] pretty_print whether the output shall be pretty-printed - @param[in] ensure_ascii If @a ensure_ascii is true, all non-ASCII characters - in the output are escaped with `\uXXXX` sequences, and the result consists - of ASCII characters only. - @param[in] indent_step the indent level - @param[in] current_indent the current indent level (only used internally) - */ - void dump(const BasicJsonType& val, - const bool pretty_print, - const bool ensure_ascii, - const unsigned int indent_step, - const unsigned int current_indent = 0) - { - switch (val.m_type) - { - case value_t::object: - { - if (val.m_value.object->empty()) - { - o->write_characters("{}", 2); - return; - } - - if (pretty_print) - { - o->write_characters("{\n", 2); - - // variable to hold indentation for recursive calls - const auto new_indent = current_indent + indent_step; - if (JSON_HEDLEY_UNLIKELY(indent_string.size() < new_indent)) - { - indent_string.resize(indent_string.size() * 2, ' '); - } - - // first n-1 elements - auto i = val.m_value.object->cbegin(); - for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) - { - o->write_characters(indent_string.c_str(), new_indent); - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\": ", 3); - dump(i->second, true, ensure_ascii, indent_step, new_indent); - o->write_characters(",\n", 2); - } - - // last element - JSON_ASSERT(i != val.m_value.object->cend()); - JSON_ASSERT(std::next(i) == val.m_value.object->cend()); - o->write_characters(indent_string.c_str(), new_indent); - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\": ", 3); - dump(i->second, true, ensure_ascii, indent_step, new_indent); - - o->write_character('\n'); - o->write_characters(indent_string.c_str(), current_indent); - o->write_character('}'); - } - else - { - o->write_character('{'); - - // first n-1 elements - auto i = val.m_value.object->cbegin(); - for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) - { - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\":", 2); - dump(i->second, false, ensure_ascii, indent_step, current_indent); - o->write_character(','); - } - - // last element - JSON_ASSERT(i != val.m_value.object->cend()); - JSON_ASSERT(std::next(i) == val.m_value.object->cend()); - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\":", 2); - dump(i->second, false, ensure_ascii, indent_step, current_indent); - - o->write_character('}'); - } - - return; - } - - case value_t::array: - { - if (val.m_value.array->empty()) - { - o->write_characters("[]", 2); - return; - } - - if (pretty_print) - { - o->write_characters("[\n", 2); - - // variable to hold indentation for recursive calls - const auto new_indent = current_indent + indent_step; - if (JSON_HEDLEY_UNLIKELY(indent_string.size() < new_indent)) - { - indent_string.resize(indent_string.size() * 2, ' '); - } - - // first n-1 elements - for (auto i = val.m_value.array->cbegin(); - i != val.m_value.array->cend() - 1; ++i) - { - o->write_characters(indent_string.c_str(), new_indent); - dump(*i, true, ensure_ascii, indent_step, new_indent); - o->write_characters(",\n", 2); - } - - // last element - JSON_ASSERT(!val.m_value.array->empty()); - o->write_characters(indent_string.c_str(), new_indent); - dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent); - - o->write_character('\n'); - o->write_characters(indent_string.c_str(), current_indent); - o->write_character(']'); - } - else - { - o->write_character('['); - - // first n-1 elements - for (auto i = val.m_value.array->cbegin(); - i != val.m_value.array->cend() - 1; ++i) - { - dump(*i, false, ensure_ascii, indent_step, current_indent); - o->write_character(','); - } - - // last element - JSON_ASSERT(!val.m_value.array->empty()); - dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent); - - o->write_character(']'); - } - - return; - } - - case value_t::string: - { - o->write_character('\"'); - dump_escaped(*val.m_value.string, ensure_ascii); - o->write_character('\"'); - return; - } - - case value_t::binary: - { - if (pretty_print) - { - o->write_characters("{\n", 2); - - // variable to hold indentation for recursive calls - const auto new_indent = current_indent + indent_step; - if (JSON_HEDLEY_UNLIKELY(indent_string.size() < new_indent)) - { - indent_string.resize(indent_string.size() * 2, ' '); - } - - o->write_characters(indent_string.c_str(), new_indent); - - o->write_characters("\"bytes\": [", 10); - - if (!val.m_value.binary->empty()) - { - for (auto i = val.m_value.binary->cbegin(); - i != val.m_value.binary->cend() - 1; ++i) - { - dump_integer(*i); - o->write_characters(", ", 2); - } - dump_integer(val.m_value.binary->back()); - } - - o->write_characters("],\n", 3); - o->write_characters(indent_string.c_str(), new_indent); - - o->write_characters("\"subtype\": ", 11); - if (val.m_value.binary->has_subtype()) - { - dump_integer(val.m_value.binary->subtype()); - } - else - { - o->write_characters("null", 4); - } - o->write_character('\n'); - o->write_characters(indent_string.c_str(), current_indent); - o->write_character('}'); - } - else - { - o->write_characters("{\"bytes\":[", 10); - - if (!val.m_value.binary->empty()) - { - for (auto i = val.m_value.binary->cbegin(); - i != val.m_value.binary->cend() - 1; ++i) - { - dump_integer(*i); - o->write_character(','); - } - dump_integer(val.m_value.binary->back()); - } - - o->write_characters("],\"subtype\":", 12); - if (val.m_value.binary->has_subtype()) - { - dump_integer(val.m_value.binary->subtype()); - o->write_character('}'); - } - else - { - o->write_characters("null}", 5); - } - } - return; - } - - case value_t::boolean: - { - if (val.m_value.boolean) - { - o->write_characters("true", 4); - } - else - { - o->write_characters("false", 5); - } - return; - } - - case value_t::number_integer: - { - dump_integer(val.m_value.number_integer); - return; - } - - case value_t::number_unsigned: - { - dump_integer(val.m_value.number_unsigned); - return; - } - - case value_t::number_float: - { - dump_float(val.m_value.number_float); - return; - } - - case value_t::discarded: - { - o->write_characters("", 11); - return; - } - - case value_t::null: - { - o->write_characters("null", 4); - return; - } - - default: // LCOV_EXCL_LINE - JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE - } - } - - JSON_PRIVATE_UNLESS_TESTED: - /*! - @brief dump escaped string - - Escape a string by replacing certain special characters by a sequence of an - escape character (backslash) and another character and other control - characters by a sequence of "\u" followed by a four-digit hex - representation. The escaped string is written to output stream @a o. - - @param[in] s the string to escape - @param[in] ensure_ascii whether to escape non-ASCII characters with - \uXXXX sequences - - @complexity Linear in the length of string @a s. - */ - void dump_escaped(const string_t& s, const bool ensure_ascii) - { - std::uint32_t codepoint{}; - std::uint8_t state = UTF8_ACCEPT; - std::size_t bytes = 0; // number of bytes written to string_buffer - - // number of bytes written at the point of the last valid byte - std::size_t bytes_after_last_accept = 0; - std::size_t undumped_chars = 0; - - for (std::size_t i = 0; i < s.size(); ++i) - { - const auto byte = static_cast(s[i]); - - switch (decode(state, codepoint, byte)) - { - case UTF8_ACCEPT: // decode found a new code point - { - switch (codepoint) - { - case 0x08: // backspace - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = 'b'; - break; - } - - case 0x09: // horizontal tab - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = 't'; - break; - } - - case 0x0A: // newline - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = 'n'; - break; - } - - case 0x0C: // formfeed - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = 'f'; - break; - } - - case 0x0D: // carriage return - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = 'r'; - break; - } - - case 0x22: // quotation mark - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = '\"'; - break; - } - - case 0x5C: // reverse solidus - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = '\\'; - break; - } - - default: - { - // escape control characters (0x00..0x1F) or, if - // ensure_ascii parameter is used, non-ASCII characters - if ((codepoint <= 0x1F) || (ensure_ascii && (codepoint >= 0x7F))) - { - if (codepoint <= 0xFFFF) - { - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg,hicpp-vararg) - static_cast((std::snprintf)(string_buffer.data() + bytes, 7, "\\u%04x", - static_cast(codepoint))); - bytes += 6; - } - else - { - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg,hicpp-vararg) - static_cast((std::snprintf)(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x", - static_cast(0xD7C0u + (codepoint >> 10u)), - static_cast(0xDC00u + (codepoint & 0x3FFu)))); - bytes += 12; - } - } - else - { - // copy byte to buffer (all previous bytes - // been copied have in default case above) - string_buffer[bytes++] = s[i]; - } - break; - } - } - - // write buffer and reset index; there must be 13 bytes - // left, as this is the maximal number of bytes to be - // written ("\uxxxx\uxxxx\0") for one code point - if (string_buffer.size() - bytes < 13) - { - o->write_characters(string_buffer.data(), bytes); - bytes = 0; - } - - // remember the byte position of this accept - bytes_after_last_accept = bytes; - undumped_chars = 0; - break; - } - - case UTF8_REJECT: // decode found invalid UTF-8 byte - { - switch (error_handler) - { - case error_handler_t::strict: - { - std::stringstream ss; - ss << std::uppercase << std::setfill('0') << std::setw(2) << std::hex << (byte | 0); - JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + ss.str(), BasicJsonType())); - } - - case error_handler_t::ignore: - case error_handler_t::replace: - { - // in case we saw this character the first time, we - // would like to read it again, because the byte - // may be OK for itself, but just not OK for the - // previous sequence - if (undumped_chars > 0) - { - --i; - } - - // reset length buffer to the last accepted index; - // thus removing/ignoring the invalid characters - bytes = bytes_after_last_accept; - - if (error_handler == error_handler_t::replace) - { - // add a replacement character - if (ensure_ascii) - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = 'u'; - string_buffer[bytes++] = 'f'; - string_buffer[bytes++] = 'f'; - string_buffer[bytes++] = 'f'; - string_buffer[bytes++] = 'd'; - } - else - { - string_buffer[bytes++] = detail::binary_writer::to_char_type('\xEF'); - string_buffer[bytes++] = detail::binary_writer::to_char_type('\xBF'); - string_buffer[bytes++] = detail::binary_writer::to_char_type('\xBD'); - } - - // write buffer and reset index; there must be 13 bytes - // left, as this is the maximal number of bytes to be - // written ("\uxxxx\uxxxx\0") for one code point - if (string_buffer.size() - bytes < 13) - { - o->write_characters(string_buffer.data(), bytes); - bytes = 0; - } - - bytes_after_last_accept = bytes; - } - - undumped_chars = 0; - - // continue processing the string - state = UTF8_ACCEPT; - break; - } - - default: // LCOV_EXCL_LINE - JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE - } - break; - } - - default: // decode found yet incomplete multi-byte code point - { - if (!ensure_ascii) - { - // code point will not be escaped - copy byte to buffer - string_buffer[bytes++] = s[i]; - } - ++undumped_chars; - break; - } - } - } - - // we finished processing the string - if (JSON_HEDLEY_LIKELY(state == UTF8_ACCEPT)) - { - // write buffer - if (bytes > 0) - { - o->write_characters(string_buffer.data(), bytes); - } - } - else - { - // we finish reading, but do not accept: string was incomplete - switch (error_handler) - { - case error_handler_t::strict: - { - std::stringstream ss; - ss << std::uppercase << std::setfill('0') << std::setw(2) << std::hex << (static_cast(s.back()) | 0); - JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + ss.str(), BasicJsonType())); - } - - case error_handler_t::ignore: - { - // write all accepted bytes - o->write_characters(string_buffer.data(), bytes_after_last_accept); - break; - } - - case error_handler_t::replace: - { - // write all accepted bytes - o->write_characters(string_buffer.data(), bytes_after_last_accept); - // add a replacement character - if (ensure_ascii) - { - o->write_characters("\\ufffd", 6); - } - else - { - o->write_characters("\xEF\xBF\xBD", 3); - } - break; - } - - default: // LCOV_EXCL_LINE - JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE - } - } - } - - private: - /*! - @brief count digits - - Count the number of decimal (base 10) digits for an input unsigned integer. - - @param[in] x unsigned integer number to count its digits - @return number of decimal digits - */ - inline unsigned int count_digits(number_unsigned_t x) noexcept - { - unsigned int n_digits = 1; - for (;;) - { - if (x < 10) - { - return n_digits; - } - if (x < 100) - { - return n_digits + 1; - } - if (x < 1000) - { - return n_digits + 2; - } - if (x < 10000) - { - return n_digits + 3; - } - x = x / 10000u; - n_digits += 4; - } - } - - // templates to avoid warnings about useless casts - template ::value, int> = 0> - bool is_negative_number(NumberType x) - { - return x < 0; - } - - template < typename NumberType, enable_if_t ::value, int > = 0 > - bool is_negative_number(NumberType /*unused*/) - { - return false; - } - - /*! - @brief dump an integer - - Dump a given integer to output stream @a o. Works internally with - @a number_buffer. - - @param[in] x integer number (signed or unsigned) to dump - @tparam NumberType either @a number_integer_t or @a number_unsigned_t - */ - template < typename NumberType, detail::enable_if_t < - std::is_integral::value || - std::is_same::value || - std::is_same::value || - std::is_same::value, - int > = 0 > - void dump_integer(NumberType x) - { - static constexpr std::array, 100> digits_to_99 - { - { - {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}}, - {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}}, - {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}}, - {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}}, - {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}}, - {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}}, - {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}}, - {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}}, - {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}}, - {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}}, - } - }; - - // special case for "0" - if (x == 0) - { - o->write_character('0'); - return; - } - - // use a pointer to fill the buffer - auto buffer_ptr = number_buffer.begin(); // NOLINT(llvm-qualified-auto,readability-qualified-auto,cppcoreguidelines-pro-type-vararg,hicpp-vararg) - - number_unsigned_t abs_value; - - unsigned int n_chars{}; - - if (is_negative_number(x)) - { - *buffer_ptr = '-'; - abs_value = remove_sign(static_cast(x)); - - // account one more byte for the minus sign - n_chars = 1 + count_digits(abs_value); - } - else - { - abs_value = static_cast(x); - n_chars = count_digits(abs_value); - } - - // spare 1 byte for '\0' - JSON_ASSERT(n_chars < number_buffer.size() - 1); - - // jump to the end to generate the string from backward, - // so we later avoid reversing the result - buffer_ptr += n_chars; - - // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu - // See: https://www.youtube.com/watch?v=o4-CwDo2zpg - while (abs_value >= 100) - { - const auto digits_index = static_cast((abs_value % 100)); - abs_value /= 100; - *(--buffer_ptr) = digits_to_99[digits_index][1]; - *(--buffer_ptr) = digits_to_99[digits_index][0]; - } - - if (abs_value >= 10) - { - const auto digits_index = static_cast(abs_value); - *(--buffer_ptr) = digits_to_99[digits_index][1]; - *(--buffer_ptr) = digits_to_99[digits_index][0]; - } - else - { - *(--buffer_ptr) = static_cast('0' + abs_value); - } - - o->write_characters(number_buffer.data(), n_chars); - } - - /*! - @brief dump a floating-point number - - Dump a given floating-point number to output stream @a o. Works internally - with @a number_buffer. - - @param[in] x floating-point number to dump - */ - void dump_float(number_float_t x) - { - // NaN / inf - if (!std::isfinite(x)) - { - o->write_characters("null", 4); - return; - } - - // If number_float_t is an IEEE-754 single or double precision number, - // use the Grisu2 algorithm to produce short numbers which are - // guaranteed to round-trip, using strtof and strtod, resp. - // - // NB: The test below works if == . - static constexpr bool is_ieee_single_or_double - = (std::numeric_limits::is_iec559 && std::numeric_limits::digits == 24 && std::numeric_limits::max_exponent == 128) || - (std::numeric_limits::is_iec559 && std::numeric_limits::digits == 53 && std::numeric_limits::max_exponent == 1024); - - dump_float(x, std::integral_constant()); - } - - void dump_float(number_float_t x, std::true_type /*is_ieee_single_or_double*/) - { - auto* begin = number_buffer.data(); - auto* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x); - - o->write_characters(begin, static_cast(end - begin)); - } - - void dump_float(number_float_t x, std::false_type /*is_ieee_single_or_double*/) - { - // get number of digits for a float -> text -> float round-trip - static constexpr auto d = std::numeric_limits::max_digits10; - - // the actual conversion - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg,hicpp-vararg) - std::ptrdiff_t len = (std::snprintf)(number_buffer.data(), number_buffer.size(), "%.*g", d, x); - - // negative value indicates an error - JSON_ASSERT(len > 0); - // check if buffer was large enough - JSON_ASSERT(static_cast(len) < number_buffer.size()); - - // erase thousands separator - if (thousands_sep != '\0') - { - // NOLINTNEXTLINE(readability-qualified-auto,llvm-qualified-auto): std::remove returns an iterator, see https://github.com/nlohmann/json/issues/3081 - const auto end = std::remove(number_buffer.begin(), number_buffer.begin() + len, thousands_sep); - std::fill(end, number_buffer.end(), '\0'); - JSON_ASSERT((end - number_buffer.begin()) <= len); - len = (end - number_buffer.begin()); - } - - // convert decimal point to '.' - if (decimal_point != '\0' && decimal_point != '.') - { - // NOLINTNEXTLINE(readability-qualified-auto,llvm-qualified-auto): std::find returns an iterator, see https://github.com/nlohmann/json/issues/3081 - const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point); - if (dec_pos != number_buffer.end()) - { - *dec_pos = '.'; - } - } - - o->write_characters(number_buffer.data(), static_cast(len)); - - // determine if we need to append ".0" - const bool value_is_int_like = - std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1, - [](char c) - { - return c == '.' || c == 'e'; - }); - - if (value_is_int_like) - { - o->write_characters(".0", 2); - } - } - - /*! - @brief check whether a string is UTF-8 encoded - - The function checks each byte of a string whether it is UTF-8 encoded. The - result of the check is stored in the @a state parameter. The function must - be called initially with state 0 (accept). State 1 means the string must - be rejected, because the current byte is not allowed. If the string is - completely processed, but the state is non-zero, the string ended - prematurely; that is, the last byte indicated more bytes should have - followed. - - @param[in,out] state the state of the decoding - @param[in,out] codep codepoint (valid only if resulting state is UTF8_ACCEPT) - @param[in] byte next byte to decode - @return new state - - @note The function has been edited: a std::array is used. - - @copyright Copyright (c) 2008-2009 Bjoern Hoehrmann - @sa http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ - */ - static std::uint8_t decode(std::uint8_t& state, std::uint32_t& codep, const std::uint8_t byte) noexcept - { - static const std::array utf8d = - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF - 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF - 0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF - 0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF - 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2 - 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4 - 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6 - 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8 - } - }; - - JSON_ASSERT(byte < utf8d.size()); - const std::uint8_t type = utf8d[byte]; - - codep = (state != UTF8_ACCEPT) - ? (byte & 0x3fu) | (codep << 6u) - : (0xFFu >> type) & (byte); - - std::size_t index = 256u + static_cast(state) * 16u + static_cast(type); - JSON_ASSERT(index < 400); - state = utf8d[index]; - return state; - } - - /* - * Overload to make the compiler happy while it is instantiating - * dump_integer for number_unsigned_t. - * Must never be called. - */ - number_unsigned_t remove_sign(number_unsigned_t x) - { - JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE - return x; // LCOV_EXCL_LINE - } - - /* - * Helper function for dump_integer - * - * This function takes a negative signed integer and returns its absolute - * value as unsigned integer. The plus/minus shuffling is necessary as we can - * not directly remove the sign of an arbitrary signed integer as the - * absolute values of INT_MIN and INT_MAX are usually not the same. See - * #1708 for details. - */ - inline number_unsigned_t remove_sign(number_integer_t x) noexcept - { - JSON_ASSERT(x < 0 && x < (std::numeric_limits::max)()); // NOLINT(misc-redundant-expression) - return static_cast(-(x + 1)) + 1; - } - - private: - /// the output of the serializer - output_adapter_t o = nullptr; - - /// a (hopefully) large enough character buffer - std::array number_buffer{{}}; - - /// the locale - const std::lconv* loc = nullptr; - /// the locale's thousand separator character - const char thousands_sep = '\0'; - /// the locale's decimal point character - const char decimal_point = '\0'; - - /// string buffer - std::array string_buffer{{}}; - - /// the indentation character - const char indent_char; - /// the indentation string - string_t indent_string; - - /// error_handler how to react on decoding errors - const error_handler_t error_handler; -}; -} // namespace detail -} // namespace nlohmann - -// #include - -// #include - -// #include - - -#include // less -#include // initializer_list -#include // input_iterator_tag, iterator_traits -#include // allocator -#include // for out_of_range -#include // enable_if, is_convertible -#include // pair -#include // vector - -// #include - - -namespace nlohmann -{ - -/// ordered_map: a minimal map-like container that preserves insertion order -/// for use within nlohmann::basic_json -template , - class Allocator = std::allocator>> - struct ordered_map : std::vector, Allocator> -{ - using key_type = Key; - using mapped_type = T; - using Container = std::vector, Allocator>; - using iterator = typename Container::iterator; - using const_iterator = typename Container::const_iterator; - using size_type = typename Container::size_type; - using value_type = typename Container::value_type; - - // Explicit constructors instead of `using Container::Container` - // otherwise older compilers choke on it (GCC <= 5.5, xcode <= 9.4) - ordered_map(const Allocator& alloc = Allocator()) : Container{alloc} {} - template - ordered_map(It first, It last, const Allocator& alloc = Allocator()) - : Container{first, last, alloc} {} - ordered_map(std::initializer_list init, const Allocator& alloc = Allocator() ) - : Container{init, alloc} {} - - std::pair emplace(const key_type& key, T&& t) - { - for (auto it = this->begin(); it != this->end(); ++it) - { - if (it->first == key) - { - return {it, false}; - } - } - Container::emplace_back(key, t); - return {--this->end(), true}; - } - - T& operator[](const Key& key) - { - return emplace(key, T{}).first->second; - } - - const T& operator[](const Key& key) const - { - return at(key); - } - - T& at(const Key& key) - { - for (auto it = this->begin(); it != this->end(); ++it) - { - if (it->first == key) - { - return it->second; - } - } - - JSON_THROW(std::out_of_range("key not found")); - } - - const T& at(const Key& key) const - { - for (auto it = this->begin(); it != this->end(); ++it) - { - if (it->first == key) - { - return it->second; - } - } - - JSON_THROW(std::out_of_range("key not found")); - } - - size_type erase(const Key& key) - { - for (auto it = this->begin(); it != this->end(); ++it) - { - if (it->first == key) - { - // Since we cannot move const Keys, re-construct them in place - for (auto next = it; ++next != this->end(); ++it) - { - it->~value_type(); // Destroy but keep allocation - new (&*it) value_type{std::move(*next)}; - } - Container::pop_back(); - return 1; - } - } - return 0; - } - - iterator erase(iterator pos) - { - return erase(pos, std::next(pos)); - } - - iterator erase(iterator first, iterator last) - { - const auto elements_affected = std::distance(first, last); - const auto offset = std::distance(Container::begin(), first); - - // This is the start situation. We need to delete elements_affected - // elements (3 in this example: e, f, g), and need to return an - // iterator past the last deleted element (h in this example). - // Note that offset is the distance from the start of the vector - // to first. We will need this later. - - // [ a, b, c, d, e, f, g, h, i, j ] - // ^ ^ - // first last - - // Since we cannot move const Keys, we re-construct them in place. - // We start at first and re-construct (viz. copy) the elements from - // the back of the vector. Example for first iteration: - - // ,--------. - // v | destroy e and re-construct with h - // [ a, b, c, d, e, f, g, h, i, j ] - // ^ ^ - // it it + elements_affected - - for (auto it = first; std::next(it, elements_affected) != Container::end(); ++it) - { - it->~value_type(); // destroy but keep allocation - new (&*it) value_type{std::move(*std::next(it, elements_affected))}; // "move" next element to it - } - - // [ a, b, c, d, h, i, j, h, i, j ] - // ^ ^ - // first last - - // remove the unneeded elements at the end of the vector - Container::resize(this->size() - static_cast(elements_affected)); - - // [ a, b, c, d, h, i, j ] - // ^ ^ - // first last - - // first is now pointing past the last deleted element, but we cannot - // use this iterator, because it may have been invalidated by the - // resize call. Instead, we can return begin() + offset. - return Container::begin() + offset; - } - - size_type count(const Key& key) const - { - for (auto it = this->begin(); it != this->end(); ++it) - { - if (it->first == key) - { - return 1; - } - } - return 0; - } - - iterator find(const Key& key) - { - for (auto it = this->begin(); it != this->end(); ++it) - { - if (it->first == key) - { - return it; - } - } - return Container::end(); - } - - const_iterator find(const Key& key) const - { - for (auto it = this->begin(); it != this->end(); ++it) - { - if (it->first == key) - { - return it; - } - } - return Container::end(); - } - - std::pair insert( value_type&& value ) - { - return emplace(value.first, std::move(value.second)); - } - - std::pair insert( const value_type& value ) - { - for (auto it = this->begin(); it != this->end(); ++it) - { - if (it->first == value.first) - { - return {it, false}; - } - } - Container::push_back(value); - return {--this->end(), true}; - } - - template - using require_input_iter = typename std::enable_if::iterator_category, - std::input_iterator_tag>::value>::type; - - template> - void insert(InputIt first, InputIt last) - { - for (auto it = first; it != last; ++it) - { - insert(*it); - } - } -}; - -} // namespace nlohmann - - -#if defined(JSON_HAS_CPP_17) - #include -#endif - -/*! -@brief namespace for Niels Lohmann -@see https://github.com/nlohmann -@since version 1.0.0 -*/ -namespace nlohmann -{ - -/*! -@brief a class to store JSON values - -@internal -@invariant The member variables @a m_value and @a m_type have the following -relationship: -- If `m_type == value_t::object`, then `m_value.object != nullptr`. -- If `m_type == value_t::array`, then `m_value.array != nullptr`. -- If `m_type == value_t::string`, then `m_value.string != nullptr`. -The invariants are checked by member function assert_invariant(). - -@note ObjectType trick from https://stackoverflow.com/a/9860911 -@endinternal - -@since version 1.0.0 - -@nosubgrouping -*/ -NLOHMANN_BASIC_JSON_TPL_DECLARATION -class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-special-member-functions) -{ - private: - template friend struct detail::external_constructor; - friend ::nlohmann::json_pointer; - - template - friend class ::nlohmann::detail::parser; - friend ::nlohmann::detail::serializer; - template - friend class ::nlohmann::detail::iter_impl; - template - friend class ::nlohmann::detail::binary_writer; - template - friend class ::nlohmann::detail::binary_reader; - template - friend class ::nlohmann::detail::json_sax_dom_parser; - template - friend class ::nlohmann::detail::json_sax_dom_callback_parser; - friend class ::nlohmann::detail::exception; - - /// workaround type for MSVC - using basic_json_t = NLOHMANN_BASIC_JSON_TPL; - - JSON_PRIVATE_UNLESS_TESTED: - // convenience aliases for types residing in namespace detail; - using lexer = ::nlohmann::detail::lexer_base; - - template - static ::nlohmann::detail::parser parser( - InputAdapterType adapter, - detail::parser_callback_tcb = nullptr, - const bool allow_exceptions = true, - const bool ignore_comments = false - ) - { - return ::nlohmann::detail::parser(std::move(adapter), - std::move(cb), allow_exceptions, ignore_comments); - } - - private: - using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t; - template - using internal_iterator = ::nlohmann::detail::internal_iterator; - template - using iter_impl = ::nlohmann::detail::iter_impl; - template - using iteration_proxy = ::nlohmann::detail::iteration_proxy; - template using json_reverse_iterator = ::nlohmann::detail::json_reverse_iterator; - - template - using output_adapter_t = ::nlohmann::detail::output_adapter_t; - - template - using binary_reader = ::nlohmann::detail::binary_reader; - template using binary_writer = ::nlohmann::detail::binary_writer; - - JSON_PRIVATE_UNLESS_TESTED: - using serializer = ::nlohmann::detail::serializer; - - public: - using value_t = detail::value_t; - /// JSON Pointer, see @ref nlohmann::json_pointer - using json_pointer = ::nlohmann::json_pointer; - template - using json_serializer = JSONSerializer; - /// how to treat decoding errors - using error_handler_t = detail::error_handler_t; - /// how to treat CBOR tags - using cbor_tag_handler_t = detail::cbor_tag_handler_t; - /// helper type for initializer lists of basic_json values - using initializer_list_t = std::initializer_list>; - - using input_format_t = detail::input_format_t; - /// SAX interface type, see @ref nlohmann::json_sax - using json_sax_t = json_sax; - - //////////////// - // exceptions // - //////////////// - - /// @name exceptions - /// Classes to implement user-defined exceptions. - /// @{ - - using exception = detail::exception; - using parse_error = detail::parse_error; - using invalid_iterator = detail::invalid_iterator; - using type_error = detail::type_error; - using out_of_range = detail::out_of_range; - using other_error = detail::other_error; - - /// @} - - - ///////////////////// - // container types // - ///////////////////// - - /// @name container types - /// The canonic container types to use @ref basic_json like any other STL - /// container. - /// @{ - - /// the type of elements in a basic_json container - using value_type = basic_json; - - /// the type of an element reference - using reference = value_type&; - /// the type of an element const reference - using const_reference = const value_type&; - - /// a type to represent differences between iterators - using difference_type = std::ptrdiff_t; - /// a type to represent container sizes - using size_type = std::size_t; - - /// the allocator type - using allocator_type = AllocatorType; - - /// the type of an element pointer - using pointer = typename std::allocator_traits::pointer; - /// the type of an element const pointer - using const_pointer = typename std::allocator_traits::const_pointer; - - /// an iterator for a basic_json container - using iterator = iter_impl; - /// a const iterator for a basic_json container - using const_iterator = iter_impl; - /// a reverse iterator for a basic_json container - using reverse_iterator = json_reverse_iterator; - /// a const reverse iterator for a basic_json container - using const_reverse_iterator = json_reverse_iterator; - - /// @} - - - /// @brief returns the allocator associated with the container - /// @sa https://json.nlohmann.me/api/basic_json/get_allocator/ - static allocator_type get_allocator() - { - return allocator_type(); - } - - /// @brief returns version information on the library - /// @sa https://json.nlohmann.me/api/basic_json/meta/ - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json meta() - { - basic_json result; - - result["copyright"] = "(C) 2013-2022 Niels Lohmann"; - result["name"] = "JSON for Modern C++"; - result["url"] = "https://github.com/nlohmann/json"; - result["version"]["string"] = - std::to_string(NLOHMANN_JSON_VERSION_MAJOR) + "." + - std::to_string(NLOHMANN_JSON_VERSION_MINOR) + "." + - std::to_string(NLOHMANN_JSON_VERSION_PATCH); - result["version"]["major"] = NLOHMANN_JSON_VERSION_MAJOR; - result["version"]["minor"] = NLOHMANN_JSON_VERSION_MINOR; - result["version"]["patch"] = NLOHMANN_JSON_VERSION_PATCH; - -#ifdef _WIN32 - result["platform"] = "win32"; -#elif defined __linux__ - result["platform"] = "linux"; -#elif defined __APPLE__ - result["platform"] = "apple"; -#elif defined __unix__ - result["platform"] = "unix"; -#else - result["platform"] = "unknown"; -#endif - -#if defined(__ICC) || defined(__INTEL_COMPILER) - result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}}; -#elif defined(__clang__) - result["compiler"] = {{"family", "clang"}, {"version", __clang_version__}}; -#elif defined(__GNUC__) || defined(__GNUG__) - result["compiler"] = {{"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)}}; -#elif defined(__HP_cc) || defined(__HP_aCC) - result["compiler"] = "hp" -#elif defined(__IBMCPP__) - result["compiler"] = {{"family", "ilecpp"}, {"version", __IBMCPP__}}; -#elif defined(_MSC_VER) - result["compiler"] = {{"family", "msvc"}, {"version", _MSC_VER}}; -#elif defined(__PGI) - result["compiler"] = {{"family", "pgcpp"}, {"version", __PGI}}; -#elif defined(__SUNPRO_CC) - result["compiler"] = {{"family", "sunpro"}, {"version", __SUNPRO_CC}}; -#else - result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}}; -#endif - -#ifdef __cplusplus - result["compiler"]["c++"] = std::to_string(__cplusplus); -#else - result["compiler"]["c++"] = "unknown"; -#endif - return result; - } - - - /////////////////////////// - // JSON value data types // - /////////////////////////// - - /// @name JSON value data types - /// The data types to store a JSON value. These types are derived from - /// the template arguments passed to class @ref basic_json. - /// @{ - - /// @brief object key comparator type - /// @sa https://json.nlohmann.me/api/basic_json/object_comparator_t/ -#if defined(JSON_HAS_CPP_14) - // Use transparent comparator if possible, combined with perfect forwarding - // on find() and count() calls prevents unnecessary string construction. - using object_comparator_t = std::less<>; -#else - using object_comparator_t = std::less; -#endif - - /// @brief a type for an object - /// @sa https://json.nlohmann.me/api/basic_json/object_t/ - using object_t = ObjectType>>; - - /// @brief a type for an array - /// @sa https://json.nlohmann.me/api/basic_json/array_t/ - using array_t = ArrayType>; - - /// @brief a type for a string - /// @sa https://json.nlohmann.me/api/basic_json/string_t/ - using string_t = StringType; - - /// @brief a type for a boolean - /// @sa https://json.nlohmann.me/api/basic_json/boolean_t/ - using boolean_t = BooleanType; - - /// @brief a type for a number (integer) - /// @sa https://json.nlohmann.me/api/basic_json/number_integer_t/ - using number_integer_t = NumberIntegerType; - - /// @brief a type for a number (unsigned) - /// @sa https://json.nlohmann.me/api/basic_json/number_unsigned_t/ - using number_unsigned_t = NumberUnsignedType; - - /// @brief a type for a number (floating-point) - /// @sa https://json.nlohmann.me/api/basic_json/number_float_t/ - using number_float_t = NumberFloatType; - - /// @brief a type for a packed binary type - /// @sa https://json.nlohmann.me/api/basic_json/binary_t/ - using binary_t = nlohmann::byte_container_with_subtype; - - /// @} - - private: - - /// helper for exception-safe object creation - template - JSON_HEDLEY_RETURNS_NON_NULL - static T* create(Args&& ... args) - { - AllocatorType alloc; - using AllocatorTraits = std::allocator_traits>; - - auto deleter = [&](T * obj) - { - AllocatorTraits::deallocate(alloc, obj, 1); - }; - std::unique_ptr obj(AllocatorTraits::allocate(alloc, 1), deleter); - AllocatorTraits::construct(alloc, obj.get(), std::forward(args)...); - JSON_ASSERT(obj != nullptr); - return obj.release(); - } - - //////////////////////// - // JSON value storage // - //////////////////////// - - JSON_PRIVATE_UNLESS_TESTED: - /*! - @brief a JSON value - - The actual storage for a JSON value of the @ref basic_json class. This - union combines the different storage types for the JSON value types - defined in @ref value_t. - - JSON type | value_t type | used type - --------- | --------------- | ------------------------ - object | object | pointer to @ref object_t - array | array | pointer to @ref array_t - string | string | pointer to @ref string_t - boolean | boolean | @ref boolean_t - number | number_integer | @ref number_integer_t - number | number_unsigned | @ref number_unsigned_t - number | number_float | @ref number_float_t - binary | binary | pointer to @ref binary_t - null | null | *no value is stored* - - @note Variable-length types (objects, arrays, and strings) are stored as - pointers. The size of the union should not exceed 64 bits if the default - value types are used. - - @since version 1.0.0 - */ - union json_value - { - /// object (stored with pointer to save storage) - object_t* object; - /// array (stored with pointer to save storage) - array_t* array; - /// string (stored with pointer to save storage) - string_t* string; - /// binary (stored with pointer to save storage) - binary_t* binary; - /// boolean - boolean_t boolean; - /// number (integer) - number_integer_t number_integer; - /// number (unsigned integer) - number_unsigned_t number_unsigned; - /// number (floating-point) - number_float_t number_float; - - /// default constructor (for null values) - json_value() = default; - /// constructor for booleans - json_value(boolean_t v) noexcept : boolean(v) {} - /// constructor for numbers (integer) - json_value(number_integer_t v) noexcept : number_integer(v) {} - /// constructor for numbers (unsigned) - json_value(number_unsigned_t v) noexcept : number_unsigned(v) {} - /// constructor for numbers (floating-point) - json_value(number_float_t v) noexcept : number_float(v) {} - /// constructor for empty values of a given type - json_value(value_t t) - { - switch (t) - { - case value_t::object: - { - object = create(); - break; - } - - case value_t::array: - { - array = create(); - break; - } - - case value_t::string: - { - string = create(""); - break; - } - - case value_t::binary: - { - binary = create(); - break; - } - - case value_t::boolean: - { - boolean = static_cast(false); - break; - } - - case value_t::number_integer: - { - number_integer = static_cast(0); - break; - } - - case value_t::number_unsigned: - { - number_unsigned = static_cast(0); - break; - } - - case value_t::number_float: - { - number_float = static_cast(0.0); - break; - } - - case value_t::null: - { - object = nullptr; // silence warning, see #821 - break; - } - - case value_t::discarded: - default: - { - object = nullptr; // silence warning, see #821 - if (JSON_HEDLEY_UNLIKELY(t == value_t::null)) - { - JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.10.5", basic_json())); // LCOV_EXCL_LINE - } - break; - } - } - } - - /// constructor for strings - json_value(const string_t& value) : string(create(value)) {} - - /// constructor for rvalue strings - json_value(string_t&& value) : string(create(std::move(value))) {} - - /// constructor for objects - json_value(const object_t& value) : object(create(value)) {} - - /// constructor for rvalue objects - json_value(object_t&& value) : object(create(std::move(value))) {} - - /// constructor for arrays - json_value(const array_t& value) : array(create(value)) {} - - /// constructor for rvalue arrays - json_value(array_t&& value) : array(create(std::move(value))) {} - - /// constructor for binary arrays - json_value(const typename binary_t::container_type& value) : binary(create(value)) {} - - /// constructor for rvalue binary arrays - json_value(typename binary_t::container_type&& value) : binary(create(std::move(value))) {} - - /// constructor for binary arrays (internal type) - json_value(const binary_t& value) : binary(create(value)) {} - - /// constructor for rvalue binary arrays (internal type) - json_value(binary_t&& value) : binary(create(std::move(value))) {} - - void destroy(value_t t) - { - if (t == value_t::array || t == value_t::object) - { - // flatten the current json_value to a heap-allocated stack - std::vector stack; - - // move the top-level items to stack - if (t == value_t::array) - { - stack.reserve(array->size()); - std::move(array->begin(), array->end(), std::back_inserter(stack)); - } - else - { - stack.reserve(object->size()); - for (auto&& it : *object) - { - stack.push_back(std::move(it.second)); - } - } - - while (!stack.empty()) - { - // move the last item to local variable to be processed - basic_json current_item(std::move(stack.back())); - stack.pop_back(); - - // if current_item is array/object, move - // its children to the stack to be processed later - if (current_item.is_array()) - { - std::move(current_item.m_value.array->begin(), current_item.m_value.array->end(), std::back_inserter(stack)); - - current_item.m_value.array->clear(); - } - else if (current_item.is_object()) - { - for (auto&& it : *current_item.m_value.object) - { - stack.push_back(std::move(it.second)); - } - - current_item.m_value.object->clear(); - } - - // it's now safe that current_item get destructed - // since it doesn't have any children - } - } - - switch (t) - { - case value_t::object: - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, object); - std::allocator_traits::deallocate(alloc, object, 1); - break; - } - - case value_t::array: - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, array); - std::allocator_traits::deallocate(alloc, array, 1); - break; - } - - case value_t::string: - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, string); - std::allocator_traits::deallocate(alloc, string, 1); - break; - } - - case value_t::binary: - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, binary); - std::allocator_traits::deallocate(alloc, binary, 1); - break; - } - - case value_t::null: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::discarded: - default: - { - break; - } - } - } - }; - - private: - /*! - @brief checks the class invariants - - This function asserts the class invariants. It needs to be called at the - end of every constructor to make sure that created objects respect the - invariant. Furthermore, it has to be called each time the type of a JSON - value is changed, because the invariant expresses a relationship between - @a m_type and @a m_value. - - Furthermore, the parent relation is checked for arrays and objects: If - @a check_parents true and the value is an array or object, then the - container's elements must have the current value as parent. - - @param[in] check_parents whether the parent relation should be checked. - The value is true by default and should only be set to false - during destruction of objects when the invariant does not - need to hold. - */ - void assert_invariant(bool check_parents = true) const noexcept - { - JSON_ASSERT(m_type != value_t::object || m_value.object != nullptr); - JSON_ASSERT(m_type != value_t::array || m_value.array != nullptr); - JSON_ASSERT(m_type != value_t::string || m_value.string != nullptr); - JSON_ASSERT(m_type != value_t::binary || m_value.binary != nullptr); - -#if JSON_DIAGNOSTICS - JSON_TRY - { - // cppcheck-suppress assertWithSideEffect - JSON_ASSERT(!check_parents || !is_structured() || std::all_of(begin(), end(), [this](const basic_json & j) - { - return j.m_parent == this; - })); - } - JSON_CATCH(...) {} // LCOV_EXCL_LINE -#endif - static_cast(check_parents); - } - - void set_parents() - { -#if JSON_DIAGNOSTICS - switch (m_type) - { - case value_t::array: - { - for (auto& element : *m_value.array) - { - element.m_parent = this; - } - break; - } - - case value_t::object: - { - for (auto& element : *m_value.object) - { - element.second.m_parent = this; - } - break; - } - - case value_t::null: - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - break; - } -#endif - } - - iterator set_parents(iterator it, typename iterator::difference_type count_set_parents) - { -#if JSON_DIAGNOSTICS - for (typename iterator::difference_type i = 0; i < count_set_parents; ++i) - { - (it + i)->m_parent = this; - } -#else - static_cast(count_set_parents); -#endif - return it; - } - - reference set_parent(reference j, std::size_t old_capacity = static_cast(-1)) - { -#if JSON_DIAGNOSTICS - if (old_capacity != static_cast(-1)) - { - // see https://github.com/nlohmann/json/issues/2838 - JSON_ASSERT(type() == value_t::array); - if (JSON_HEDLEY_UNLIKELY(m_value.array->capacity() != old_capacity)) - { - // capacity has changed: update all parents - set_parents(); - return j; - } - } - - // ordered_json uses a vector internally, so pointers could have - // been invalidated; see https://github.com/nlohmann/json/issues/2962 -#ifdef JSON_HEDLEY_MSVC_VERSION -#pragma warning(push ) -#pragma warning(disable : 4127) // ignore warning to replace if with if constexpr -#endif - if (detail::is_ordered_map::value) - { - set_parents(); - return j; - } -#ifdef JSON_HEDLEY_MSVC_VERSION -#pragma warning( pop ) -#endif - - j.m_parent = this; -#else - static_cast(j); - static_cast(old_capacity); -#endif - return j; - } - - public: - ////////////////////////// - // JSON parser callback // - ////////////////////////// - - /// @brief parser event types - /// @sa https://json.nlohmann.me/api/basic_json/parse_event_t/ - using parse_event_t = detail::parse_event_t; - - /// @brief per-element parser callback type - /// @sa https://json.nlohmann.me/api/basic_json/parser_callback_t/ - using parser_callback_t = detail::parser_callback_t; - - ////////////////// - // constructors // - ////////////////// - - /// @name constructors and destructors - /// Constructors of class @ref basic_json, copy/move constructor, copy - /// assignment, static functions creating objects, and the destructor. - /// @{ - - /// @brief create an empty value with a given type - /// @sa https://json.nlohmann.me/api/basic_json/basic_json/ - basic_json(const value_t v) - : m_type(v), m_value(v) - { - assert_invariant(); - } - - /// @brief create a null object - /// @sa https://json.nlohmann.me/api/basic_json/basic_json/ - basic_json(std::nullptr_t = nullptr) noexcept - : basic_json(value_t::null) - { - assert_invariant(); - } - - /// @brief create a JSON value from compatible types - /// @sa https://json.nlohmann.me/api/basic_json/basic_json/ - template < typename CompatibleType, - typename U = detail::uncvref_t, - detail::enable_if_t < - !detail::is_basic_json::value && detail::is_compatible_type::value, int > = 0 > - basic_json(CompatibleType && val) noexcept(noexcept( // NOLINT(bugprone-forwarding-reference-overload,bugprone-exception-escape) - JSONSerializer::to_json(std::declval(), - std::forward(val)))) - { - JSONSerializer::to_json(*this, std::forward(val)); - set_parents(); - assert_invariant(); - } - - /// @brief create a JSON value from an existing one - /// @sa https://json.nlohmann.me/api/basic_json/basic_json/ - template < typename BasicJsonType, - detail::enable_if_t < - detail::is_basic_json::value&& !std::is_same::value, int > = 0 > - basic_json(const BasicJsonType& val) - { - using other_boolean_t = typename BasicJsonType::boolean_t; - using other_number_float_t = typename BasicJsonType::number_float_t; - using other_number_integer_t = typename BasicJsonType::number_integer_t; - using other_number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using other_string_t = typename BasicJsonType::string_t; - using other_object_t = typename BasicJsonType::object_t; - using other_array_t = typename BasicJsonType::array_t; - using other_binary_t = typename BasicJsonType::binary_t; - - switch (val.type()) - { - case value_t::boolean: - JSONSerializer::to_json(*this, val.template get()); - break; - case value_t::number_float: - JSONSerializer::to_json(*this, val.template get()); - break; - case value_t::number_integer: - JSONSerializer::to_json(*this, val.template get()); - break; - case value_t::number_unsigned: - JSONSerializer::to_json(*this, val.template get()); - break; - case value_t::string: - JSONSerializer::to_json(*this, val.template get_ref()); - break; - case value_t::object: - JSONSerializer::to_json(*this, val.template get_ref()); - break; - case value_t::array: - JSONSerializer::to_json(*this, val.template get_ref()); - break; - case value_t::binary: - JSONSerializer::to_json(*this, val.template get_ref()); - break; - case value_t::null: - *this = nullptr; - break; - case value_t::discarded: - m_type = value_t::discarded; - break; - default: // LCOV_EXCL_LINE - JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE - } - set_parents(); - assert_invariant(); - } - - /// @brief create a container (array or object) from an initializer list - /// @sa https://json.nlohmann.me/api/basic_json/basic_json/ - basic_json(initializer_list_t init, - bool type_deduction = true, - value_t manual_type = value_t::array) - { - // check if each element is an array with two elements whose first - // element is a string - bool is_an_object = std::all_of(init.begin(), init.end(), - [](const detail::json_ref& element_ref) - { - return element_ref->is_array() && element_ref->size() == 2 && (*element_ref)[0].is_string(); - }); - - // adjust type if type deduction is not wanted - if (!type_deduction) - { - // if array is wanted, do not create an object though possible - if (manual_type == value_t::array) - { - is_an_object = false; - } - - // if object is wanted but impossible, throw an exception - if (JSON_HEDLEY_UNLIKELY(manual_type == value_t::object && !is_an_object)) - { - JSON_THROW(type_error::create(301, "cannot create object from initializer list", basic_json())); - } - } - - if (is_an_object) - { - // the initializer list is a list of pairs -> create object - m_type = value_t::object; - m_value = value_t::object; - - for (auto& element_ref : init) - { - auto element = element_ref.moved_or_copied(); - m_value.object->emplace( - std::move(*((*element.m_value.array)[0].m_value.string)), - std::move((*element.m_value.array)[1])); - } - } - else - { - // the initializer list describes an array -> create array - m_type = value_t::array; - m_value.array = create(init.begin(), init.end()); - } - - set_parents(); - assert_invariant(); - } - - /// @brief explicitly create a binary array (without subtype) - /// @sa https://json.nlohmann.me/api/basic_json/binary/ - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json binary(const typename binary_t::container_type& init) - { - auto res = basic_json(); - res.m_type = value_t::binary; - res.m_value = init; - return res; - } - - /// @brief explicitly create a binary array (with subtype) - /// @sa https://json.nlohmann.me/api/basic_json/binary/ - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json binary(const typename binary_t::container_type& init, typename binary_t::subtype_type subtype) - { - auto res = basic_json(); - res.m_type = value_t::binary; - res.m_value = binary_t(init, subtype); - return res; - } - - /// @brief explicitly create a binary array - /// @sa https://json.nlohmann.me/api/basic_json/binary/ - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json binary(typename binary_t::container_type&& init) - { - auto res = basic_json(); - res.m_type = value_t::binary; - res.m_value = std::move(init); - return res; - } - - /// @brief explicitly create a binary array (with subtype) - /// @sa https://json.nlohmann.me/api/basic_json/binary/ - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json binary(typename binary_t::container_type&& init, typename binary_t::subtype_type subtype) - { - auto res = basic_json(); - res.m_type = value_t::binary; - res.m_value = binary_t(std::move(init), subtype); - return res; - } - - /// @brief explicitly create an array from an initializer list - /// @sa https://json.nlohmann.me/api/basic_json/array/ - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json array(initializer_list_t init = {}) - { - return basic_json(init, false, value_t::array); - } - - /// @brief explicitly create an object from an initializer list - /// @sa https://json.nlohmann.me/api/basic_json/object/ - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json object(initializer_list_t init = {}) - { - return basic_json(init, false, value_t::object); - } - - /// @brief construct an array with count copies of given value - /// @sa https://json.nlohmann.me/api/basic_json/basic_json/ - basic_json(size_type cnt, const basic_json& val) - : m_type(value_t::array) - { - m_value.array = create(cnt, val); - set_parents(); - assert_invariant(); - } - - /// @brief construct a JSON container given an iterator range - /// @sa https://json.nlohmann.me/api/basic_json/basic_json/ - template < class InputIT, typename std::enable_if < - std::is_same::value || - std::is_same::value, int >::type = 0 > - basic_json(InputIT first, InputIT last) - { - JSON_ASSERT(first.m_object != nullptr); - JSON_ASSERT(last.m_object != nullptr); - - // make sure iterator fits the current value - if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object)) - { - JSON_THROW(invalid_iterator::create(201, "iterators are not compatible", basic_json())); - } - - // copy type from first iterator - m_type = first.m_object->m_type; - - // check if iterator range is complete for primitive values - switch (m_type) - { - case value_t::boolean: - case value_t::number_float: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::string: - { - if (JSON_HEDLEY_UNLIKELY(!first.m_it.primitive_iterator.is_begin() - || !last.m_it.primitive_iterator.is_end())) - { - JSON_THROW(invalid_iterator::create(204, "iterators out of range", *first.m_object)); - } - break; - } - - case value_t::null: - case value_t::object: - case value_t::array: - case value_t::binary: - case value_t::discarded: - default: - break; - } - - switch (m_type) - { - case value_t::number_integer: - { - m_value.number_integer = first.m_object->m_value.number_integer; - break; - } - - case value_t::number_unsigned: - { - m_value.number_unsigned = first.m_object->m_value.number_unsigned; - break; - } - - case value_t::number_float: - { - m_value.number_float = first.m_object->m_value.number_float; - break; - } - - case value_t::boolean: - { - m_value.boolean = first.m_object->m_value.boolean; - break; - } - - case value_t::string: - { - m_value = *first.m_object->m_value.string; - break; - } - - case value_t::object: - { - m_value.object = create(first.m_it.object_iterator, - last.m_it.object_iterator); - break; - } - - case value_t::array: - { - m_value.array = create(first.m_it.array_iterator, - last.m_it.array_iterator); - break; - } - - case value_t::binary: - { - m_value = *first.m_object->m_value.binary; - break; - } - - case value_t::null: - case value_t::discarded: - default: - JSON_THROW(invalid_iterator::create(206, "cannot construct with iterators from " + std::string(first.m_object->type_name()), *first.m_object)); - } - - set_parents(); - assert_invariant(); - } - - - /////////////////////////////////////// - // other constructors and destructor // - /////////////////////////////////////// - - template, - std::is_same>::value, int> = 0 > - basic_json(const JsonRef& ref) : basic_json(ref.moved_or_copied()) {} - - /// @brief copy constructor - /// @sa https://json.nlohmann.me/api/basic_json/basic_json/ - basic_json(const basic_json& other) - : m_type(other.m_type) - { - // check of passed value is valid - other.assert_invariant(); - - switch (m_type) - { - case value_t::object: - { - m_value = *other.m_value.object; - break; - } - - case value_t::array: - { - m_value = *other.m_value.array; - break; - } - - case value_t::string: - { - m_value = *other.m_value.string; - break; - } - - case value_t::boolean: - { - m_value = other.m_value.boolean; - break; - } - - case value_t::number_integer: - { - m_value = other.m_value.number_integer; - break; - } - - case value_t::number_unsigned: - { - m_value = other.m_value.number_unsigned; - break; - } - - case value_t::number_float: - { - m_value = other.m_value.number_float; - break; - } - - case value_t::binary: - { - m_value = *other.m_value.binary; - break; - } - - case value_t::null: - case value_t::discarded: - default: - break; - } - - set_parents(); - assert_invariant(); - } - - /// @brief move constructor - /// @sa https://json.nlohmann.me/api/basic_json/basic_json/ - basic_json(basic_json&& other) noexcept - : m_type(std::move(other.m_type)), - m_value(std::move(other.m_value)) - { - // check that passed value is valid - other.assert_invariant(false); - - // invalidate payload - other.m_type = value_t::null; - other.m_value = {}; - - set_parents(); - assert_invariant(); - } - - /// @brief copy assignment - /// @sa https://json.nlohmann.me/api/basic_json/operator=/ - basic_json& operator=(basic_json other) noexcept ( - std::is_nothrow_move_constructible::value&& - std::is_nothrow_move_assignable::value&& - std::is_nothrow_move_constructible::value&& - std::is_nothrow_move_assignable::value - ) - { - // check that passed value is valid - other.assert_invariant(); - - using std::swap; - swap(m_type, other.m_type); - swap(m_value, other.m_value); - - set_parents(); - assert_invariant(); - return *this; - } - - /// @brief destructor - /// @sa https://json.nlohmann.me/api/basic_json/~basic_json/ - ~basic_json() noexcept - { - assert_invariant(false); - m_value.destroy(m_type); - } - - /// @} - - public: - /////////////////////// - // object inspection // - /////////////////////// - - /// @name object inspection - /// Functions to inspect the type of a JSON value. - /// @{ - - /// @brief serialization - /// @sa https://json.nlohmann.me/api/basic_json/dump/ - string_t dump(const int indent = -1, - const char indent_char = ' ', - const bool ensure_ascii = false, - const error_handler_t error_handler = error_handler_t::strict) const - { - string_t result; - serializer s(detail::output_adapter(result), indent_char, error_handler); - - if (indent >= 0) - { - s.dump(*this, true, ensure_ascii, static_cast(indent)); - } - else - { - s.dump(*this, false, ensure_ascii, 0); - } - - return result; - } - - /// @brief return the type of the JSON value (explicit) - /// @sa https://json.nlohmann.me/api/basic_json/type/ - constexpr value_t type() const noexcept - { - return m_type; - } - - /// @brief return whether type is primitive - /// @sa https://json.nlohmann.me/api/basic_json/is_primitive/ - constexpr bool is_primitive() const noexcept - { - return is_null() || is_string() || is_boolean() || is_number() || is_binary(); - } - - /// @brief return whether type is structured - /// @sa https://json.nlohmann.me/api/basic_json/is_structured/ - constexpr bool is_structured() const noexcept - { - return is_array() || is_object(); - } - - /// @brief return whether value is null - /// @sa https://json.nlohmann.me/api/basic_json/is_null/ - constexpr bool is_null() const noexcept - { - return m_type == value_t::null; - } - - /// @brief return whether value is a boolean - /// @sa https://json.nlohmann.me/api/basic_json/is_boolean/ - constexpr bool is_boolean() const noexcept - { - return m_type == value_t::boolean; - } - - /// @brief return whether value is a number - /// @sa https://json.nlohmann.me/api/basic_json/is_number/ - constexpr bool is_number() const noexcept - { - return is_number_integer() || is_number_float(); - } - - /// @brief return whether value is an integer number - /// @sa https://json.nlohmann.me/api/basic_json/is_number_integer/ - constexpr bool is_number_integer() const noexcept - { - return m_type == value_t::number_integer || m_type == value_t::number_unsigned; - } - - /// @brief return whether value is an unsigned integer number - /// @sa https://json.nlohmann.me/api/basic_json/is_number_unsigned/ - constexpr bool is_number_unsigned() const noexcept - { - return m_type == value_t::number_unsigned; - } - - /// @brief return whether value is a floating-point number - /// @sa https://json.nlohmann.me/api/basic_json/is_number_float/ - constexpr bool is_number_float() const noexcept - { - return m_type == value_t::number_float; - } - - /// @brief return whether value is an object - /// @sa https://json.nlohmann.me/api/basic_json/is_object/ - constexpr bool is_object() const noexcept - { - return m_type == value_t::object; - } - - /// @brief return whether value is an array - /// @sa https://json.nlohmann.me/api/basic_json/is_array/ - constexpr bool is_array() const noexcept - { - return m_type == value_t::array; - } - - /// @brief return whether value is a string - /// @sa https://json.nlohmann.me/api/basic_json/is_string/ - constexpr bool is_string() const noexcept - { - return m_type == value_t::string; - } - - /// @brief return whether value is a binary array - /// @sa https://json.nlohmann.me/api/basic_json/is_binary/ - constexpr bool is_binary() const noexcept - { - return m_type == value_t::binary; - } - - /// @brief return whether value is discarded - /// @sa https://json.nlohmann.me/api/basic_json/is_discarded/ - constexpr bool is_discarded() const noexcept - { - return m_type == value_t::discarded; - } - - /// @brief return the type of the JSON value (implicit) - /// @sa https://json.nlohmann.me/api/basic_json/operator_value_t/ - constexpr operator value_t() const noexcept - { - return m_type; - } - - /// @} - - private: - ////////////////// - // value access // - ////////////////// - - /// get a boolean (explicit) - boolean_t get_impl(boolean_t* /*unused*/) const - { - if (JSON_HEDLEY_LIKELY(is_boolean())) - { - return m_value.boolean; - } - - JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(type_name()), *this)); - } - - /// get a pointer to the value (object) - object_t* get_impl_ptr(object_t* /*unused*/) noexcept - { - return is_object() ? m_value.object : nullptr; - } - - /// get a pointer to the value (object) - constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept - { - return is_object() ? m_value.object : nullptr; - } - - /// get a pointer to the value (array) - array_t* get_impl_ptr(array_t* /*unused*/) noexcept - { - return is_array() ? m_value.array : nullptr; - } - - /// get a pointer to the value (array) - constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept - { - return is_array() ? m_value.array : nullptr; - } - - /// get a pointer to the value (string) - string_t* get_impl_ptr(string_t* /*unused*/) noexcept - { - return is_string() ? m_value.string : nullptr; - } - - /// get a pointer to the value (string) - constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept - { - return is_string() ? m_value.string : nullptr; - } - - /// get a pointer to the value (boolean) - boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept - { - return is_boolean() ? &m_value.boolean : nullptr; - } - - /// get a pointer to the value (boolean) - constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept - { - return is_boolean() ? &m_value.boolean : nullptr; - } - - /// get a pointer to the value (integer number) - number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept - { - return is_number_integer() ? &m_value.number_integer : nullptr; - } - - /// get a pointer to the value (integer number) - constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept - { - return is_number_integer() ? &m_value.number_integer : nullptr; - } - - /// get a pointer to the value (unsigned number) - number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept - { - return is_number_unsigned() ? &m_value.number_unsigned : nullptr; - } - - /// get a pointer to the value (unsigned number) - constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept - { - return is_number_unsigned() ? &m_value.number_unsigned : nullptr; - } - - /// get a pointer to the value (floating-point number) - number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept - { - return is_number_float() ? &m_value.number_float : nullptr; - } - - /// get a pointer to the value (floating-point number) - constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept - { - return is_number_float() ? &m_value.number_float : nullptr; - } - - /// get a pointer to the value (binary) - binary_t* get_impl_ptr(binary_t* /*unused*/) noexcept - { - return is_binary() ? m_value.binary : nullptr; - } - - /// get a pointer to the value (binary) - constexpr const binary_t* get_impl_ptr(const binary_t* /*unused*/) const noexcept - { - return is_binary() ? m_value.binary : nullptr; - } - - /*! - @brief helper function to implement get_ref() - - This function helps to implement get_ref() without code duplication for - const and non-const overloads - - @tparam ThisType will be deduced as `basic_json` or `const basic_json` - - @throw type_error.303 if ReferenceType does not match underlying value - type of the current JSON - */ - template - static ReferenceType get_ref_impl(ThisType& obj) - { - // delegate the call to get_ptr<>() - auto* ptr = obj.template get_ptr::type>(); - - if (JSON_HEDLEY_LIKELY(ptr != nullptr)) - { - return *ptr; - } - - JSON_THROW(type_error::create(303, "incompatible ReferenceType for get_ref, actual type is " + std::string(obj.type_name()), obj)); - } - - public: - /// @name value access - /// Direct access to the stored value of a JSON value. - /// @{ - - /// @brief get a pointer value (implicit) - /// @sa https://json.nlohmann.me/api/basic_json/get_ptr/ - template::value, int>::type = 0> - auto get_ptr() noexcept -> decltype(std::declval().get_impl_ptr(std::declval())) - { - // delegate the call to get_impl_ptr<>() - return get_impl_ptr(static_cast(nullptr)); - } - - /// @brief get a pointer value (implicit) - /// @sa https://json.nlohmann.me/api/basic_json/get_ptr/ - template < typename PointerType, typename std::enable_if < - std::is_pointer::value&& - std::is_const::type>::value, int >::type = 0 > - constexpr auto get_ptr() const noexcept -> decltype(std::declval().get_impl_ptr(std::declval())) - { - // delegate the call to get_impl_ptr<>() const - return get_impl_ptr(static_cast(nullptr)); - } - - private: - /*! - @brief get a value (explicit) - - Explicit type conversion between the JSON value and a compatible value - which is [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible) - and [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible). - The value is converted by calling the @ref json_serializer - `from_json()` method. - - The function is equivalent to executing - @code {.cpp} - ValueType ret; - JSONSerializer::from_json(*this, ret); - return ret; - @endcode - - This overloads is chosen if: - - @a ValueType is not @ref basic_json, - - @ref json_serializer has a `from_json()` method of the form - `void from_json(const basic_json&, ValueType&)`, and - - @ref json_serializer does not have a `from_json()` method of - the form `ValueType from_json(const basic_json&)` - - @tparam ValueType the returned value type - - @return copy of the JSON value, converted to @a ValueType - - @throw what @ref json_serializer `from_json()` method throws - - @liveexample{The example below shows several conversions from JSON values - to other types. There a few things to note: (1) Floating-point numbers can - be converted to integers\, (2) A JSON array can be converted to a standard - `std::vector`\, (3) A JSON object can be converted to C++ - associative containers such as `std::unordered_map`.,get__ValueType_const} - - @since version 2.1.0 - */ - template < typename ValueType, - detail::enable_if_t < - detail::is_default_constructible::value&& - detail::has_from_json::value, - int > = 0 > - ValueType get_impl(detail::priority_tag<0> /*unused*/) const noexcept(noexcept( - JSONSerializer::from_json(std::declval(), std::declval()))) - { - auto ret = ValueType(); - JSONSerializer::from_json(*this, ret); - return ret; - } - - /*! - @brief get a value (explicit); special case - - Explicit type conversion between the JSON value and a compatible value - which is **not** [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible) - and **not** [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible). - The value is converted by calling the @ref json_serializer - `from_json()` method. - - The function is equivalent to executing - @code {.cpp} - return JSONSerializer::from_json(*this); - @endcode - - This overloads is chosen if: - - @a ValueType is not @ref basic_json and - - @ref json_serializer has a `from_json()` method of the form - `ValueType from_json(const basic_json&)` - - @note If @ref json_serializer has both overloads of - `from_json()`, this one is chosen. - - @tparam ValueType the returned value type - - @return copy of the JSON value, converted to @a ValueType - - @throw what @ref json_serializer `from_json()` method throws - - @since version 2.1.0 - */ - template < typename ValueType, - detail::enable_if_t < - detail::has_non_default_from_json::value, - int > = 0 > - ValueType get_impl(detail::priority_tag<1> /*unused*/) const noexcept(noexcept( - JSONSerializer::from_json(std::declval()))) - { - return JSONSerializer::from_json(*this); - } - - /*! - @brief get special-case overload - - This overloads converts the current @ref basic_json in a different - @ref basic_json type - - @tparam BasicJsonType == @ref basic_json - - @return a copy of *this, converted into @a BasicJsonType - - @complexity Depending on the implementation of the called `from_json()` - method. - - @since version 3.2.0 - */ - template < typename BasicJsonType, - detail::enable_if_t < - detail::is_basic_json::value, - int > = 0 > - BasicJsonType get_impl(detail::priority_tag<2> /*unused*/) const - { - return *this; - } - - /*! - @brief get special-case overload - - This overloads avoids a lot of template boilerplate, it can be seen as the - identity method - - @tparam BasicJsonType == @ref basic_json - - @return a copy of *this - - @complexity Constant. - - @since version 2.1.0 - */ - template::value, - int> = 0> - basic_json get_impl(detail::priority_tag<3> /*unused*/) const - { - return *this; - } - - /*! - @brief get a pointer value (explicit) - @copydoc get() - */ - template::value, - int> = 0> - constexpr auto get_impl(detail::priority_tag<4> /*unused*/) const noexcept - -> decltype(std::declval().template get_ptr()) - { - // delegate the call to get_ptr - return get_ptr(); - } - - public: - /*! - @brief get a (pointer) value (explicit) - - Performs explicit type conversion between the JSON value and a compatible value if required. - - - If the requested type is a pointer to the internally stored JSON value that pointer is returned. - No copies are made. - - - If the requested type is the current @ref basic_json, or a different @ref basic_json convertible - from the current @ref basic_json. - - - Otherwise the value is converted by calling the @ref json_serializer `from_json()` - method. - - @tparam ValueTypeCV the provided value type - @tparam ValueType the returned value type - - @return copy of the JSON value, converted to @tparam ValueType if necessary - - @throw what @ref json_serializer `from_json()` method throws if conversion is required - - @since version 2.1.0 - */ - template < typename ValueTypeCV, typename ValueType = detail::uncvref_t> -#if defined(JSON_HAS_CPP_14) - constexpr -#endif - auto get() const noexcept( - noexcept(std::declval().template get_impl(detail::priority_tag<4> {}))) - -> decltype(std::declval().template get_impl(detail::priority_tag<4> {})) - { - // we cannot static_assert on ValueTypeCV being non-const, because - // there is support for get(), which is why we - // still need the uncvref - static_assert(!std::is_reference::value, - "get() cannot be used with reference types, you might want to use get_ref()"); - return get_impl(detail::priority_tag<4> {}); - } - - /*! - @brief get a pointer value (explicit) - - Explicit pointer access to the internally stored JSON value. No copies are - made. - - @warning The pointer becomes invalid if the underlying JSON object - changes. - - @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref - object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, - @ref number_unsigned_t, or @ref number_float_t. - - @return pointer to the internally stored JSON value if the requested - pointer type @a PointerType fits to the JSON value; `nullptr` otherwise - - @complexity Constant. - - @liveexample{The example below shows how pointers to internal values of a - JSON value can be requested. Note that no type conversions are made and a - `nullptr` is returned if the value and the requested pointer type does not - match.,get__PointerType} - - @sa see @ref get_ptr() for explicit pointer-member access - - @since version 1.0.0 - */ - template::value, int>::type = 0> - auto get() noexcept -> decltype(std::declval().template get_ptr()) - { - // delegate the call to get_ptr - return get_ptr(); - } - - /// @brief get a value (explicit) - /// @sa https://json.nlohmann.me/api/basic_json/get_to/ - template < typename ValueType, - detail::enable_if_t < - !detail::is_basic_json::value&& - detail::has_from_json::value, - int > = 0 > - ValueType & get_to(ValueType& v) const noexcept(noexcept( - JSONSerializer::from_json(std::declval(), v))) - { - JSONSerializer::from_json(*this, v); - return v; - } - - // specialization to allow calling get_to with a basic_json value - // see https://github.com/nlohmann/json/issues/2175 - template::value, - int> = 0> - ValueType & get_to(ValueType& v) const - { - v = *this; - return v; - } - - template < - typename T, std::size_t N, - typename Array = T (&)[N], // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) - detail::enable_if_t < - detail::has_from_json::value, int > = 0 > - Array get_to(T (&v)[N]) const // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) - noexcept(noexcept(JSONSerializer::from_json( - std::declval(), v))) - { - JSONSerializer::from_json(*this, v); - return v; - } - - /// @brief get a reference value (implicit) - /// @sa https://json.nlohmann.me/api/basic_json/get_ref/ - template::value, int>::type = 0> - ReferenceType get_ref() - { - // delegate call to get_ref_impl - return get_ref_impl(*this); - } - - /// @brief get a reference value (implicit) - /// @sa https://json.nlohmann.me/api/basic_json/get_ref/ - template < typename ReferenceType, typename std::enable_if < - std::is_reference::value&& - std::is_const::type>::value, int >::type = 0 > - ReferenceType get_ref() const - { - // delegate call to get_ref_impl - return get_ref_impl(*this); - } - - /*! - @brief get a value (implicit) - - Implicit type conversion between the JSON value and a compatible value. - The call is realized by calling @ref get() const. - - @tparam ValueType non-pointer type compatible to the JSON value, for - instance `int` for JSON integer numbers, `bool` for JSON booleans, or - `std::vector` types for JSON arrays. The character type of @ref string_t - as well as an initializer list of this type is excluded to avoid - ambiguities as these types implicitly convert to `std::string`. - - @return copy of the JSON value, converted to type @a ValueType - - @throw type_error.302 in case passed type @a ValueType is incompatible - to the JSON value type (e.g., the JSON value is of type boolean, but a - string is requested); see example below - - @complexity Linear in the size of the JSON value. - - @liveexample{The example below shows several conversions from JSON values - to other types. There a few things to note: (1) Floating-point numbers can - be converted to integers\, (2) A JSON array can be converted to a standard - `std::vector`\, (3) A JSON object can be converted to C++ - associative containers such as `std::unordered_map`.,operator__ValueType} - - @since version 1.0.0 - */ - template < typename ValueType, typename std::enable_if < - detail::conjunction < - detail::negation>, - detail::negation>>, - detail::negation>, - detail::negation>, - detail::negation>>, - -#if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) && _MSC_VER >= 1910 && _MSC_VER <= 1914)) - detail::negation>, -#endif - detail::is_detected_lazy - >::value, int >::type = 0 > - JSON_EXPLICIT operator ValueType() const - { - // delegate the call to get<>() const - return get(); - } - - /// @brief get a binary value - /// @sa https://json.nlohmann.me/api/basic_json/get_binary/ - binary_t& get_binary() - { - if (!is_binary()) - { - JSON_THROW(type_error::create(302, "type must be binary, but is " + std::string(type_name()), *this)); - } - - return *get_ptr(); - } - - /// @brief get a binary value - /// @sa https://json.nlohmann.me/api/basic_json/get_binary/ - const binary_t& get_binary() const - { - if (!is_binary()) - { - JSON_THROW(type_error::create(302, "type must be binary, but is " + std::string(type_name()), *this)); - } - - return *get_ptr(); - } - - /// @} - - - //////////////////// - // element access // - //////////////////// - - /// @name element access - /// Access to the JSON value. - /// @{ - - /// @brief access specified array element with bounds checking - /// @sa https://json.nlohmann.me/api/basic_json/at/ - reference at(size_type idx) - { - // at only works for arrays - if (JSON_HEDLEY_LIKELY(is_array())) - { - JSON_TRY - { - return set_parent(m_value.array->at(idx)); - } - JSON_CATCH (std::out_of_range&) - { - // create better exception explanation - JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range", *this)); - } - } - else - { - JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()), *this)); - } - } - - /// @brief access specified array element with bounds checking - /// @sa https://json.nlohmann.me/api/basic_json/at/ - const_reference at(size_type idx) const - { - // at only works for arrays - if (JSON_HEDLEY_LIKELY(is_array())) - { - JSON_TRY - { - return m_value.array->at(idx); - } - JSON_CATCH (std::out_of_range&) - { - // create better exception explanation - JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range", *this)); - } - } - else - { - JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()), *this)); - } - } - - /// @brief access specified object element with bounds checking - /// @sa https://json.nlohmann.me/api/basic_json/at/ - reference at(const typename object_t::key_type& key) - { - // at only works for objects - if (JSON_HEDLEY_LIKELY(is_object())) - { - JSON_TRY - { - return set_parent(m_value.object->at(key)); - } - JSON_CATCH (std::out_of_range&) - { - // create better exception explanation - JSON_THROW(out_of_range::create(403, "key '" + key + "' not found", *this)); - } - } - else - { - JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()), *this)); - } - } - - /// @brief access specified object element with bounds checking - /// @sa https://json.nlohmann.me/api/basic_json/at/ - const_reference at(const typename object_t::key_type& key) const - { - // at only works for objects - if (JSON_HEDLEY_LIKELY(is_object())) - { - JSON_TRY - { - return m_value.object->at(key); - } - JSON_CATCH (std::out_of_range&) - { - // create better exception explanation - JSON_THROW(out_of_range::create(403, "key '" + key + "' not found", *this)); - } - } - else - { - JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()), *this)); - } - } - - /// @brief access specified array element - /// @sa https://json.nlohmann.me/api/basic_json/operator%5B%5D/ - reference operator[](size_type idx) - { - // implicitly convert null value to an empty array - if (is_null()) - { - m_type = value_t::array; - m_value.array = create(); - assert_invariant(); - } - - // operator[] only works for arrays - if (JSON_HEDLEY_LIKELY(is_array())) - { - // fill up array with null values if given idx is outside range - if (idx >= m_value.array->size()) - { -#if JSON_DIAGNOSTICS - // remember array size & capacity before resizing - const auto old_size = m_value.array->size(); - const auto old_capacity = m_value.array->capacity(); -#endif - m_value.array->resize(idx + 1); - -#if JSON_DIAGNOSTICS - if (JSON_HEDLEY_UNLIKELY(m_value.array->capacity() != old_capacity)) - { - // capacity has changed: update all parents - set_parents(); - } - else - { - // set parent for values added above - set_parents(begin() + static_cast(old_size), static_cast(idx + 1 - old_size)); - } -#endif - assert_invariant(); - } - - return m_value.array->operator[](idx); - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name()), *this)); - } - - /// @brief access specified array element - /// @sa https://json.nlohmann.me/api/basic_json/operator%5B%5D/ - const_reference operator[](size_type idx) const - { - // const operator[] only works for arrays - if (JSON_HEDLEY_LIKELY(is_array())) - { - return m_value.array->operator[](idx); - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name()), *this)); - } - - /// @brief access specified object element - /// @sa https://json.nlohmann.me/api/basic_json/operator%5B%5D/ - reference operator[](const typename object_t::key_type& key) - { - // implicitly convert null value to an empty object - if (is_null()) - { - m_type = value_t::object; - m_value.object = create(); - assert_invariant(); - } - - // operator[] only works for objects - if (JSON_HEDLEY_LIKELY(is_object())) - { - return set_parent(m_value.object->operator[](key)); - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()), *this)); - } - - /// @brief access specified object element - /// @sa https://json.nlohmann.me/api/basic_json/operator%5B%5D/ - const_reference operator[](const typename object_t::key_type& key) const - { - // const operator[] only works for objects - if (JSON_HEDLEY_LIKELY(is_object())) - { - JSON_ASSERT(m_value.object->find(key) != m_value.object->end()); - return m_value.object->find(key)->second; - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()), *this)); - } - - /// @brief access specified object element - /// @sa https://json.nlohmann.me/api/basic_json/operator%5B%5D/ - template - JSON_HEDLEY_NON_NULL(2) - reference operator[](T* key) - { - // implicitly convert null to object - if (is_null()) - { - m_type = value_t::object; - m_value = value_t::object; - assert_invariant(); - } - - // at only works for objects - if (JSON_HEDLEY_LIKELY(is_object())) - { - return set_parent(m_value.object->operator[](key)); - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()), *this)); - } - - /// @brief access specified object element - /// @sa https://json.nlohmann.me/api/basic_json/operator%5B%5D/ - template - JSON_HEDLEY_NON_NULL(2) - const_reference operator[](T* key) const - { - // at only works for objects - if (JSON_HEDLEY_LIKELY(is_object())) - { - JSON_ASSERT(m_value.object->find(key) != m_value.object->end()); - return m_value.object->find(key)->second; - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()), *this)); - } - - /// @brief access specified object element with default value - /// @sa https://json.nlohmann.me/api/basic_json/value/ - /// using std::is_convertible in a std::enable_if will fail when using explicit conversions - template < class ValueType, typename std::enable_if < - detail::is_getable::value - && !std::is_same::value, int >::type = 0 > - ValueType value(const typename object_t::key_type& key, const ValueType& default_value) const - { - // at only works for objects - if (JSON_HEDLEY_LIKELY(is_object())) - { - // if key is found, return value and given default value otherwise - const auto it = find(key); - if (it != end()) - { - return it->template get(); - } - - return default_value; - } - - JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name()), *this)); - } - - /// @brief access specified object element with default value - /// @sa https://json.nlohmann.me/api/basic_json/value/ - /// overload for a default value of type const char* - string_t value(const typename object_t::key_type& key, const char* default_value) const - { - return value(key, string_t(default_value)); - } - - /// @brief access specified object element via JSON Pointer with default value - /// @sa https://json.nlohmann.me/api/basic_json/value/ - template::value, int>::type = 0> - ValueType value(const json_pointer& ptr, const ValueType& default_value) const - { - // at only works for objects - if (JSON_HEDLEY_LIKELY(is_object())) - { - // if pointer resolves a value, return it or use default value - JSON_TRY - { - return ptr.get_checked(this).template get(); - } - JSON_INTERNAL_CATCH (out_of_range&) - { - return default_value; - } - } - - JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name()), *this)); - } - - /// @brief access specified object element via JSON Pointer with default value - /// @sa https://json.nlohmann.me/api/basic_json/value/ - /// overload for a default value of type const char* - JSON_HEDLEY_NON_NULL(3) - string_t value(const json_pointer& ptr, const char* default_value) const - { - return value(ptr, string_t(default_value)); - } - - /// @brief access the first element - /// @sa https://json.nlohmann.me/api/basic_json/front/ - reference front() - { - return *begin(); - } - - /// @brief access the first element - /// @sa https://json.nlohmann.me/api/basic_json/front/ - const_reference front() const - { - return *cbegin(); - } - - /// @brief access the last element - /// @sa https://json.nlohmann.me/api/basic_json/back/ - reference back() - { - auto tmp = end(); - --tmp; - return *tmp; - } - - /// @brief access the last element - /// @sa https://json.nlohmann.me/api/basic_json/back/ - const_reference back() const - { - auto tmp = cend(); - --tmp; - return *tmp; - } - - /// @brief remove element given an iterator - /// @sa https://json.nlohmann.me/api/basic_json/erase/ - template < class IteratorType, typename std::enable_if < - std::is_same::value || - std::is_same::value, int >::type - = 0 > - IteratorType erase(IteratorType pos) - { - // make sure iterator fits the current value - if (JSON_HEDLEY_UNLIKELY(this != pos.m_object)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value", *this)); - } - - IteratorType result = end(); - - switch (m_type) - { - case value_t::boolean: - case value_t::number_float: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::string: - case value_t::binary: - { - if (JSON_HEDLEY_UNLIKELY(!pos.m_it.primitive_iterator.is_begin())) - { - JSON_THROW(invalid_iterator::create(205, "iterator out of range", *this)); - } - - if (is_string()) - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, m_value.string); - std::allocator_traits::deallocate(alloc, m_value.string, 1); - m_value.string = nullptr; - } - else if (is_binary()) - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, m_value.binary); - std::allocator_traits::deallocate(alloc, m_value.binary, 1); - m_value.binary = nullptr; - } - - m_type = value_t::null; - assert_invariant(); - break; - } - - case value_t::object: - { - result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator); - break; - } - - case value_t::array: - { - result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator); - break; - } - - case value_t::null: - case value_t::discarded: - default: - JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()), *this)); - } - - return result; - } - - /// @brief remove elements given an iterator range - /// @sa https://json.nlohmann.me/api/basic_json/erase/ - template < class IteratorType, typename std::enable_if < - std::is_same::value || - std::is_same::value, int >::type - = 0 > - IteratorType erase(IteratorType first, IteratorType last) - { - // make sure iterator fits the current value - if (JSON_HEDLEY_UNLIKELY(this != first.m_object || this != last.m_object)) - { - JSON_THROW(invalid_iterator::create(203, "iterators do not fit current value", *this)); - } - - IteratorType result = end(); - - switch (m_type) - { - case value_t::boolean: - case value_t::number_float: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::string: - case value_t::binary: - { - if (JSON_HEDLEY_LIKELY(!first.m_it.primitive_iterator.is_begin() - || !last.m_it.primitive_iterator.is_end())) - { - JSON_THROW(invalid_iterator::create(204, "iterators out of range", *this)); - } - - if (is_string()) - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, m_value.string); - std::allocator_traits::deallocate(alloc, m_value.string, 1); - m_value.string = nullptr; - } - else if (is_binary()) - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, m_value.binary); - std::allocator_traits::deallocate(alloc, m_value.binary, 1); - m_value.binary = nullptr; - } - - m_type = value_t::null; - assert_invariant(); - break; - } - - case value_t::object: - { - result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator, - last.m_it.object_iterator); - break; - } - - case value_t::array: - { - result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator, - last.m_it.array_iterator); - break; - } - - case value_t::null: - case value_t::discarded: - default: - JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()), *this)); - } - - return result; - } - - /// @brief remove element from a JSON object given a key - /// @sa https://json.nlohmann.me/api/basic_json/erase/ - size_type erase(const typename object_t::key_type& key) - { - // this erase only works for objects - if (JSON_HEDLEY_LIKELY(is_object())) - { - return m_value.object->erase(key); - } - - JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()), *this)); - } - - /// @brief remove element from a JSON array given an index - /// @sa https://json.nlohmann.me/api/basic_json/erase/ - void erase(const size_type idx) - { - // this erase only works for arrays - if (JSON_HEDLEY_LIKELY(is_array())) - { - if (JSON_HEDLEY_UNLIKELY(idx >= size())) - { - JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range", *this)); - } - - m_value.array->erase(m_value.array->begin() + static_cast(idx)); - } - else - { - JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()), *this)); - } - } - - /// @} - - - //////////// - // lookup // - //////////// - - /// @name lookup - /// @{ - - /// @brief find an element in a JSON object - /// @sa https://json.nlohmann.me/api/basic_json/find/ - template - iterator find(KeyT&& key) - { - auto result = end(); - - if (is_object()) - { - result.m_it.object_iterator = m_value.object->find(std::forward(key)); - } - - return result; - } - - /// @brief find an element in a JSON object - /// @sa https://json.nlohmann.me/api/basic_json/find/ - template - const_iterator find(KeyT&& key) const - { - auto result = cend(); - - if (is_object()) - { - result.m_it.object_iterator = m_value.object->find(std::forward(key)); - } - - return result; - } - - /// @brief returns the number of occurrences of a key in a JSON object - /// @sa https://json.nlohmann.me/api/basic_json/count/ - template - size_type count(KeyT&& key) const - { - // return 0 for all nonobject types - return is_object() ? m_value.object->count(std::forward(key)) : 0; - } - - /// @brief check the existence of an element in a JSON object - /// @sa https://json.nlohmann.me/api/basic_json/contains/ - template < typename KeyT, typename std::enable_if < - !std::is_same::type, json_pointer>::value, int >::type = 0 > - bool contains(KeyT && key) const - { - return is_object() && m_value.object->find(std::forward(key)) != m_value.object->end(); - } - - /// @brief check the existence of an element in a JSON object given a JSON pointer - /// @sa https://json.nlohmann.me/api/basic_json/contains/ - bool contains(const json_pointer& ptr) const - { - return ptr.contains(this); - } - - /// @} - - - /////////////// - // iterators // - /////////////// - - /// @name iterators - /// @{ - - /// @brief returns an iterator to the first element - /// @sa https://json.nlohmann.me/api/basic_json/begin/ - iterator begin() noexcept - { - iterator result(this); - result.set_begin(); - return result; - } - - /// @brief returns an iterator to the first element - /// @sa https://json.nlohmann.me/api/basic_json/begin/ - const_iterator begin() const noexcept - { - return cbegin(); - } - - /// @brief returns a const iterator to the first element - /// @sa https://json.nlohmann.me/api/basic_json/cbegin/ - const_iterator cbegin() const noexcept - { - const_iterator result(this); - result.set_begin(); - return result; - } - - /// @brief returns an iterator to one past the last element - /// @sa https://json.nlohmann.me/api/basic_json/end/ - iterator end() noexcept - { - iterator result(this); - result.set_end(); - return result; - } - - /// @brief returns an iterator to one past the last element - /// @sa https://json.nlohmann.me/api/basic_json/end/ - const_iterator end() const noexcept - { - return cend(); - } - - /// @brief returns an iterator to one past the last element - /// @sa https://json.nlohmann.me/api/basic_json/cend/ - const_iterator cend() const noexcept - { - const_iterator result(this); - result.set_end(); - return result; - } - - /// @brief returns an iterator to the reverse-beginning - /// @sa https://json.nlohmann.me/api/basic_json/rbegin/ - reverse_iterator rbegin() noexcept - { - return reverse_iterator(end()); - } - - /// @brief returns an iterator to the reverse-beginning - /// @sa https://json.nlohmann.me/api/basic_json/rbegin/ - const_reverse_iterator rbegin() const noexcept - { - return crbegin(); - } - - /// @brief returns an iterator to the reverse-end - /// @sa https://json.nlohmann.me/api/basic_json/rend/ - reverse_iterator rend() noexcept - { - return reverse_iterator(begin()); - } - - /// @brief returns an iterator to the reverse-end - /// @sa https://json.nlohmann.me/api/basic_json/rend/ - const_reverse_iterator rend() const noexcept - { - return crend(); - } - - /// @brief returns a const reverse iterator to the last element - /// @sa https://json.nlohmann.me/api/basic_json/crbegin/ - const_reverse_iterator crbegin() const noexcept - { - return const_reverse_iterator(cend()); - } - - /// @brief returns a const reverse iterator to one before the first - /// @sa https://json.nlohmann.me/api/basic_json/crend/ - const_reverse_iterator crend() const noexcept - { - return const_reverse_iterator(cbegin()); - } - - public: - /// @brief wrapper to access iterator member functions in range-based for - /// @sa https://json.nlohmann.me/api/basic_json/items/ - /// @deprecated This function is deprecated since 3.1.0 and will be removed in - /// version 4.0.0 of the library. Please use @ref items() instead; - /// that is, replace `json::iterator_wrapper(j)` with `j.items()`. - JSON_HEDLEY_DEPRECATED_FOR(3.1.0, items()) - static iteration_proxy iterator_wrapper(reference ref) noexcept - { - return ref.items(); - } - - /// @brief wrapper to access iterator member functions in range-based for - /// @sa https://json.nlohmann.me/api/basic_json/items/ - /// @deprecated This function is deprecated since 3.1.0 and will be removed in - /// version 4.0.0 of the library. Please use @ref items() instead; - /// that is, replace `json::iterator_wrapper(j)` with `j.items()`. - JSON_HEDLEY_DEPRECATED_FOR(3.1.0, items()) - static iteration_proxy iterator_wrapper(const_reference ref) noexcept - { - return ref.items(); - } - - /// @brief helper to access iterator member functions in range-based for - /// @sa https://json.nlohmann.me/api/basic_json/items/ - iteration_proxy items() noexcept - { - return iteration_proxy(*this); - } - - /// @brief helper to access iterator member functions in range-based for - /// @sa https://json.nlohmann.me/api/basic_json/items/ - iteration_proxy items() const noexcept - { - return iteration_proxy(*this); - } - - /// @} - - - ////////////// - // capacity // - ////////////// - - /// @name capacity - /// @{ - - /// @brief checks whether the container is empty. - /// @sa https://json.nlohmann.me/api/basic_json/empty/ - bool empty() const noexcept - { - switch (m_type) - { - case value_t::null: - { - // null values are empty - return true; - } - - case value_t::array: - { - // delegate call to array_t::empty() - return m_value.array->empty(); - } - - case value_t::object: - { - // delegate call to object_t::empty() - return m_value.object->empty(); - } - - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - { - // all other types are nonempty - return false; - } - } - } - - /// @brief returns the number of elements - /// @sa https://json.nlohmann.me/api/basic_json/size/ - size_type size() const noexcept - { - switch (m_type) - { - case value_t::null: - { - // null values are empty - return 0; - } - - case value_t::array: - { - // delegate call to array_t::size() - return m_value.array->size(); - } - - case value_t::object: - { - // delegate call to object_t::size() - return m_value.object->size(); - } - - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - { - // all other types have size 1 - return 1; - } - } - } - - /// @brief returns the maximum possible number of elements - /// @sa https://json.nlohmann.me/api/basic_json/max_size/ - size_type max_size() const noexcept - { - switch (m_type) - { - case value_t::array: - { - // delegate call to array_t::max_size() - return m_value.array->max_size(); - } - - case value_t::object: - { - // delegate call to object_t::max_size() - return m_value.object->max_size(); - } - - case value_t::null: - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - { - // all other types have max_size() == size() - return size(); - } - } - } - - /// @} - - - /////////////// - // modifiers // - /////////////// - - /// @name modifiers - /// @{ - - /// @brief clears the contents - /// @sa https://json.nlohmann.me/api/basic_json/clear/ - void clear() noexcept - { - switch (m_type) - { - case value_t::number_integer: - { - m_value.number_integer = 0; - break; - } - - case value_t::number_unsigned: - { - m_value.number_unsigned = 0; - break; - } - - case value_t::number_float: - { - m_value.number_float = 0.0; - break; - } - - case value_t::boolean: - { - m_value.boolean = false; - break; - } - - case value_t::string: - { - m_value.string->clear(); - break; - } - - case value_t::binary: - { - m_value.binary->clear(); - break; - } - - case value_t::array: - { - m_value.array->clear(); - break; - } - - case value_t::object: - { - m_value.object->clear(); - break; - } - - case value_t::null: - case value_t::discarded: - default: - break; - } - } - - /// @brief add an object to an array - /// @sa https://json.nlohmann.me/api/basic_json/push_back/ - void push_back(basic_json&& val) - { - // push_back only works for null objects or arrays - if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_array()))) - { - JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()), *this)); - } - - // transform null object into an array - if (is_null()) - { - m_type = value_t::array; - m_value = value_t::array; - assert_invariant(); - } - - // add element to array (move semantics) - const auto old_capacity = m_value.array->capacity(); - m_value.array->push_back(std::move(val)); - set_parent(m_value.array->back(), old_capacity); - // if val is moved from, basic_json move constructor marks it null, so we do not call the destructor - } - - /// @brief add an object to an array - /// @sa https://json.nlohmann.me/api/basic_json/operator+=/ - reference operator+=(basic_json&& val) - { - push_back(std::move(val)); - return *this; - } - - /// @brief add an object to an array - /// @sa https://json.nlohmann.me/api/basic_json/push_back/ - void push_back(const basic_json& val) - { - // push_back only works for null objects or arrays - if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_array()))) - { - JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()), *this)); - } - - // transform null object into an array - if (is_null()) - { - m_type = value_t::array; - m_value = value_t::array; - assert_invariant(); - } - - // add element to array - const auto old_capacity = m_value.array->capacity(); - m_value.array->push_back(val); - set_parent(m_value.array->back(), old_capacity); - } - - /// @brief add an object to an array - /// @sa https://json.nlohmann.me/api/basic_json/operator+=/ - reference operator+=(const basic_json& val) - { - push_back(val); - return *this; - } - - /// @brief add an object to an object - /// @sa https://json.nlohmann.me/api/basic_json/push_back/ - void push_back(const typename object_t::value_type& val) - { - // push_back only works for null objects or objects - if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_object()))) - { - JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()), *this)); - } - - // transform null object into an object - if (is_null()) - { - m_type = value_t::object; - m_value = value_t::object; - assert_invariant(); - } - - // add element to object - auto res = m_value.object->insert(val); - set_parent(res.first->second); - } - - /// @brief add an object to an object - /// @sa https://json.nlohmann.me/api/basic_json/operator+=/ - reference operator+=(const typename object_t::value_type& val) - { - push_back(val); - return *this; - } - - /// @brief add an object to an object - /// @sa https://json.nlohmann.me/api/basic_json/push_back/ - void push_back(initializer_list_t init) - { - if (is_object() && init.size() == 2 && (*init.begin())->is_string()) - { - basic_json&& key = init.begin()->moved_or_copied(); - push_back(typename object_t::value_type( - std::move(key.get_ref()), (init.begin() + 1)->moved_or_copied())); - } - else - { - push_back(basic_json(init)); - } - } - - /// @brief add an object to an object - /// @sa https://json.nlohmann.me/api/basic_json/operator+=/ - reference operator+=(initializer_list_t init) - { - push_back(init); - return *this; - } - - /// @brief add an object to an array - /// @sa https://json.nlohmann.me/api/basic_json/emplace_back/ - template - reference emplace_back(Args&& ... args) - { - // emplace_back only works for null objects or arrays - if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_array()))) - { - JSON_THROW(type_error::create(311, "cannot use emplace_back() with " + std::string(type_name()), *this)); - } - - // transform null object into an array - if (is_null()) - { - m_type = value_t::array; - m_value = value_t::array; - assert_invariant(); - } - - // add element to array (perfect forwarding) - const auto old_capacity = m_value.array->capacity(); - m_value.array->emplace_back(std::forward(args)...); - return set_parent(m_value.array->back(), old_capacity); - } - - /// @brief add an object to an object if key does not exist - /// @sa https://json.nlohmann.me/api/basic_json/emplace/ - template - std::pair emplace(Args&& ... args) - { - // emplace only works for null objects or arrays - if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_object()))) - { - JSON_THROW(type_error::create(311, "cannot use emplace() with " + std::string(type_name()), *this)); - } - - // transform null object into an object - if (is_null()) - { - m_type = value_t::object; - m_value = value_t::object; - assert_invariant(); - } - - // add element to array (perfect forwarding) - auto res = m_value.object->emplace(std::forward(args)...); - set_parent(res.first->second); - - // create result iterator and set iterator to the result of emplace - auto it = begin(); - it.m_it.object_iterator = res.first; - - // return pair of iterator and boolean - return {it, res.second}; - } - - /// Helper for insertion of an iterator - /// @note: This uses std::distance to support GCC 4.8, - /// see https://github.com/nlohmann/json/pull/1257 - template - iterator insert_iterator(const_iterator pos, Args&& ... args) - { - iterator result(this); - JSON_ASSERT(m_value.array != nullptr); - - auto insert_pos = std::distance(m_value.array->begin(), pos.m_it.array_iterator); - m_value.array->insert(pos.m_it.array_iterator, std::forward(args)...); - result.m_it.array_iterator = m_value.array->begin() + insert_pos; - - // This could have been written as: - // result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val); - // but the return value of insert is missing in GCC 4.8, so it is written this way instead. - - set_parents(); - return result; - } - - /// @brief inserts element into array - /// @sa https://json.nlohmann.me/api/basic_json/insert/ - iterator insert(const_iterator pos, const basic_json& val) - { - // insert only works for arrays - if (JSON_HEDLEY_LIKELY(is_array())) - { - // check if iterator pos fits to this JSON value - if (JSON_HEDLEY_UNLIKELY(pos.m_object != this)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value", *this)); - } - - // insert to array and return iterator - return insert_iterator(pos, val); - } - - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()), *this)); - } - - /// @brief inserts element into array - /// @sa https://json.nlohmann.me/api/basic_json/insert/ - iterator insert(const_iterator pos, basic_json&& val) - { - return insert(pos, val); - } - - /// @brief inserts copies of element into array - /// @sa https://json.nlohmann.me/api/basic_json/insert/ - iterator insert(const_iterator pos, size_type cnt, const basic_json& val) - { - // insert only works for arrays - if (JSON_HEDLEY_LIKELY(is_array())) - { - // check if iterator pos fits to this JSON value - if (JSON_HEDLEY_UNLIKELY(pos.m_object != this)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value", *this)); - } - - // insert to array and return iterator - return insert_iterator(pos, cnt, val); - } - - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()), *this)); - } - - /// @brief inserts range of elements into array - /// @sa https://json.nlohmann.me/api/basic_json/insert/ - iterator insert(const_iterator pos, const_iterator first, const_iterator last) - { - // insert only works for arrays - if (JSON_HEDLEY_UNLIKELY(!is_array())) - { - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()), *this)); - } - - // check if iterator pos fits to this JSON value - if (JSON_HEDLEY_UNLIKELY(pos.m_object != this)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value", *this)); - } - - // check if range iterators belong to the same JSON object - if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object)) - { - JSON_THROW(invalid_iterator::create(210, "iterators do not fit", *this)); - } - - if (JSON_HEDLEY_UNLIKELY(first.m_object == this)) - { - JSON_THROW(invalid_iterator::create(211, "passed iterators may not belong to container", *this)); - } - - // insert to array and return iterator - return insert_iterator(pos, first.m_it.array_iterator, last.m_it.array_iterator); - } - - /// @brief inserts elements from initializer list into array - /// @sa https://json.nlohmann.me/api/basic_json/insert/ - iterator insert(const_iterator pos, initializer_list_t ilist) - { - // insert only works for arrays - if (JSON_HEDLEY_UNLIKELY(!is_array())) - { - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()), *this)); - } - - // check if iterator pos fits to this JSON value - if (JSON_HEDLEY_UNLIKELY(pos.m_object != this)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value", *this)); - } - - // insert to array and return iterator - return insert_iterator(pos, ilist.begin(), ilist.end()); - } - - /// @brief inserts range of elements into object - /// @sa https://json.nlohmann.me/api/basic_json/insert/ - void insert(const_iterator first, const_iterator last) - { - // insert only works for objects - if (JSON_HEDLEY_UNLIKELY(!is_object())) - { - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()), *this)); - } - - // check if range iterators belong to the same JSON object - if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object)) - { - JSON_THROW(invalid_iterator::create(210, "iterators do not fit", *this)); - } - - // passed iterators must belong to objects - if (JSON_HEDLEY_UNLIKELY(!first.m_object->is_object())) - { - JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects", *this)); - } - - m_value.object->insert(first.m_it.object_iterator, last.m_it.object_iterator); - } - - /// @brief updates a JSON object from another object, overwriting existing keys - /// @sa https://json.nlohmann.me/api/basic_json/update/ - void update(const_reference j, bool merge_objects = false) - { - update(j.begin(), j.end(), merge_objects); - } - - /// @brief updates a JSON object from another object, overwriting existing keys - /// @sa https://json.nlohmann.me/api/basic_json/update/ - void update(const_iterator first, const_iterator last, bool merge_objects = false) - { - // implicitly convert null value to an empty object - if (is_null()) - { - m_type = value_t::object; - m_value.object = create(); - assert_invariant(); - } - - if (JSON_HEDLEY_UNLIKELY(!is_object())) - { - JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name()), *this)); - } - - // check if range iterators belong to the same JSON object - if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object)) - { - JSON_THROW(invalid_iterator::create(210, "iterators do not fit", *this)); - } - - // passed iterators must belong to objects - if (JSON_HEDLEY_UNLIKELY(!first.m_object->is_object())) - { - JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(first.m_object->type_name()), *first.m_object)); - } - - for (auto it = first; it != last; ++it) - { - if (merge_objects && it.value().is_object()) - { - auto it2 = m_value.object->find(it.key()); - if (it2 != m_value.object->end()) - { - it2->second.update(it.value(), true); - continue; - } - } - m_value.object->operator[](it.key()) = it.value(); -#if JSON_DIAGNOSTICS - m_value.object->operator[](it.key()).m_parent = this; -#endif - } - } - - /// @brief exchanges the values - /// @sa https://json.nlohmann.me/api/basic_json/swap/ - void swap(reference other) noexcept ( - std::is_nothrow_move_constructible::value&& - std::is_nothrow_move_assignable::value&& - std::is_nothrow_move_constructible::value&& - std::is_nothrow_move_assignable::value - ) - { - std::swap(m_type, other.m_type); - std::swap(m_value, other.m_value); - - set_parents(); - other.set_parents(); - assert_invariant(); - } - - /// @brief exchanges the values - /// @sa https://json.nlohmann.me/api/basic_json/swap/ - friend void swap(reference left, reference right) noexcept ( - std::is_nothrow_move_constructible::value&& - std::is_nothrow_move_assignable::value&& - std::is_nothrow_move_constructible::value&& - std::is_nothrow_move_assignable::value - ) - { - left.swap(right); - } - - /// @brief exchanges the values - /// @sa https://json.nlohmann.me/api/basic_json/swap/ - void swap(array_t& other) // NOLINT(bugprone-exception-escape) - { - // swap only works for arrays - if (JSON_HEDLEY_LIKELY(is_array())) - { - std::swap(*(m_value.array), other); - } - else - { - JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()), *this)); - } - } - - /// @brief exchanges the values - /// @sa https://json.nlohmann.me/api/basic_json/swap/ - void swap(object_t& other) // NOLINT(bugprone-exception-escape) - { - // swap only works for objects - if (JSON_HEDLEY_LIKELY(is_object())) - { - std::swap(*(m_value.object), other); - } - else - { - JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()), *this)); - } - } - - /// @brief exchanges the values - /// @sa https://json.nlohmann.me/api/basic_json/swap/ - void swap(string_t& other) // NOLINT(bugprone-exception-escape) - { - // swap only works for strings - if (JSON_HEDLEY_LIKELY(is_string())) - { - std::swap(*(m_value.string), other); - } - else - { - JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()), *this)); - } - } - - /// @brief exchanges the values - /// @sa https://json.nlohmann.me/api/basic_json/swap/ - void swap(binary_t& other) // NOLINT(bugprone-exception-escape) - { - // swap only works for strings - if (JSON_HEDLEY_LIKELY(is_binary())) - { - std::swap(*(m_value.binary), other); - } - else - { - JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()), *this)); - } - } - - /// @brief exchanges the values - /// @sa https://json.nlohmann.me/api/basic_json/swap/ - void swap(typename binary_t::container_type& other) // NOLINT(bugprone-exception-escape) - { - // swap only works for strings - if (JSON_HEDLEY_LIKELY(is_binary())) - { - std::swap(*(m_value.binary), other); - } - else - { - JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()), *this)); - } - } - - /// @} - - public: - ////////////////////////////////////////// - // lexicographical comparison operators // - ////////////////////////////////////////// - - /// @name lexicographical comparison operators - /// @{ - - /// @brief comparison: equal - /// @sa https://json.nlohmann.me/api/basic_json/operator_eq/ - friend bool operator==(const_reference lhs, const_reference rhs) noexcept - { -#ifdef __GNUC__ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wfloat-equal" -#endif - const auto lhs_type = lhs.type(); - const auto rhs_type = rhs.type(); - - if (lhs_type == rhs_type) - { - switch (lhs_type) - { - case value_t::array: - return *lhs.m_value.array == *rhs.m_value.array; - - case value_t::object: - return *lhs.m_value.object == *rhs.m_value.object; - - case value_t::null: - return true; - - case value_t::string: - return *lhs.m_value.string == *rhs.m_value.string; - - case value_t::boolean: - return lhs.m_value.boolean == rhs.m_value.boolean; - - case value_t::number_integer: - return lhs.m_value.number_integer == rhs.m_value.number_integer; - - case value_t::number_unsigned: - return lhs.m_value.number_unsigned == rhs.m_value.number_unsigned; - - case value_t::number_float: - return lhs.m_value.number_float == rhs.m_value.number_float; - - case value_t::binary: - return *lhs.m_value.binary == *rhs.m_value.binary; - - case value_t::discarded: - default: - return false; - } - } - else if (lhs_type == value_t::number_integer && rhs_type == value_t::number_float) - { - return static_cast(lhs.m_value.number_integer) == rhs.m_value.number_float; - } - else if (lhs_type == value_t::number_float && rhs_type == value_t::number_integer) - { - return lhs.m_value.number_float == static_cast(rhs.m_value.number_integer); - } - else if (lhs_type == value_t::number_unsigned && rhs_type == value_t::number_float) - { - return static_cast(lhs.m_value.number_unsigned) == rhs.m_value.number_float; - } - else if (lhs_type == value_t::number_float && rhs_type == value_t::number_unsigned) - { - return lhs.m_value.number_float == static_cast(rhs.m_value.number_unsigned); - } - else if (lhs_type == value_t::number_unsigned && rhs_type == value_t::number_integer) - { - return static_cast(lhs.m_value.number_unsigned) == rhs.m_value.number_integer; - } - else if (lhs_type == value_t::number_integer && rhs_type == value_t::number_unsigned) - { - return lhs.m_value.number_integer == static_cast(rhs.m_value.number_unsigned); - } - - return false; -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#endif - } - - /// @brief comparison: equal - /// @sa https://json.nlohmann.me/api/basic_json/operator_eq/ - template::value, int>::type = 0> - friend bool operator==(const_reference lhs, ScalarType rhs) noexcept - { - return lhs == basic_json(rhs); - } - - /// @brief comparison: equal - /// @sa https://json.nlohmann.me/api/basic_json/operator_eq/ - template::value, int>::type = 0> - friend bool operator==(ScalarType lhs, const_reference rhs) noexcept - { - return basic_json(lhs) == rhs; - } - - /// @brief comparison: not equal - /// @sa https://json.nlohmann.me/api/basic_json/operator_ne/ - friend bool operator!=(const_reference lhs, const_reference rhs) noexcept - { - return !(lhs == rhs); - } - - /// @brief comparison: not equal - /// @sa https://json.nlohmann.me/api/basic_json/operator_ne/ - template::value, int>::type = 0> - friend bool operator!=(const_reference lhs, ScalarType rhs) noexcept - { - return lhs != basic_json(rhs); - } - - /// @brief comparison: not equal - /// @sa https://json.nlohmann.me/api/basic_json/operator_ne/ - template::value, int>::type = 0> - friend bool operator!=(ScalarType lhs, const_reference rhs) noexcept - { - return basic_json(lhs) != rhs; - } - - /// @brief comparison: less than - /// @sa https://json.nlohmann.me/api/basic_json/operator_lt/ - friend bool operator<(const_reference lhs, const_reference rhs) noexcept - { - const auto lhs_type = lhs.type(); - const auto rhs_type = rhs.type(); - - if (lhs_type == rhs_type) - { - switch (lhs_type) - { - case value_t::array: - // note parentheses are necessary, see - // https://github.com/nlohmann/json/issues/1530 - return (*lhs.m_value.array) < (*rhs.m_value.array); - - case value_t::object: - return (*lhs.m_value.object) < (*rhs.m_value.object); - - case value_t::null: - return false; - - case value_t::string: - return (*lhs.m_value.string) < (*rhs.m_value.string); - - case value_t::boolean: - return (lhs.m_value.boolean) < (rhs.m_value.boolean); - - case value_t::number_integer: - return (lhs.m_value.number_integer) < (rhs.m_value.number_integer); - - case value_t::number_unsigned: - return (lhs.m_value.number_unsigned) < (rhs.m_value.number_unsigned); - - case value_t::number_float: - return (lhs.m_value.number_float) < (rhs.m_value.number_float); - - case value_t::binary: - return (*lhs.m_value.binary) < (*rhs.m_value.binary); - - case value_t::discarded: - default: - return false; - } - } - else if (lhs_type == value_t::number_integer && rhs_type == value_t::number_float) - { - return static_cast(lhs.m_value.number_integer) < rhs.m_value.number_float; - } - else if (lhs_type == value_t::number_float && rhs_type == value_t::number_integer) - { - return lhs.m_value.number_float < static_cast(rhs.m_value.number_integer); - } - else if (lhs_type == value_t::number_unsigned && rhs_type == value_t::number_float) - { - return static_cast(lhs.m_value.number_unsigned) < rhs.m_value.number_float; - } - else if (lhs_type == value_t::number_float && rhs_type == value_t::number_unsigned) - { - return lhs.m_value.number_float < static_cast(rhs.m_value.number_unsigned); - } - else if (lhs_type == value_t::number_integer && rhs_type == value_t::number_unsigned) - { - return lhs.m_value.number_integer < static_cast(rhs.m_value.number_unsigned); - } - else if (lhs_type == value_t::number_unsigned && rhs_type == value_t::number_integer) - { - return static_cast(lhs.m_value.number_unsigned) < rhs.m_value.number_integer; - } - - // We only reach this line if we cannot compare values. In that case, - // we compare types. Note we have to call the operator explicitly, - // because MSVC has problems otherwise. - return operator<(lhs_type, rhs_type); - } - - /// @brief comparison: less than - /// @sa https://json.nlohmann.me/api/basic_json/operator_lt/ - template::value, int>::type = 0> - friend bool operator<(const_reference lhs, ScalarType rhs) noexcept - { - return lhs < basic_json(rhs); - } - - /// @brief comparison: less than - /// @sa https://json.nlohmann.me/api/basic_json/operator_lt/ - template::value, int>::type = 0> - friend bool operator<(ScalarType lhs, const_reference rhs) noexcept - { - return basic_json(lhs) < rhs; - } - - /// @brief comparison: less than or equal - /// @sa https://json.nlohmann.me/api/basic_json/operator_le/ - friend bool operator<=(const_reference lhs, const_reference rhs) noexcept - { - return !(rhs < lhs); - } - - /// @brief comparison: less than or equal - /// @sa https://json.nlohmann.me/api/basic_json/operator_le/ - template::value, int>::type = 0> - friend bool operator<=(const_reference lhs, ScalarType rhs) noexcept - { - return lhs <= basic_json(rhs); - } - - /// @brief comparison: less than or equal - /// @sa https://json.nlohmann.me/api/basic_json/operator_le/ - template::value, int>::type = 0> - friend bool operator<=(ScalarType lhs, const_reference rhs) noexcept - { - return basic_json(lhs) <= rhs; - } - - /// @brief comparison: greater than - /// @sa https://json.nlohmann.me/api/basic_json/operator_gt/ - friend bool operator>(const_reference lhs, const_reference rhs) noexcept - { - return !(lhs <= rhs); - } - - /// @brief comparison: greater than - /// @sa https://json.nlohmann.me/api/basic_json/operator_gt/ - template::value, int>::type = 0> - friend bool operator>(const_reference lhs, ScalarType rhs) noexcept - { - return lhs > basic_json(rhs); - } - - /// @brief comparison: greater than - /// @sa https://json.nlohmann.me/api/basic_json/operator_gt/ - template::value, int>::type = 0> - friend bool operator>(ScalarType lhs, const_reference rhs) noexcept - { - return basic_json(lhs) > rhs; - } - - /// @brief comparison: greater than or equal - /// @sa https://json.nlohmann.me/api/basic_json/operator_ge/ - friend bool operator>=(const_reference lhs, const_reference rhs) noexcept - { - return !(lhs < rhs); - } - - /// @brief comparison: greater than or equal - /// @sa https://json.nlohmann.me/api/basic_json/operator_ge/ - template::value, int>::type = 0> - friend bool operator>=(const_reference lhs, ScalarType rhs) noexcept - { - return lhs >= basic_json(rhs); - } - - /// @brief comparison: greater than or equal - /// @sa https://json.nlohmann.me/api/basic_json/operator_ge/ - template::value, int>::type = 0> - friend bool operator>=(ScalarType lhs, const_reference rhs) noexcept - { - return basic_json(lhs) >= rhs; - } - - /// @} - - /////////////////// - // serialization // - /////////////////// - - /// @name serialization - /// @{ -#ifndef JSON_NO_IO - /// @brief serialize to stream - /// @sa https://json.nlohmann.me/api/basic_json/operator_ltlt/ - friend std::ostream& operator<<(std::ostream& o, const basic_json& j) - { - // read width member and use it as indentation parameter if nonzero - const bool pretty_print = o.width() > 0; - const auto indentation = pretty_print ? o.width() : 0; - - // reset width to 0 for subsequent calls to this stream - o.width(0); - - // do the actual serialization - serializer s(detail::output_adapter(o), o.fill()); - s.dump(j, pretty_print, false, static_cast(indentation)); - return o; - } - - /// @brief serialize to stream - /// @sa https://json.nlohmann.me/api/basic_json/operator_ltlt/ - /// @deprecated This function is deprecated since 3.0.0 and will be removed in - /// version 4.0.0 of the library. Please use - /// operator<<(std::ostream&, const basic_json&) instead; that is, - /// replace calls like `j >> o;` with `o << j;`. - JSON_HEDLEY_DEPRECATED_FOR(3.0.0, operator<<(std::ostream&, const basic_json&)) - friend std::ostream& operator>>(const basic_json& j, std::ostream& o) - { - return o << j; - } -#endif // JSON_NO_IO - /// @} - - - ///////////////////// - // deserialization // - ///////////////////// - - /// @name deserialization - /// @{ - - /// @brief deserialize from a compatible input - /// @sa https://json.nlohmann.me/api/basic_json/parse/ - template - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json parse(InputType&& i, - const parser_callback_t cb = nullptr, - const bool allow_exceptions = true, - const bool ignore_comments = false) - { - basic_json result; - parser(detail::input_adapter(std::forward(i)), cb, allow_exceptions, ignore_comments).parse(true, result); - return result; - } - - /// @brief deserialize from a pair of character iterators - /// @sa https://json.nlohmann.me/api/basic_json/parse/ - template - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json parse(IteratorType first, - IteratorType last, - const parser_callback_t cb = nullptr, - const bool allow_exceptions = true, - const bool ignore_comments = false) - { - basic_json result; - parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result); - return result; - } - - JSON_HEDLEY_WARN_UNUSED_RESULT - JSON_HEDLEY_DEPRECATED_FOR(3.8.0, parse(ptr, ptr + len)) - static basic_json parse(detail::span_input_adapter&& i, - const parser_callback_t cb = nullptr, - const bool allow_exceptions = true, - const bool ignore_comments = false) - { - basic_json result; - parser(i.get(), cb, allow_exceptions, ignore_comments).parse(true, result); - return result; - } - - /// @brief check if the input is valid JSON - /// @sa https://json.nlohmann.me/api/basic_json/accept/ - template - static bool accept(InputType&& i, - const bool ignore_comments = false) - { - return parser(detail::input_adapter(std::forward(i)), nullptr, false, ignore_comments).accept(true); - } - - /// @brief check if the input is valid JSON - /// @sa https://json.nlohmann.me/api/basic_json/accept/ - template - static bool accept(IteratorType first, IteratorType last, - const bool ignore_comments = false) - { - return parser(detail::input_adapter(std::move(first), std::move(last)), nullptr, false, ignore_comments).accept(true); - } - - JSON_HEDLEY_WARN_UNUSED_RESULT - JSON_HEDLEY_DEPRECATED_FOR(3.8.0, accept(ptr, ptr + len)) - static bool accept(detail::span_input_adapter&& i, - const bool ignore_comments = false) - { - return parser(i.get(), nullptr, false, ignore_comments).accept(true); - } - - /// @brief generate SAX events - /// @sa https://json.nlohmann.me/api/basic_json/sax_parse/ - template - JSON_HEDLEY_NON_NULL(2) - static bool sax_parse(InputType&& i, SAX* sax, - input_format_t format = input_format_t::json, - const bool strict = true, - const bool ignore_comments = false) - { - auto ia = detail::input_adapter(std::forward(i)); - return format == input_format_t::json - ? parser(std::move(ia), nullptr, true, ignore_comments).sax_parse(sax, strict) - : detail::binary_reader(std::move(ia)).sax_parse(format, sax, strict); - } - - /// @brief generate SAX events - /// @sa https://json.nlohmann.me/api/basic_json/sax_parse/ - template - JSON_HEDLEY_NON_NULL(3) - static bool sax_parse(IteratorType first, IteratorType last, SAX* sax, - input_format_t format = input_format_t::json, - const bool strict = true, - const bool ignore_comments = false) - { - auto ia = detail::input_adapter(std::move(first), std::move(last)); - return format == input_format_t::json - ? parser(std::move(ia), nullptr, true, ignore_comments).sax_parse(sax, strict) - : detail::binary_reader(std::move(ia)).sax_parse(format, sax, strict); - } - - /// @brief generate SAX events - /// @sa https://json.nlohmann.me/api/basic_json/sax_parse/ - /// @deprecated This function is deprecated since 3.8.0 and will be removed in - /// version 4.0.0 of the library. Please use - /// sax_parse(ptr, ptr + len) instead. - template - JSON_HEDLEY_DEPRECATED_FOR(3.8.0, sax_parse(ptr, ptr + len, ...)) - JSON_HEDLEY_NON_NULL(2) - static bool sax_parse(detail::span_input_adapter&& i, SAX* sax, - input_format_t format = input_format_t::json, - const bool strict = true, - const bool ignore_comments = false) - { - auto ia = i.get(); - return format == input_format_t::json - // NOLINTNEXTLINE(hicpp-move-const-arg,performance-move-const-arg) - ? parser(std::move(ia), nullptr, true, ignore_comments).sax_parse(sax, strict) - // NOLINTNEXTLINE(hicpp-move-const-arg,performance-move-const-arg) - : detail::binary_reader(std::move(ia)).sax_parse(format, sax, strict); - } -#ifndef JSON_NO_IO - /// @brief deserialize from stream - /// @sa https://json.nlohmann.me/api/basic_json/operator_gtgt/ - /// @deprecated This stream operator is deprecated since 3.0.0 and will be removed in - /// version 4.0.0 of the library. Please use - /// operator>>(std::istream&, basic_json&) instead; that is, - /// replace calls like `j << i;` with `i >> j;`. - JSON_HEDLEY_DEPRECATED_FOR(3.0.0, operator>>(std::istream&, basic_json&)) - friend std::istream& operator<<(basic_json& j, std::istream& i) - { - return operator>>(i, j); - } - - /// @brief deserialize from stream - /// @sa https://json.nlohmann.me/api/basic_json/operator_gtgt/ - friend std::istream& operator>>(std::istream& i, basic_json& j) - { - parser(detail::input_adapter(i)).parse(false, j); - return i; - } -#endif // JSON_NO_IO - /// @} - - /////////////////////////// - // convenience functions // - /////////////////////////// - - /// @brief return the type as string - /// @sa https://json.nlohmann.me/api/basic_json/type_name/ - JSON_HEDLEY_RETURNS_NON_NULL - const char* type_name() const noexcept - { - switch (m_type) - { - case value_t::null: - return "null"; - case value_t::object: - return "object"; - case value_t::array: - return "array"; - case value_t::string: - return "string"; - case value_t::boolean: - return "boolean"; - case value_t::binary: - return "binary"; - case value_t::discarded: - return "discarded"; - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - default: - return "number"; - } - } - - - JSON_PRIVATE_UNLESS_TESTED: - ////////////////////// - // member variables // - ////////////////////// - - /// the type of the current element - value_t m_type = value_t::null; - - /// the value of the current element - json_value m_value = {}; - -#if JSON_DIAGNOSTICS - /// a pointer to a parent value (for debugging purposes) - basic_json* m_parent = nullptr; -#endif - - ////////////////////////////////////////// - // binary serialization/deserialization // - ////////////////////////////////////////// - - /// @name binary serialization/deserialization support - /// @{ - - public: - /// @brief create a CBOR serialization of a given JSON value - /// @sa https://json.nlohmann.me/api/basic_json/to_cbor/ - static std::vector to_cbor(const basic_json& j) - { - std::vector result; - to_cbor(j, result); - return result; - } - - /// @brief create a CBOR serialization of a given JSON value - /// @sa https://json.nlohmann.me/api/basic_json/to_cbor/ - static void to_cbor(const basic_json& j, detail::output_adapter o) - { - binary_writer(o).write_cbor(j); - } - - /// @brief create a CBOR serialization of a given JSON value - /// @sa https://json.nlohmann.me/api/basic_json/to_cbor/ - static void to_cbor(const basic_json& j, detail::output_adapter o) - { - binary_writer(o).write_cbor(j); - } - - /// @brief create a MessagePack serialization of a given JSON value - /// @sa https://json.nlohmann.me/api/basic_json/to_msgpack/ - static std::vector to_msgpack(const basic_json& j) - { - std::vector result; - to_msgpack(j, result); - return result; - } - - /// @brief create a MessagePack serialization of a given JSON value - /// @sa https://json.nlohmann.me/api/basic_json/to_msgpack/ - static void to_msgpack(const basic_json& j, detail::output_adapter o) - { - binary_writer(o).write_msgpack(j); - } - - /// @brief create a MessagePack serialization of a given JSON value - /// @sa https://json.nlohmann.me/api/basic_json/to_msgpack/ - static void to_msgpack(const basic_json& j, detail::output_adapter o) - { - binary_writer(o).write_msgpack(j); - } - - /// @brief create a UBJSON serialization of a given JSON value - /// @sa https://json.nlohmann.me/api/basic_json/to_ubjson/ - static std::vector to_ubjson(const basic_json& j, - const bool use_size = false, - const bool use_type = false) - { - std::vector result; - to_ubjson(j, result, use_size, use_type); - return result; - } - - /// @brief create a UBJSON serialization of a given JSON value - /// @sa https://json.nlohmann.me/api/basic_json/to_ubjson/ - static void to_ubjson(const basic_json& j, detail::output_adapter o, - const bool use_size = false, const bool use_type = false) - { - binary_writer(o).write_ubjson(j, use_size, use_type); - } - - /// @brief create a UBJSON serialization of a given JSON value - /// @sa https://json.nlohmann.me/api/basic_json/to_ubjson/ - static void to_ubjson(const basic_json& j, detail::output_adapter o, - const bool use_size = false, const bool use_type = false) - { - binary_writer(o).write_ubjson(j, use_size, use_type); - } - - /// @brief create a BSON serialization of a given JSON value - /// @sa https://json.nlohmann.me/api/basic_json/to_bson/ - static std::vector to_bson(const basic_json& j) - { - std::vector result; - to_bson(j, result); - return result; - } - - /// @brief create a BSON serialization of a given JSON value - /// @sa https://json.nlohmann.me/api/basic_json/to_bson/ - static void to_bson(const basic_json& j, detail::output_adapter o) - { - binary_writer(o).write_bson(j); - } - - /// @brief create a BSON serialization of a given JSON value - /// @sa https://json.nlohmann.me/api/basic_json/to_bson/ - static void to_bson(const basic_json& j, detail::output_adapter o) - { - binary_writer(o).write_bson(j); - } - - /// @brief create a JSON value from an input in CBOR format - /// @sa https://json.nlohmann.me/api/basic_json/from_cbor/ - template - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json from_cbor(InputType&& i, - const bool strict = true, - const bool allow_exceptions = true, - const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error) - { - basic_json result; - detail::json_sax_dom_parser sdp(result, allow_exceptions); - auto ia = detail::input_adapter(std::forward(i)); - const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::cbor, &sdp, strict, tag_handler); - return res ? result : basic_json(value_t::discarded); - } - - /// @brief create a JSON value from an input in CBOR format - /// @sa https://json.nlohmann.me/api/basic_json/from_cbor/ - template - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json from_cbor(IteratorType first, IteratorType last, - const bool strict = true, - const bool allow_exceptions = true, - const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error) - { - basic_json result; - detail::json_sax_dom_parser sdp(result, allow_exceptions); - auto ia = detail::input_adapter(std::move(first), std::move(last)); - const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::cbor, &sdp, strict, tag_handler); - return res ? result : basic_json(value_t::discarded); - } - - template - JSON_HEDLEY_WARN_UNUSED_RESULT - JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_cbor(ptr, ptr + len)) - static basic_json from_cbor(const T* ptr, std::size_t len, - const bool strict = true, - const bool allow_exceptions = true, - const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error) - { - return from_cbor(ptr, ptr + len, strict, allow_exceptions, tag_handler); - } - - - JSON_HEDLEY_WARN_UNUSED_RESULT - JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_cbor(ptr, ptr + len)) - static basic_json from_cbor(detail::span_input_adapter&& i, - const bool strict = true, - const bool allow_exceptions = true, - const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error) - { - basic_json result; - detail::json_sax_dom_parser sdp(result, allow_exceptions); - auto ia = i.get(); - // NOLINTNEXTLINE(hicpp-move-const-arg,performance-move-const-arg) - const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::cbor, &sdp, strict, tag_handler); - return res ? result : basic_json(value_t::discarded); - } - - /// @brief create a JSON value from an input in MessagePack format - /// @sa https://json.nlohmann.me/api/basic_json/from_msgpack/ - template - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json from_msgpack(InputType&& i, - const bool strict = true, - const bool allow_exceptions = true) - { - basic_json result; - detail::json_sax_dom_parser sdp(result, allow_exceptions); - auto ia = detail::input_adapter(std::forward(i)); - const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::msgpack, &sdp, strict); - return res ? result : basic_json(value_t::discarded); - } - - /// @brief create a JSON value from an input in MessagePack format - /// @sa https://json.nlohmann.me/api/basic_json/from_msgpack/ - template - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json from_msgpack(IteratorType first, IteratorType last, - const bool strict = true, - const bool allow_exceptions = true) - { - basic_json result; - detail::json_sax_dom_parser sdp(result, allow_exceptions); - auto ia = detail::input_adapter(std::move(first), std::move(last)); - const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::msgpack, &sdp, strict); - return res ? result : basic_json(value_t::discarded); - } - - template - JSON_HEDLEY_WARN_UNUSED_RESULT - JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_msgpack(ptr, ptr + len)) - static basic_json from_msgpack(const T* ptr, std::size_t len, - const bool strict = true, - const bool allow_exceptions = true) - { - return from_msgpack(ptr, ptr + len, strict, allow_exceptions); - } - - JSON_HEDLEY_WARN_UNUSED_RESULT - JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_msgpack(ptr, ptr + len)) - static basic_json from_msgpack(detail::span_input_adapter&& i, - const bool strict = true, - const bool allow_exceptions = true) - { - basic_json result; - detail::json_sax_dom_parser sdp(result, allow_exceptions); - auto ia = i.get(); - // NOLINTNEXTLINE(hicpp-move-const-arg,performance-move-const-arg) - const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::msgpack, &sdp, strict); - return res ? result : basic_json(value_t::discarded); - } - - /// @brief create a JSON value from an input in UBJSON format - /// @sa https://json.nlohmann.me/api/basic_json/from_ubjson/ - template - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json from_ubjson(InputType&& i, - const bool strict = true, - const bool allow_exceptions = true) - { - basic_json result; - detail::json_sax_dom_parser sdp(result, allow_exceptions); - auto ia = detail::input_adapter(std::forward(i)); - const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::ubjson, &sdp, strict); - return res ? result : basic_json(value_t::discarded); - } - - /// @brief create a JSON value from an input in UBJSON format - /// @sa https://json.nlohmann.me/api/basic_json/from_ubjson/ - template - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json from_ubjson(IteratorType first, IteratorType last, - const bool strict = true, - const bool allow_exceptions = true) - { - basic_json result; - detail::json_sax_dom_parser sdp(result, allow_exceptions); - auto ia = detail::input_adapter(std::move(first), std::move(last)); - const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::ubjson, &sdp, strict); - return res ? result : basic_json(value_t::discarded); - } - - template - JSON_HEDLEY_WARN_UNUSED_RESULT - JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_ubjson(ptr, ptr + len)) - static basic_json from_ubjson(const T* ptr, std::size_t len, - const bool strict = true, - const bool allow_exceptions = true) - { - return from_ubjson(ptr, ptr + len, strict, allow_exceptions); - } - - JSON_HEDLEY_WARN_UNUSED_RESULT - JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_ubjson(ptr, ptr + len)) - static basic_json from_ubjson(detail::span_input_adapter&& i, - const bool strict = true, - const bool allow_exceptions = true) - { - basic_json result; - detail::json_sax_dom_parser sdp(result, allow_exceptions); - auto ia = i.get(); - // NOLINTNEXTLINE(hicpp-move-const-arg,performance-move-const-arg) - const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::ubjson, &sdp, strict); - return res ? result : basic_json(value_t::discarded); - } - - /// @brief create a JSON value from an input in BSON format - /// @sa https://json.nlohmann.me/api/basic_json/from_bson/ - template - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json from_bson(InputType&& i, - const bool strict = true, - const bool allow_exceptions = true) - { - basic_json result; - detail::json_sax_dom_parser sdp(result, allow_exceptions); - auto ia = detail::input_adapter(std::forward(i)); - const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::bson, &sdp, strict); - return res ? result : basic_json(value_t::discarded); - } - - /// @brief create a JSON value from an input in BSON format - /// @sa https://json.nlohmann.me/api/basic_json/from_bson/ - template - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json from_bson(IteratorType first, IteratorType last, - const bool strict = true, - const bool allow_exceptions = true) - { - basic_json result; - detail::json_sax_dom_parser sdp(result, allow_exceptions); - auto ia = detail::input_adapter(std::move(first), std::move(last)); - const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::bson, &sdp, strict); - return res ? result : basic_json(value_t::discarded); - } - - template - JSON_HEDLEY_WARN_UNUSED_RESULT - JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_bson(ptr, ptr + len)) - static basic_json from_bson(const T* ptr, std::size_t len, - const bool strict = true, - const bool allow_exceptions = true) - { - return from_bson(ptr, ptr + len, strict, allow_exceptions); - } - - JSON_HEDLEY_WARN_UNUSED_RESULT - JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_bson(ptr, ptr + len)) - static basic_json from_bson(detail::span_input_adapter&& i, - const bool strict = true, - const bool allow_exceptions = true) - { - basic_json result; - detail::json_sax_dom_parser sdp(result, allow_exceptions); - auto ia = i.get(); - // NOLINTNEXTLINE(hicpp-move-const-arg,performance-move-const-arg) - const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::bson, &sdp, strict); - return res ? result : basic_json(value_t::discarded); - } - /// @} - - ////////////////////////// - // JSON Pointer support // - ////////////////////////// - - /// @name JSON Pointer functions - /// @{ - - /// @brief access specified element via JSON Pointer - /// @sa https://json.nlohmann.me/api/basic_json/operator%5B%5D/ - reference operator[](const json_pointer& ptr) - { - return ptr.get_unchecked(this); - } - - /// @brief access specified element via JSON Pointer - /// @sa https://json.nlohmann.me/api/basic_json/operator%5B%5D/ - const_reference operator[](const json_pointer& ptr) const - { - return ptr.get_unchecked(this); - } - - /// @brief access specified element via JSON Pointer - /// @sa https://json.nlohmann.me/api/basic_json/at/ - reference at(const json_pointer& ptr) - { - return ptr.get_checked(this); - } - - /// @brief access specified element via JSON Pointer - /// @sa https://json.nlohmann.me/api/basic_json/at/ - const_reference at(const json_pointer& ptr) const - { - return ptr.get_checked(this); - } - - /// @brief return flattened JSON value - /// @sa https://json.nlohmann.me/api/basic_json/flatten/ - basic_json flatten() const - { - basic_json result(value_t::object); - json_pointer::flatten("", *this, result); - return result; - } - - /// @brief unflatten a previously flattened JSON value - /// @sa https://json.nlohmann.me/api/basic_json/unflatten/ - basic_json unflatten() const - { - return json_pointer::unflatten(*this); - } - - /// @} - - ////////////////////////// - // JSON Patch functions // - ////////////////////////// - - /// @name JSON Patch functions - /// @{ - - /// @brief applies a JSON patch - /// @sa https://json.nlohmann.me/api/basic_json/patch/ - basic_json patch(const basic_json& json_patch) const - { - // make a working copy to apply the patch to - basic_json result = *this; - - // the valid JSON Patch operations - enum class patch_operations {add, remove, replace, move, copy, test, invalid}; - - const auto get_op = [](const std::string & op) - { - if (op == "add") - { - return patch_operations::add; - } - if (op == "remove") - { - return patch_operations::remove; - } - if (op == "replace") - { - return patch_operations::replace; - } - if (op == "move") - { - return patch_operations::move; - } - if (op == "copy") - { - return patch_operations::copy; - } - if (op == "test") - { - return patch_operations::test; - } - - return patch_operations::invalid; - }; - - // wrapper for "add" operation; add value at ptr - const auto operation_add = [&result](json_pointer & ptr, basic_json val) - { - // adding to the root of the target document means replacing it - if (ptr.empty()) - { - result = val; - return; - } - - // make sure the top element of the pointer exists - json_pointer top_pointer = ptr.top(); - if (top_pointer != ptr) - { - result.at(top_pointer); - } - - // get reference to parent of JSON pointer ptr - const auto last_path = ptr.back(); - ptr.pop_back(); - basic_json& parent = result[ptr]; - - switch (parent.m_type) - { - case value_t::null: - case value_t::object: - { - // use operator[] to add value - parent[last_path] = val; - break; - } - - case value_t::array: - { - if (last_path == "-") - { - // special case: append to back - parent.push_back(val); - } - else - { - const auto idx = json_pointer::array_index(last_path); - if (JSON_HEDLEY_UNLIKELY(idx > parent.size())) - { - // avoid undefined behavior - JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range", parent)); - } - - // default case: insert add offset - parent.insert(parent.begin() + static_cast(idx), val); - } - break; - } - - // if there exists a parent it cannot be primitive - case value_t::string: // LCOV_EXCL_LINE - case value_t::boolean: // LCOV_EXCL_LINE - case value_t::number_integer: // LCOV_EXCL_LINE - case value_t::number_unsigned: // LCOV_EXCL_LINE - case value_t::number_float: // LCOV_EXCL_LINE - case value_t::binary: // LCOV_EXCL_LINE - case value_t::discarded: // LCOV_EXCL_LINE - default: // LCOV_EXCL_LINE - JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE - } - }; - - // wrapper for "remove" operation; remove value at ptr - const auto operation_remove = [this, &result](json_pointer & ptr) - { - // get reference to parent of JSON pointer ptr - const auto last_path = ptr.back(); - ptr.pop_back(); - basic_json& parent = result.at(ptr); - - // remove child - if (parent.is_object()) - { - // perform range check - auto it = parent.find(last_path); - if (JSON_HEDLEY_LIKELY(it != parent.end())) - { - parent.erase(it); - } - else - { - JSON_THROW(out_of_range::create(403, "key '" + last_path + "' not found", *this)); - } - } - else if (parent.is_array()) - { - // note erase performs range check - parent.erase(json_pointer::array_index(last_path)); - } - }; - - // type check: top level value must be an array - if (JSON_HEDLEY_UNLIKELY(!json_patch.is_array())) - { - JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects", json_patch)); - } - - // iterate and apply the operations - for (const auto& val : json_patch) - { - // wrapper to get a value for an operation - const auto get_value = [&val](const std::string & op, - const std::string & member, - bool string_type) -> basic_json & - { - // find value - auto it = val.m_value.object->find(member); - - // context-sensitive error message - const auto error_msg = (op == "op") ? "operation" : "operation '" + op + "'"; - - // check if desired value is present - if (JSON_HEDLEY_UNLIKELY(it == val.m_value.object->end())) - { - // NOLINTNEXTLINE(performance-inefficient-string-concatenation) - JSON_THROW(parse_error::create(105, 0, error_msg + " must have member '" + member + "'", val)); - } - - // check if result is of type string - if (JSON_HEDLEY_UNLIKELY(string_type && !it->second.is_string())) - { - // NOLINTNEXTLINE(performance-inefficient-string-concatenation) - JSON_THROW(parse_error::create(105, 0, error_msg + " must have string member '" + member + "'", val)); - } - - // no error: return value - return it->second; - }; - - // type check: every element of the array must be an object - if (JSON_HEDLEY_UNLIKELY(!val.is_object())) - { - JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects", val)); - } - - // collect mandatory members - const auto op = get_value("op", "op", true).template get(); - const auto path = get_value(op, "path", true).template get(); - json_pointer ptr(path); - - switch (get_op(op)) - { - case patch_operations::add: - { - operation_add(ptr, get_value("add", "value", false)); - break; - } - - case patch_operations::remove: - { - operation_remove(ptr); - break; - } - - case patch_operations::replace: - { - // the "path" location must exist - use at() - result.at(ptr) = get_value("replace", "value", false); - break; - } - - case patch_operations::move: - { - const auto from_path = get_value("move", "from", true).template get(); - json_pointer from_ptr(from_path); - - // the "from" location must exist - use at() - basic_json v = result.at(from_ptr); - - // The move operation is functionally identical to a - // "remove" operation on the "from" location, followed - // immediately by an "add" operation at the target - // location with the value that was just removed. - operation_remove(from_ptr); - operation_add(ptr, v); - break; - } - - case patch_operations::copy: - { - const auto from_path = get_value("copy", "from", true).template get(); - const json_pointer from_ptr(from_path); - - // the "from" location must exist - use at() - basic_json v = result.at(from_ptr); - - // The copy is functionally identical to an "add" - // operation at the target location using the value - // specified in the "from" member. - operation_add(ptr, v); - break; - } - - case patch_operations::test: - { - bool success = false; - JSON_TRY - { - // check if "value" matches the one at "path" - // the "path" location must exist - use at() - success = (result.at(ptr) == get_value("test", "value", false)); - } - JSON_INTERNAL_CATCH (out_of_range&) - { - // ignore out of range errors: success remains false - } - - // throw an exception if test fails - if (JSON_HEDLEY_UNLIKELY(!success)) - { - JSON_THROW(other_error::create(501, "unsuccessful: " + val.dump(), val)); - } - - break; - } - - case patch_operations::invalid: - default: - { - // op must be "add", "remove", "replace", "move", "copy", or - // "test" - JSON_THROW(parse_error::create(105, 0, "operation value '" + op + "' is invalid", val)); - } - } - } - - return result; - } - - /// @brief creates a diff as a JSON patch - /// @sa https://json.nlohmann.me/api/basic_json/diff/ - JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json diff(const basic_json& source, const basic_json& target, - const std::string& path = "") - { - // the patch - basic_json result(value_t::array); - - // if the values are the same, return empty patch - if (source == target) - { - return result; - } - - if (source.type() != target.type()) - { - // different types: replace value - result.push_back( - { - {"op", "replace"}, {"path", path}, {"value", target} - }); - return result; - } - - switch (source.type()) - { - case value_t::array: - { - // first pass: traverse common elements - std::size_t i = 0; - while (i < source.size() && i < target.size()) - { - // recursive call to compare array values at index i - auto temp_diff = diff(source[i], target[i], path + "/" + std::to_string(i)); - result.insert(result.end(), temp_diff.begin(), temp_diff.end()); - ++i; - } - - // We now reached the end of at least one array - // in a second pass, traverse the remaining elements - - // remove my remaining elements - const auto end_index = static_cast(result.size()); - while (i < source.size()) - { - // add operations in reverse order to avoid invalid - // indices - result.insert(result.begin() + end_index, object( - { - {"op", "remove"}, - {"path", path + "/" + std::to_string(i)} - })); - ++i; - } - - // add other remaining elements - while (i < target.size()) - { - result.push_back( - { - {"op", "add"}, - {"path", path + "/-"}, - {"value", target[i]} - }); - ++i; - } - - break; - } - - case value_t::object: - { - // first pass: traverse this object's elements - for (auto it = source.cbegin(); it != source.cend(); ++it) - { - // escape the key name to be used in a JSON patch - const auto path_key = path + "/" + detail::escape(it.key()); - - if (target.find(it.key()) != target.end()) - { - // recursive call to compare object values at key it - auto temp_diff = diff(it.value(), target[it.key()], path_key); - result.insert(result.end(), temp_diff.begin(), temp_diff.end()); - } - else - { - // found a key that is not in o -> remove it - result.push_back(object( - { - {"op", "remove"}, {"path", path_key} - })); - } - } - - // second pass: traverse other object's elements - for (auto it = target.cbegin(); it != target.cend(); ++it) - { - if (source.find(it.key()) == source.end()) - { - // found a key that is not in this -> add it - const auto path_key = path + "/" + detail::escape(it.key()); - result.push_back( - { - {"op", "add"}, {"path", path_key}, - {"value", it.value()} - }); - } - } - - break; - } - - case value_t::null: - case value_t::string: - case value_t::boolean: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::number_float: - case value_t::binary: - case value_t::discarded: - default: - { - // both primitive type: replace value - result.push_back( - { - {"op", "replace"}, {"path", path}, {"value", target} - }); - break; - } - } - - return result; - } - - /// @} - - //////////////////////////////// - // JSON Merge Patch functions // - //////////////////////////////// - - /// @name JSON Merge Patch functions - /// @{ - - /// @brief applies a JSON Merge Patch - /// @sa https://json.nlohmann.me/api/basic_json/merge_patch/ - void merge_patch(const basic_json& apply_patch) - { - if (apply_patch.is_object()) - { - if (!is_object()) - { - *this = object(); - } - for (auto it = apply_patch.begin(); it != apply_patch.end(); ++it) - { - if (it.value().is_null()) - { - erase(it.key()); - } - else - { - operator[](it.key()).merge_patch(it.value()); - } - } - } - else - { - *this = apply_patch; - } - } - - /// @} -}; - -/// @brief user-defined to_string function for JSON values -/// @sa https://json.nlohmann.me/api/basic_json/to_string/ -NLOHMANN_BASIC_JSON_TPL_DECLARATION -std::string to_string(const NLOHMANN_BASIC_JSON_TPL& j) -{ - return j.dump(); -} - -} // namespace nlohmann - -/////////////////////// -// nonmember support // -/////////////////////// - -namespace std // NOLINT(cert-dcl58-cpp) -{ - -/// @brief hash value for JSON objects -/// @sa https://json.nlohmann.me/api/basic_json/std_hash/ -NLOHMANN_BASIC_JSON_TPL_DECLARATION -struct hash -{ - std::size_t operator()(const nlohmann::NLOHMANN_BASIC_JSON_TPL& j) const - { - return nlohmann::detail::hash(j); - } -}; - -// specialization for std::less -template<> -struct less< ::nlohmann::detail::value_t> // do not remove the space after '<', see https://github.com/nlohmann/json/pull/679 -{ - /*! - @brief compare two value_t enum values - @since version 3.0.0 - */ - bool operator()(nlohmann::detail::value_t lhs, - nlohmann::detail::value_t rhs) const noexcept - { - return nlohmann::detail::operator<(lhs, rhs); - } -}; - -// C++20 prohibit function specialization in the std namespace. -#ifndef JSON_HAS_CPP_20 - -/// @brief exchanges the values of two JSON objects -/// @sa https://json.nlohmann.me/api/basic_json/std_swap/ -NLOHMANN_BASIC_JSON_TPL_DECLARATION -inline void swap(nlohmann::NLOHMANN_BASIC_JSON_TPL& j1, nlohmann::NLOHMANN_BASIC_JSON_TPL& j2) noexcept( // NOLINT(readability-inconsistent-declaration-parameter-name) - is_nothrow_move_constructible::value&& // NOLINT(misc-redundant-expression) - is_nothrow_move_assignable::value) -{ - j1.swap(j2); -} - -#endif - -} // namespace std - -/// @brief user-defined string literal for JSON values -/// @sa https://json.nlohmann.me/api/basic_json/operator_literal_json/ -JSON_HEDLEY_NON_NULL(1) -inline nlohmann::json operator "" _json(const char* s, std::size_t n) -{ - return nlohmann::json::parse(s, s + n); -} - -/// @brief user-defined string literal for JSON pointer -/// @sa https://json.nlohmann.me/api/basic_json/operator_literal_json_pointer/ -JSON_HEDLEY_NON_NULL(1) -inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n) -{ - return nlohmann::json::json_pointer(std::string(s, n)); -} - -// #include - - -// restore clang diagnostic settings -#if defined(__clang__) - #pragma clang diagnostic pop -#endif - -// clean up -#undef JSON_ASSERT -#undef JSON_INTERNAL_CATCH -#undef JSON_CATCH -#undef JSON_THROW -#undef JSON_TRY -#undef JSON_PRIVATE_UNLESS_TESTED -#undef JSON_HAS_CPP_11 -#undef JSON_HAS_CPP_14 -#undef JSON_HAS_CPP_17 -#undef JSON_HAS_CPP_20 -#undef JSON_HAS_FILESYSTEM -#undef JSON_HAS_EXPERIMENTAL_FILESYSTEM -#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION -#undef NLOHMANN_BASIC_JSON_TPL -#undef JSON_EXPLICIT -#undef NLOHMANN_CAN_CALL_STD_FUNC_IMPL - -// #include - - -#undef JSON_HEDLEY_ALWAYS_INLINE -#undef JSON_HEDLEY_ARM_VERSION -#undef JSON_HEDLEY_ARM_VERSION_CHECK -#undef JSON_HEDLEY_ARRAY_PARAM -#undef JSON_HEDLEY_ASSUME -#undef JSON_HEDLEY_BEGIN_C_DECLS -#undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE -#undef JSON_HEDLEY_CLANG_HAS_BUILTIN -#undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE -#undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE -#undef JSON_HEDLEY_CLANG_HAS_EXTENSION -#undef JSON_HEDLEY_CLANG_HAS_FEATURE -#undef JSON_HEDLEY_CLANG_HAS_WARNING -#undef JSON_HEDLEY_COMPCERT_VERSION -#undef JSON_HEDLEY_COMPCERT_VERSION_CHECK -#undef JSON_HEDLEY_CONCAT -#undef JSON_HEDLEY_CONCAT3 -#undef JSON_HEDLEY_CONCAT3_EX -#undef JSON_HEDLEY_CONCAT_EX -#undef JSON_HEDLEY_CONST -#undef JSON_HEDLEY_CONSTEXPR -#undef JSON_HEDLEY_CONST_CAST -#undef JSON_HEDLEY_CPP_CAST -#undef JSON_HEDLEY_CRAY_VERSION -#undef JSON_HEDLEY_CRAY_VERSION_CHECK -#undef JSON_HEDLEY_C_DECL -#undef JSON_HEDLEY_DEPRECATED -#undef JSON_HEDLEY_DEPRECATED_FOR -#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL -#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ -#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED -#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES -#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS -#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION -#undef JSON_HEDLEY_DIAGNOSTIC_POP -#undef JSON_HEDLEY_DIAGNOSTIC_PUSH -#undef JSON_HEDLEY_DMC_VERSION -#undef JSON_HEDLEY_DMC_VERSION_CHECK -#undef JSON_HEDLEY_EMPTY_BASES -#undef JSON_HEDLEY_EMSCRIPTEN_VERSION -#undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK -#undef JSON_HEDLEY_END_C_DECLS -#undef JSON_HEDLEY_FLAGS -#undef JSON_HEDLEY_FLAGS_CAST -#undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE -#undef JSON_HEDLEY_GCC_HAS_BUILTIN -#undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE -#undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE -#undef JSON_HEDLEY_GCC_HAS_EXTENSION -#undef JSON_HEDLEY_GCC_HAS_FEATURE -#undef JSON_HEDLEY_GCC_HAS_WARNING -#undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK -#undef JSON_HEDLEY_GCC_VERSION -#undef JSON_HEDLEY_GCC_VERSION_CHECK -#undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE -#undef JSON_HEDLEY_GNUC_HAS_BUILTIN -#undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE -#undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE -#undef JSON_HEDLEY_GNUC_HAS_EXTENSION -#undef JSON_HEDLEY_GNUC_HAS_FEATURE -#undef JSON_HEDLEY_GNUC_HAS_WARNING -#undef JSON_HEDLEY_GNUC_VERSION -#undef JSON_HEDLEY_GNUC_VERSION_CHECK -#undef JSON_HEDLEY_HAS_ATTRIBUTE -#undef JSON_HEDLEY_HAS_BUILTIN -#undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE -#undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS -#undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE -#undef JSON_HEDLEY_HAS_EXTENSION -#undef JSON_HEDLEY_HAS_FEATURE -#undef JSON_HEDLEY_HAS_WARNING -#undef JSON_HEDLEY_IAR_VERSION -#undef JSON_HEDLEY_IAR_VERSION_CHECK -#undef JSON_HEDLEY_IBM_VERSION -#undef JSON_HEDLEY_IBM_VERSION_CHECK -#undef JSON_HEDLEY_IMPORT -#undef JSON_HEDLEY_INLINE -#undef JSON_HEDLEY_INTEL_CL_VERSION -#undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK -#undef JSON_HEDLEY_INTEL_VERSION -#undef JSON_HEDLEY_INTEL_VERSION_CHECK -#undef JSON_HEDLEY_IS_CONSTANT -#undef JSON_HEDLEY_IS_CONSTEXPR_ -#undef JSON_HEDLEY_LIKELY -#undef JSON_HEDLEY_MALLOC -#undef JSON_HEDLEY_MCST_LCC_VERSION -#undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK -#undef JSON_HEDLEY_MESSAGE -#undef JSON_HEDLEY_MSVC_VERSION -#undef JSON_HEDLEY_MSVC_VERSION_CHECK -#undef JSON_HEDLEY_NEVER_INLINE -#undef JSON_HEDLEY_NON_NULL -#undef JSON_HEDLEY_NO_ESCAPE -#undef JSON_HEDLEY_NO_RETURN -#undef JSON_HEDLEY_NO_THROW -#undef JSON_HEDLEY_NULL -#undef JSON_HEDLEY_PELLES_VERSION -#undef JSON_HEDLEY_PELLES_VERSION_CHECK -#undef JSON_HEDLEY_PGI_VERSION -#undef JSON_HEDLEY_PGI_VERSION_CHECK -#undef JSON_HEDLEY_PREDICT -#undef JSON_HEDLEY_PRINTF_FORMAT -#undef JSON_HEDLEY_PRIVATE -#undef JSON_HEDLEY_PUBLIC -#undef JSON_HEDLEY_PURE -#undef JSON_HEDLEY_REINTERPRET_CAST -#undef JSON_HEDLEY_REQUIRE -#undef JSON_HEDLEY_REQUIRE_CONSTEXPR -#undef JSON_HEDLEY_REQUIRE_MSG -#undef JSON_HEDLEY_RESTRICT -#undef JSON_HEDLEY_RETURNS_NON_NULL -#undef JSON_HEDLEY_SENTINEL -#undef JSON_HEDLEY_STATIC_ASSERT -#undef JSON_HEDLEY_STATIC_CAST -#undef JSON_HEDLEY_STRINGIFY -#undef JSON_HEDLEY_STRINGIFY_EX -#undef JSON_HEDLEY_SUNPRO_VERSION -#undef JSON_HEDLEY_SUNPRO_VERSION_CHECK -#undef JSON_HEDLEY_TINYC_VERSION -#undef JSON_HEDLEY_TINYC_VERSION_CHECK -#undef JSON_HEDLEY_TI_ARMCL_VERSION -#undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK -#undef JSON_HEDLEY_TI_CL2000_VERSION -#undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK -#undef JSON_HEDLEY_TI_CL430_VERSION -#undef JSON_HEDLEY_TI_CL430_VERSION_CHECK -#undef JSON_HEDLEY_TI_CL6X_VERSION -#undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK -#undef JSON_HEDLEY_TI_CL7X_VERSION -#undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK -#undef JSON_HEDLEY_TI_CLPRU_VERSION -#undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK -#undef JSON_HEDLEY_TI_VERSION -#undef JSON_HEDLEY_TI_VERSION_CHECK -#undef JSON_HEDLEY_UNAVAILABLE -#undef JSON_HEDLEY_UNLIKELY -#undef JSON_HEDLEY_UNPREDICTABLE -#undef JSON_HEDLEY_UNREACHABLE -#undef JSON_HEDLEY_UNREACHABLE_RETURN -#undef JSON_HEDLEY_VERSION -#undef JSON_HEDLEY_VERSION_DECODE_MAJOR -#undef JSON_HEDLEY_VERSION_DECODE_MINOR -#undef JSON_HEDLEY_VERSION_DECODE_REVISION -#undef JSON_HEDLEY_VERSION_ENCODE -#undef JSON_HEDLEY_WARNING -#undef JSON_HEDLEY_WARN_UNUSED_RESULT -#undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG -#undef JSON_HEDLEY_FALL_THROUGH - - - -#endif // INCLUDE_NLOHMANN_JSON_HPP_ diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/nlohmann/json_fwd.hpp b/Source/ThirdParty/DPPLibrary/include/dpp/nlohmann/json_fwd.hpp deleted file mode 100644 index 2d5ba38..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/nlohmann/json_fwd.hpp +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ -#define INCLUDE_NLOHMANN_JSON_FWD_HPP_ - -#include // int64_t, uint64_t -#include // map -#include // allocator -#include // string -#include // vector - -/*! -@brief namespace for Niels Lohmann -@see https://github.com/nlohmann -@since version 1.0.0 -*/ -namespace nlohmann -{ -/*! -@brief default JSONSerializer template argument - -This serializer ignores the template arguments and uses ADL -([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) -for serialization. -*/ -template -struct adl_serializer; - -/// a class to store JSON values -/// @sa https://json.nlohmann.me/api/basic_json/ -template class ObjectType = - std::map, - template class ArrayType = std::vector, - class StringType = std::string, class BooleanType = bool, - class NumberIntegerType = std::int64_t, - class NumberUnsignedType = std::uint64_t, - class NumberFloatType = double, - template class AllocatorType = std::allocator, - template class JSONSerializer = - adl_serializer, - class BinaryType = std::vector> -class basic_json; - -/// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document -/// @sa https://json.nlohmann.me/api/json_pointer/ -template -class json_pointer; - -/*! -@brief default specialization -@sa https://json.nlohmann.me/api/json/ -*/ -using json = basic_json<>; - -/// @brief a minimal map-like container that preserves insertion order -/// @sa https://json.nlohmann.me/api/ordered_map/ -template -struct ordered_map; - -/// @brief specialization that maintains the insertion order of object keys -/// @sa https://json.nlohmann.me/api/ordered_json/ -using ordered_json = basic_json; - -} // namespace nlohmann - -#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/once.h b/Source/ThirdParty/DPPLibrary/include/dpp/once.h deleted file mode 100644 index 0c1a8ce..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/once.h +++ /dev/null @@ -1,46 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2022 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include - -namespace dpp { - - /** - * @brief Run some code within an if() statement only once. - * - * Use this template like this: - * - * ``` - * if (dpp::run_once()) { - * // Your code here - * } - * ``` - * - * @tparam T any unique 'tag' identifier name - * @return auto a true/false return to say if we should execute or not - */ - template auto run_once() { - static auto called = false; - return !std::exchange(called, true); - }; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/permissions.h b/Source/ThirdParty/DPPLibrary/include/dpp/permissions.h deleted file mode 100644 index cf5c071..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/permissions.h +++ /dev/null @@ -1,204 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Represents the various discord permissions - */ -enum permissions : uint64_t { - p_create_instant_invite = 0x00000000001, //!< allows creation of instant invites - p_kick_members = 0x00000000002, //!< allows kicking members - p_ban_members = 0x00000000004, //!< allows banning members - p_administrator = 0x00000000008, //!< allows all permissions and bypasses channel permission overwrites - p_manage_channels = 0x00000000010, //!< allows management and editing of channels - p_manage_guild = 0x00000000020, //!< allows management and editing of the guild - p_add_reactions = 0x00000000040, //!< allows for the addition of reactions to messages - p_view_audit_log = 0x00000000080, //!< allows for viewing of audit logs - p_priority_speaker = 0x00000000100, //!< allows for using priority speaker in a voice channel - p_stream = 0x00000000200, //!< allows the user to go live - p_view_channel = 0x00000000400, //!< allows guild members to view a channel, which includes reading messages in text channels and joining voice channels - p_send_messages = 0x00000000800, //!< allows for sending messages in a channel - p_send_tts_messages = 0x00000001000, //!< allows for sending of /tts messages - p_manage_messages = 0x00000002000, //!< allows for deletion of other users messages - p_embed_links = 0x00000004000, //!< links sent by users with this permission will be auto-embedded - p_attach_files = 0x00000008000, //!< allows for uploading images and files - p_read_message_history = 0x00000010000, //!< allows for reading of message history - p_mention_everyone = 0x00000020000, //!< allows for using the everyone and the here tag to notify users in a channel - p_use_external_emojis = 0x00000040000, //!< allows the usage of custom emojis from other servers - p_view_guild_insights = 0x00000080000, //!< allows for viewing guild insights - p_connect = 0x00000100000, //!< allows for joining of a voice channel - p_speak = 0x00000200000, //!< allows for speaking in a voice channel - p_mute_members = 0x00000400000, //!< allows for muting members in a voice channel - p_deafen_members = 0x00000800000, //!< allows for deafening of members in a voice channel - p_move_members = 0x00001000000, //!< allows for moving of members between voice channels - p_use_vad = 0x00002000000, //!< allows for using voice-activity-detection in a voice channel - p_change_nickname = 0x00004000000, //!< allows for modification of own nickname - p_manage_nicknames = 0x00008000000, //!< allows for modification of other users nicknames - p_manage_roles = 0x00010000000, //!< allows management and editing of roles - p_manage_webhooks = 0x00020000000, //!< allows management and editing of webhooks - p_manage_emojis_and_stickers = 0x00040000000, //!< allows management and editing of emojis and stickers - p_use_application_commands = 0x00080000000, //!< allows members to use application commands, including slash commands and context menus - p_request_to_speak = 0x00100000000, //!< allows for requesting to speak in stage channels. (Discord: This permission is under active development and may be changed or removed.) - p_manage_events = 0x00200000000, //!< allows for management (creation, updating, deleting, starting) of scheduled events - p_manage_threads = 0x00400000000, //!< allows for deleting and archiving threads, and viewing all private threads - p_create_public_threads = 0x00800000000, //!< allows for creating public and announcement threads - p_create_private_threads = 0x01000000000, //!< allows for creating private threads - p_use_external_stickers = 0x02000000000, //!< allows the usage of custom stickers from other servers - p_send_messages_in_threads = 0x04000000000, //!< allows for sending messages in threads - p_use_embedded_activities = 0x08000000000, //!< allows for using activities (applications with the EMBEDDED flag) in a voice channel - p_moderate_members = 0x10000000000, //!< allows for timing out users to prevent them from sending or reacting to messages in chat and threads, and from speaking in voice and stage channels -}; - -/** - * @brief Represents the various discord permissions - * @deprecated Use dpp::permissions instead. - */ -using role_permissions = permissions; - -/** - * @brief Represents a permission bitmask (refer to enum dpp::permissions) which are hold in an uint64_t - */ -class DPP_EXPORT permission { -protected: - /** - * @brief The permission bitmask value - */ - uint64_t value; - -public: - /** - * @brief Construct a permission object - * @param value A permission bitmask - */ - permission(const uint64_t& value); - - /** - * @brief Construct a permission object - */ - permission(); - - /** - * @brief For acting like an integer - * @return The permission bitmask value - */ - operator uint64_t() const; - - /** - * @brief For acting like an integer - * @return A reference to the permission bitmask value - */ - operator uint64_t &(); - - /** - * @brief For building json - * @return The permission bitmask value as a string - */ - operator nlohmann::json() const; - - /** - * @brief Check for permission flags set. It uses the Bitwise AND operator - * @tparam T one or more uint64_t permission bits - * @param values The permissions (from dpp::permissions) to check for - * - * **Example:** - * - * ```cpp - * bool is_mod = permission.has(dpp::p_kick_members, dpp::p_ban_members); - * // Returns true if the permission bitmask contains p_kick_members and p_ban_members - * ``` - * - * @return bool True if it has all the given permissions - */ - template - bool has(T... values) const { - return (value & (0 | ... | values)) == (0 | ... | values); - } - - /** - * @brief Add a permission with the Bitwise OR operation - * @tparam T one or more uint64_t permission bits - * @param values The permissions (from dpp::permissions) to add - * - * **Example:** - * - * ```cpp - * permission.add(dpp::p_view_channel, dpp::p_send_messages); - * // Adds p_view_channel and p_send_messages to the permission bitmask - * ``` - * - * @return permission& reference to self for chaining - */ - template - typename std::enable_if<(std::is_convertible::value && ...), permission&>::type - add(T... values) { - value |= (0 | ... | values); - return *this; - } - - /** - * @brief Assign a permission. This will reset the bitmask to the new value. - * @tparam T one or more uint64_t permission bits - * @param values The permissions (from dpp::permissions) to set - * - * **Example:** - * - * ```cpp - * permission.set(dpp::p_view_channel, dpp::p_send_messages); - * ``` - * - * @return permission& reference to self for chaining - */ - template - typename std::enable_if<(std::is_convertible::value && ...), permission&>::type - set(T... values) { - value = (0 | ... | values); - return *this; - } - - /** - * @brief Remove a permission with the Bitwise NOT operation - * @tparam T one or more uint64_t permission bits - * @param values The permissions (from dpp::permissions) to remove - * - * **Example:** - * - * ```cpp - * permission.remove(dpp::p_view_channel, dpp::p_send_messages); - * // Removes p_view_channel and p_send_messages permission - * ``` - * - * @return permission& reference to self for chaining - */ - template - typename std::enable_if<(std::is_convertible::value && ...), permission&>::type - remove(T... values) { - value &= ~(0 | ... | values); - return *this; - } -}; - -} diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/presence.h b/Source/ThirdParty/DPPLibrary/include/dpp/presence.h deleted file mode 100644 index d814e41..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/presence.h +++ /dev/null @@ -1,392 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Presence flags bitmask - */ -enum presence_flags { - /// Desktop: Online - p_desktop_online = 0b00000001, - /// Desktop: DND - p_desktop_dnd = 0b00000010, - /// Desktop: Idle - p_desktop_idle = 0b00000011, - /// Web: Online - p_web_online = 0b00000100, - /// Web: DND - p_web_dnd = 0b00001000, - /// Web: Idle - p_web_idle = 0b00001100, - /// Mobile: Online - p_mobile_online = 0b00010000, - /// Mobile: DND - p_mobile_dnd = 0b00100000, - /// Mobile: Idle - p_mobile_idle = 0b00110000, - /// General: Online - p_status_online = 0b01000000, - /// General: DND - p_status_dnd = 0b10000000, - /// General: Idle - p_status_idle = 0b11000000 -}; - -/** - * @brief Online presence status values - */ -enum presence_status : uint8_t { - /// Offline - ps_offline = 0, - /// Online - ps_online = 1, - /// DND - ps_dnd = 2, - /// Idle - ps_idle = 3 -}; - -/** - * @brief Bit shift for desktop status - */ -#define PF_SHIFT_DESKTOP 0 -/** Bit shift for web status */ -#define PF_SHIFT_WEB 2 -/** Bit shift for mobile status */ -#define PF_SHIFT_MOBILE 4 -/** Bit shift for main status */ -#define PF_SHIFT_MAIN 6 -/** Bit mask for status */ -#define PF_STATUS_MASK 0b00000011 -/** Bit mask for clearing desktop status */ -#define PF_CLEAR_DESKTOP 0b11111100 -/** Bit mask for clearing web status */ -#define PF_CLEAR_WEB 0b11110011 -/** Bit mask for clearing mobile status */ -#define PF_CLEAR_MOBILE 0b11001111 -/** Bit mask for clearing main status */ -#define PF_CLEAR_STATUS 0b00111111 - -/** - * @brief Game types - */ -enum activity_type : uint8_t { - /// "Playing ..." - at_game = 0, - /// "Streaming ..." - at_streaming = 1, - /// "Listening to..." - at_listening = 2, - /// "Watching..." - at_watching = 3, - /// "Emoji..." - at_custom = 4, - /// "Competing in..." - at_competing = 5 -}; - -/** - * @brief Activity types for rich presence - */ -enum activity_flags { - /// In an instance - af_instance = 0b000000001, - /// Joining - af_join = 0b000000010, - /// Spectating - af_spectate = 0b000000100, - /// Sending join request - af_join_request = 0b000001000, - /// Synchronising - af_sync = 0b000010000, - /// Playing - af_play = 0b000100000, - /// Party privacy friends - af_party_privacy_friends = 0b001000000, - /// Party privacy voice channel - af_party_privacy_voice_channel = 0b010000000, - /// Embedded - af_embedded = 0b100000000 -}; - -/** - * @brief An activity button is a custom button shown in the rich presence. Can be to join a game or whatever - */ -struct DPP_EXPORT activity_button { -public: - /** The text shown on the button (1-32 characters) - */ - std::string label; - /** The url opened when clicking the button (1-512 characters). It's may be empty - * - * @note Bots cannot access the activity button URLs. - */ - std::string url; - - /** Constructor */ - activity_button() = default; -}; - -/** - * @brief An activity asset are the images and the hover text displayed in the rich presence - */ -struct DPP_EXPORT activity_assets { -public: - /** The large asset image which usually contain snowflake ID or prefixed image ID - */ - std::string large_image; - /** Text displayed when hovering over the large image of the activity - */ - std::string large_text; - /** The small asset image which usually contain snowflake ID or prefixed image ID - */ - std::string small_image; - /** Text displayed when hovering over the small image of the activity - */ - std::string small_text; - - /** Constructor */ - activity_assets() = default; -}; - -/** - * @brief Secrets for Rich Presence joining and spectating - */ -struct DPP_EXPORT activity_secrets { -public: - /** The secret for joining a party - */ - std::string join; - /** The secret for spectating a game - */ - std::string spectate; - /** The secret for a specific instanced match - */ - std::string match; - - /** Constructor */ - activity_secrets() = default; -}; - -/** - * @brief Information for the current party of the player - */ -struct DPP_EXPORT activity_party { -public: - /** The ID of the party - */ - snowflake id; - /** The party's current size. Used to show the party's current size - */ - int32_t current_size; - /** The party's maximum size. Used to show the party's maximum size - */ - int32_t maximum_size; - - /** Constructor */ - activity_party(); -}; - -/** - * @brief An activity is a representation of what a user is doing. It might be a game, or a website, or a movie. Whatever. - */ -class DPP_EXPORT activity { -public: - /** Name of activity - * e.g. "Fortnite" - */ - std::string name; - /** State of activity or the custom user status. - * e.g. "Waiting in lobby" - */ - std::string state; - /** What the player is currently doing - */ - std::string details; - /** Images for the presence and their hover texts - */ - activity_assets assets; - /** URL. - * Only applicable for certain sites such a YouTube - * Alias: details - */ - std::string url; - /** The custom buttons shown in the Rich Presence (max 2) - */ - std::vector buttons; - /** The emoji used for the custom status - */ - dpp::emoji emoji; - /** Information of the current party if there is one - */ - activity_party party; - /** Secrets for rich presence joining and spectating - */ - activity_secrets secrets; - /** Activity type - */ - activity_type type; - /** Time activity was created - */ - time_t created_at; - /** Start time. e.g. when game was started - */ - time_t start; - /** End time, e.g. for songs on spotify - */ - time_t end; - /** Creating application (e.g. a linked account on the user's client) - */ - snowflake application_id; - /** Flags bitmask from dpp::activity_flags - */ - uint8_t flags; - /** Whether or not the activity is an instanced game session - */ - bool is_instance; - - /** - * @brief Get the assets large image url if they have one, otherwise returns an empty string. In case of prefixed image IDs (mp:{image_id}) it returns an empty string. - * - * @see https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-asset-image - * - * @param size The size of the image in pixels. It can be any power of two between 16 and 4096, - * otherwise the default sized image is returned. - * @param format The format to use for the avatar. It can be one of `i_webp`, `i_jpg` or `i_png`. - * @return std::string image url or an empty string, if required attributes are missing or an invalid format was passed - */ - std::string get_large_asset_url(uint16_t size = 0, const image_type format = i_png) const; - - /** - * @brief Get the assets small image url if they have one, otherwise returns an empty string. In case of prefixed image IDs (mp:{image_id}) it returns an empty string. - * - * @see https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-asset-image - * - * @param size The size of the image in pixels. It can be any power of two between 16 and 4096, - * otherwise the default sized image is returned. - * @param format The format to use for the avatar. It can be one of `i_webp`, `i_jpg` or `i_png`. - * @return std::string image url or an empty string, if required attributes are missing or an invalid format was passed - */ - std::string get_small_asset_url(uint16_t size = 0, const image_type format = i_png) const; - - activity(); - - /** - * @brief Construct a new activity - * - * @param typ activity type - * @param nam Name of the activity - * @param stat State of the activity - * @param url_ url of the activity, only works for certain sites, such as YouTube - */ - activity(const activity_type typ, const std::string& nam, const std::string& stat, const std::string& url_); -}; - -/** - * @brief Represents user presence, e.g. what game they are playing and if they are online - */ -class DPP_EXPORT presence : public json_interface { -public: - /** The user the presence applies to */ - snowflake user_id; - - /** Guild ID. Apparently, Discord supports this internally but the client doesn't... */ - snowflake guild_id; - - /** Flags bitmask containing dpp::presence_flags */ - uint8_t flags; - - /** List of activities */ - std::vector activities; - - /** Constructor */ - presence(); - - /** - * @brief Construct a new presence object with some parameters for sending to a websocket - * - * @param status Status of the activity - * @param type Type of activity - * @param activity_description Description of the activity - */ - presence(presence_status status, activity_type type, const std::string& activity_description); - - /** - * @brief Construct a new presence object with some parameters for sending to a websocket. - * - * @param status Status of the activity - * @param a Activity itself - */ - presence(presence_status status, const activity& a); - - /** Destructor */ - ~presence(); - - /** Fill this object from json. - * @param j JSON object to fill from - * @return A reference to self - */ - presence& fill_from_json(nlohmann::json* j); - - /** Build JSON from this object. - * - * Note: This excludes any part of the presence object that are not valid for websockets and bots, - * and includes websocket opcode 3. You will not get what you expect if you call this on a user's - * presence received from on_presence_update or on_guild_create! - * - * @param with_id Add ID to output - * @return The JSON text of the presence - */ - virtual std::string build_json(bool with_id = false) const; - - /** The users status on desktop - * @return The user's status on desktop - */ - presence_status desktop_status() const; - - /** The user's status on web - * @return The user's status on web - */ - presence_status web_status() const; - - /** The user's status on mobile - * @return The user's status on mobile - */ - presence_status mobile_status() const; - - /** The user's status as shown to other users - * @return The user's status as shown to other users - */ - presence_status status() const; -}; - -/** A container of presences */ -typedef std::unordered_map presence_map; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/prune.h b/Source/ThirdParty/DPPLibrary/include/dpp/prune.h deleted file mode 100644 index b299ce3..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/prune.h +++ /dev/null @@ -1,63 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Defines a request to count prunable users, or start a prune operation - */ -struct DPP_EXPORT prune : public json_interface { - /** - * Destroy this prune object - */ - virtual ~prune() = default; - - /** Number of days to include in the prune - */ - uint32_t days = 0; - /** Roles to include in the prune (empty to include everyone) - */ - std::vector include_roles; - /** True if the count of pruneable users should be returned - * (discord recommend not using this on big guilds) - */ - bool compute_prune_count; - - /** Fill this object from json. - * @param j JSON object to fill from - * @return A reference to self - */ - prune& fill_from_json(nlohmann::json* j); - - /** Build JSON from this object. - * @param with_prune_count True if the prune count boolean is to be set in the built JSON - * @return The JSON text of the prune object - */ - virtual std::string build_json(bool with_prune_count = false) const; - -}; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/queues.h b/Source/ThirdParty/DPPLibrary/include/dpp/queues.h deleted file mode 100644 index e3e5a65..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/queues.h +++ /dev/null @@ -1,457 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Error values. Most of these are currently unused in https_client. - */ -enum http_error { - /// Request successful - h_success = 0, - /// Status unknown - h_unknown, - /// Connect failed - h_connection, - /// Invalid local ip address - h_bind_ip_address, - /// Read error - h_read, - /// Write error - h_write, - /// Too many 30x redirects - h_exceed_redirect_count, - /// Request cancelled - h_canceled, - /// SSL connection error - h_ssl_connection, - /// SSL cert loading error - h_ssl_loading_certs, - /// SSL server verification error - h_ssl_server_verification, - /// Unsupported multipart boundary characters - h_unsupported_multipart_boundary_chars, - /// Compression error - h_compression, -}; - -/** - * @brief The result of any HTTP request. Contains the headers, vital - * rate limit figures, and returned request body. - */ -struct DPP_EXPORT http_request_completion_t { - /** @brief HTTP headers of response */ - std::map headers; - /** @brief HTTP status, e.g. 200 = OK, 404 = Not found, 429 = Rate limited */ - uint16_t status = 0; - /** @brief Error status (e.g. if the request could not connect at all) */ - http_error error = h_success; - /** @brief Ratelimit bucket */ - std::string ratelimit_bucket; - /** @brief Ratelimit limit of requests */ - uint64_t ratelimit_limit = 0; - /** @brief Ratelimit remaining requests */ - uint64_t ratelimit_remaining = 0; - /** @brief Ratelimit reset after (seconds) */ - uint64_t ratelimit_reset_after = 0; - /** @brief Ratelimit retry after (seconds) */ - uint64_t ratelimit_retry_after = 0; - /** @brief True if this request has caused us to be globally rate limited */ - bool ratelimit_global = false; - /** @brief Reply body */ - std::string body; - /** @brief Ping latency */ - double latency; -}; - -/** - * @brief Results of HTTP requests are called back to these std::function types. - * @note Returned http_completion_events are called ASYNCHRONOUSLY in your - * code which means they execute in a separate thread. The completion events - * arrive in order. - */ -typedef std::function http_completion_event; - -/** - * @brief Various types of http method supported by the Discord API - */ -enum http_method { - /// GET - m_get, - /// POST - m_post, - /// PUT - m_put, - /// PATCH - m_patch, - /// DELETE - m_delete -}; - -/** - * @brief A HTTP request. - * - * You should instantiate one of these objects via its constructor, - * and pass a pointer to it into an instance of request_queue. Although you can - * directly call the run() method of the object and it will make a HTTP call, be - * aware that if you do this, it will be a **BLOCKING call** (not asynchronous) and - * will not respect rate limits, as both of these functions are managed by the - * request_queue class. - */ -class DPP_EXPORT http_request { - /** @brief Completion callback */ - http_completion_event complete_handler; - /** @brief True if request has been made */ - bool completed; - /** @brief True for requests that are not going to discord (rate limits code skipped) */ - bool non_discord; -public: - /** @brief Endpoint name e.g. /api/users */ - std::string endpoint; - /** @brief Major and minor parameters */ - std::string parameters; - /** @brief Postdata for POST and PUT */ - std::string postdata; - /** @brief HTTP method for request */ - http_method method; - /** @brief Audit log reason for Discord requests, if non-empty */ - std::string reason; - /** @brief Upload file name (server side) */ - std::vector file_name; - /** @brief Upload file contents (binary) */ - std::vector file_content; - /** @brief Request mime type */ - std::string mimetype; - /** @brief Request headers (non-discord requests only) */ - std::multimap req_headers; - /** @brief Waiting for rate limit to expire */ - bool waiting; - - /** - * @brief Constructor. When constructing one of these objects it should be passed to request_queue::post_request(). - * @param _endpoint The API endpoint, e.g. /api/guilds - * @param _parameters Major and minor parameters for the endpoint e.g. a user id or guild id - * @param completion completion event to call when done - * @param _postdata Data to send in POST and PUT requests - * @param method The HTTP method to use from dpp::http_method - * @param audit_reason Audit log reason to send, empty to send none - * @param filename The filename (server side) of any uploaded file - * @param filecontent The binary content of any uploaded file for the request - */ - http_request(const std::string &_endpoint, const std::string &_parameters, http_completion_event completion, const std::string &_postdata = "", http_method method = m_get, const std::string &audit_reason = "", const std::string &filename = "", const std::string &filecontent = ""); - - /** - * @brief Constructor. When constructing one of these objects it should be passed to request_queue::post_request(). - * @param _endpoint The API endpoint, e.g. /api/guilds - * @param _parameters Major and minor parameters for the endpoint e.g. a user id or guild id - * @param completion completion event to call when done - * @param _postdata Data to send in POST and PUT requests - * @param method The HTTP method to use from dpp::http_method - * @param audit_reason Audit log reason to send, empty to send none - * @param filename The filename (server side) of any uploaded file - * @param filecontent The binary content of any uploaded file for the request - */ - http_request(const std::string &_endpoint, const std::string &_parameters, http_completion_event completion, const std::string &_postdata = "", http_method method = m_get, const std::string &audit_reason = "", const std::vector &filename = {}, const std::vector &filecontent = {}); - - /** - * @brief Constructor. When constructing one of these objects it should be passed to request_queue::post_request(). - * @param _url Raw HTTP url - * @param completion completion event to call when done - * @param method The HTTP method to use from dpp::http_method - * @param _postdata Data to send in POST and PUT requests - * @param _mimetype POST data mime type - * @param _headers HTTP headers to send - */ - http_request(const std::string &_url, http_completion_event completion, http_method method = m_get, const std::string &_postdata = "", const std::string &_mimetype = "text/plain", const std::multimap &_headers = {}); - - /** - * @brief Destroy the http request object - */ - ~http_request(); - - /** - * @brief Call the completion callback, if the request is complete. - * @param c callback to call - */ - void complete(const http_request_completion_t &c); - - /** - * @brief Execute the HTTP request and mark the request complete. - * @param owner creating cluster - */ - http_request_completion_t run(class cluster* owner); - - /** @brief Returns true if the request is complete */ - bool is_completed(); -}; - -/** - * @brief A rate limit bucket. The library builds one of these for - * each endpoint. - */ -struct DPP_EXPORT bucket_t { - /** @brief Request limit */ - uint64_t limit; - /** @brief Requests remaining */ - uint64_t remaining; - /** @brief Ratelimit of this bucket resets after this many seconds */ - uint64_t reset_after; - /** @brief Ratelimit of this bucket can be retried after this many seconds */ - uint64_t retry_after; - /** @brief Timestamp this buckets counters were updated */ - time_t timestamp; -}; - - -/** - * @brief Represents a thread in the thread pool handling requests to HTTP(S) servers. - * There are several of these, the total defined by a constant in queues.cpp, and each - * one will always receive requests for the same rate limit bucket based on its endpoint - * portion of the url. This makes rate limit handling reliable and easy to manage. - * Each of these also has its own mutex, so that requests are less likely to block while - * waiting for internal containers to be usable. - */ -class DPP_EXPORT in_thread { -private: - /** - * @brief True if ending - */ - bool terminating; - - /** - * @brief Request queue that owns this in_thread - */ - class request_queue* requests; - - /** - * @brief The cluster that owns this in_thread - */ - class cluster* creator; - - /** - * @brief Inbound queue mutex thread safety - */ - std::shared_mutex in_mutex; - - /** - * @brief Inbound queue thread - */ - std::thread* in_thr; - - /** - * @brief Inbound queue condition, signalled when there are requests to fulfill - */ - std::condition_variable in_ready; - - /** - * @brief Ratelimit bucket counters - */ - std::map buckets; - - /** - * @brief Queue of requests to be made - */ - std::map> requests_in; - - /** - * @brief Inbound queue thread loop - * @param index Thread index - */ - void in_loop(uint32_t index); -public: - /** - * @brief Construct a new in thread object - * - * @param owner Owning cluster - * @param req_q Owning request queue - * @param index Thread index number - */ - in_thread(class cluster* owner, class request_queue* req_q, uint32_t index); - - /** - * @brief Destroy the in thread object - * This will end the thread that is owned by this object by joining it. - */ - ~in_thread(); - - /** - * @brief Post a http_request to this thread. - * - * @param req http_request to post. The pointer will be freed when it has - * been executed. - */ - void post_request(http_request* req); -}; - -/** - * @brief The request_queue class manages rate limits and marshalls HTTP requests that have - * been built as http_request objects. - * - * It ensures asynchronous delivery of events and queueing of requests. - * - * It will spawn two threads, one to make outbound HTTP requests and push the returned - * results into a queue, and the second to call the callback methods with these results. - * They are separated so that if the user decides to take a long time processing a reply - * in their callback it won't affect when other requests are sent, and if a HTTP request - * takes a long time due to latency, it won't hold up user processing. - * - * There are usually two request_queue objects in each dpp::cluster, one of which is used - * internally for the various REST methods to Discord such as sending messages, and the other - * used to support user REST calls via dpp::cluster::request(). - */ -class DPP_EXPORT request_queue { -protected: - /** - * @brief Required so in_thread can access these member variables - */ - friend class in_thread; - - /** - * @brief The cluster that owns this request_queue - */ - class cluster* creator; - - /** - * @brief Outbound queue mutex thread safety - */ - std::shared_mutex out_mutex; - - /** - * @brief Outbound queue thread - * Note that although there are many 'in queues', which handle the HTTP requests, - * there is only ever one 'out queue' which dispatches the results to the caller. - * This is to simplify thread management in bots that use the library, as less mutexing - * and thread safety boilerplate is required. - */ - std::thread* out_thread; - - /** - * @brief Outbound queue condition, signalled when there are requests completed to call callbacks for - */ - std::condition_variable out_ready; - - /** - * @brief Completed requests queue - */ - std::queue> responses_out; - - /** - * @brief A vector of inbound request threads forming a pool. - * There are a set number of these defined by a constant in queues.cpp. A request is always placed - * on the same element in this vector, based upon its url, so that two conditions are satisfied: - * 1) Any requests for the same ratelimit bucket are handled by the same thread in the pool so that - * they do not create unnecessary 429 errors, - * 2) Requests for different endpoints go into different buckets, so that they may be requested in parallel - * A global ratelimit event pauses all threads in the pool. These are few and far between. - */ - std::vector requests_in; - - /** - * @brief Completed requests to delete - */ - std::multimap> responses_to_delete; - - /** - * @brief Set to true if the threads should terminate - */ - bool terminating; - - /** - * @brief True if globally rate limited - makes the entire request thread wait - */ - bool globally_ratelimited; - - /** - * @brief How many seconds we are globally rate limited for, if globally_ratelimited is true - */ - uint64_t globally_limited_for; - - /** - * @brief Number of request threads in the thread pool - */ - uint32_t in_thread_pool_size; - - /** - * @brief Outbound queue thread loop - */ - void out_loop(); -public: - - /** - * @brief constructor - * @param owner The creating cluster. - * @param request_threads The number of http request threads to allocate to the threadpool. - * By default eight threads are allocated. - * Side effects: Creates threads for the queue - */ - request_queue(class cluster* owner, uint32_t request_threads = 8); - - /** - * @brief Add more request threads to the library at runtime. - * @note You should do this at a quiet time when there are few requests happening. - * This will reorganise the hashing used to place requests into the thread pool so if you do - * this while the bot is busy there is a small chance of receiving "429 rate limited" errors. - * @param request_threads Number of threads to add. It is not possible to scale down at runtime. - * @return reference to self - */ - request_queue& add_request_threads(uint32_t request_threads); - - /** - * @brief Get the request thread count - * @return uint32_t number of request threads that are active - */ - uint32_t get_request_thread_count() const; - - /** - * @brief Destroy the request queue object. - * Side effects: Joins and deletes queue threads - */ - ~request_queue(); - - /** - * @brief Put a http_request into the request queue. You should ALWAYS "new" an object - * to pass to here -- don't submit an object that's on the stack! - * @note Will use a simple hash function to determine which of the 'in queues' to place - * this request onto. - * @param req request to add - * @return reference to self - */ - request_queue& post_request(http_request *req); - - /** - * @brief Returns true if the bot is currently globally rate limited - * @return true if globally rate limited - */ - bool is_globally_ratelimited() const; -}; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/restrequest.h b/Source/ThirdParty/DPPLibrary/include/dpp/restrequest.h deleted file mode 100644 index 2f3cc78..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/restrequest.h +++ /dev/null @@ -1,205 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2022 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Templated REST request helper to save on typing - * - * @tparam T type to return in lambda callback - * @param c calling cluster - * @param basepath base path for API call - * @param major major API function - * @param minor minor API function - * @param method HTTP method - * @param postdata Post data or empty string - * @param callback Callback lambda - */ -template inline void rest_request(dpp::cluster* c, const char* basepath, const std::string &major, const std::string &minor, http_method method, const std::string& postdata, command_completion_event_t callback) { - c->post_rest(basepath, major, minor, method, postdata, [c, callback](json &j, const http_request_completion_t& http) { - if (callback) { - callback(confirmation_callback_t(c, T().fill_from_json(&j), http)); - } - }); -}; - -/** - * @brief Templated REST request helper to save on typing (specialised for message) - * - * @tparam T type to return in lambda callback - * @param c calling cluster - * @param basepath base path for API call - * @param major major API function - * @param minor minor API function - * @param method HTTP method - * @param postdata Post data or empty string - * @param callback Callback lambda - */ -template<> inline void rest_request(dpp::cluster* c, const char* basepath, const std::string &major, const std::string &minor, http_method method, const std::string& postdata, command_completion_event_t callback) { - c->post_rest(basepath, major, minor, method, postdata, [c, callback](json &j, const http_request_completion_t& http) { - if (callback) { - callback(confirmation_callback_t(c, message(c).fill_from_json(&j), http)); - } - }); -}; - -/** - * @brief Templated REST request helper to save on typing (specialised for confirmation) - * - * @tparam T type to return in lambda callback - * @param c calling cluster - * @param basepath base path for API call - * @param major major API function - * @param minor minor API function - * @param method HTTP method - * @param postdata Post data or empty string - * @param callback Callback lambda - */ -template<> inline void rest_request(dpp::cluster* c, const char* basepath, const std::string &major, const std::string &minor, http_method method, const std::string& postdata, command_completion_event_t callback) { - c->post_rest(basepath, major, minor, method, postdata, [c, callback](json &j, const http_request_completion_t& http) { - if (callback) { - callback(confirmation_callback_t(c, confirmation(), http)); - } - }); -}; - -/** - * @brief Templated REST request helper to save on typing (for returned lists) - * - * @tparam T singular type to return in lambda callback - * @tparam T map type to return in lambda callback - * @param c calling cluster - * @param basepath base path for API call - * @param major major API function - * @param minor minor API function - * @param method HTTP method - * @param postdata Post data or empty string - * @param key Key name of elements in the json list - * @param callback Callback lambda - */ -template inline void rest_request_list(dpp::cluster* c, const char* basepath, const std::string &major, const std::string &minor, http_method method, const std::string& postdata, command_completion_event_t callback, const std::string& key = "id") { - c->post_rest(basepath, major, minor, method, postdata, [c, key, callback](json &j, const http_request_completion_t& http) { - std::unordered_map list; - confirmation_callback_t e(c, confirmation(), http); - if (!e.is_error()) { - for (auto & curr_item : j) { - list[snowflake_not_null(&curr_item, key.c_str())] = T().fill_from_json(&curr_item); - } - } - if (callback) { - callback(confirmation_callback_t(c, list, http)); - } - }); -} - -/** - * @brief Templated REST request helper to save on typing (for returned lists, specialised for invites) - * - * @tparam T singular type to return in lambda callback - * @tparam T map type to return in lambda callback - * @param c calling cluster - * @param basepath base path for API call - * @param major major API function - * @param minor minor API function - * @param method HTTP method - * @param postdata Post data or empty string - * @param key Key name of elements in the json list - * @param callback Callback lambda - */ -template<> inline void rest_request_list(dpp::cluster* c, const char* basepath, const std::string &major, const std::string &minor, http_method method, const std::string& postdata, command_completion_event_t callback, const std::string& key) { - c->post_rest(basepath, major, minor, method, postdata, [c, callback](json &j, const http_request_completion_t& http) { - std::unordered_map list; - confirmation_callback_t e(c, confirmation(), http); - if (!e.is_error()) { - for (auto & curr_item : j) { - list[string_not_null(&curr_item, "code")] = invite().fill_from_json(&curr_item); - } - } - if (callback) { - callback(confirmation_callback_t(c, list, http)); - } - }); -} -/** - * @brief Templated REST request helper to save on typing (for returned lists, specialised for voiceregions) - * - * @tparam T singular type to return in lambda callback - * @tparam T map type to return in lambda callback - * @param c calling cluster - * @param basepath base path for API call - * @param major major API function - * @param minor minor API function - * @param method HTTP method - * @param postdata Post data or empty string - * @param key Key name of elements in the json list - * @param callback Callback lambda - */ -template<> inline void rest_request_list(dpp::cluster* c, const char* basepath, const std::string &major, const std::string &minor, http_method method, const std::string& postdata, command_completion_event_t callback, const std::string& key) { - c->post_rest(basepath, major, minor, method, postdata, [c, callback](json &j, const http_request_completion_t& http) { - std::unordered_map list; - confirmation_callback_t e(c, confirmation(), http); - if (!e.is_error()) { - for (auto & curr_item : j) { - list[string_not_null(&curr_item, "id")] = voiceregion().fill_from_json(&curr_item); - } - } - if (callback) { - callback(confirmation_callback_t(c, list, http)); - } - }); -} - -/** - * @brief Templated REST request helper to save on typing (for returned vectors) - * - * @tparam T singular type to return in lambda callback - * @tparam T vector type to return in lambda callback - * @param c calling cluster - * @param basepath base path for API call - * @param major major API function - * @param minor minor API function - * @param method HTTP method - * @param postdata Post data or empty string - * @param callback Callback lambda - */ -template inline void rest_request_vector(dpp::cluster* c, const char* basepath, const std::string &major, const std::string &minor, http_method method, const std::string& postdata, command_completion_event_t callback) { - c->post_rest(basepath, major, minor, method, postdata, [c, callback](json &j, const http_request_completion_t& http) { - std::vector list; - confirmation_callback_t e(c, confirmation(), http); - if (!e.is_error()) { - for (auto & curr_item : j) { - list.push_back(T().fill_from_json(&curr_item)); - } - } - if (callback) { - callback(confirmation_callback_t(c, list, http)); - } - }); -} - - -}; \ No newline at end of file diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/restresults.h b/Source/ThirdParty/DPPLibrary/include/dpp/restresults.h deleted file mode 100644 index a504643..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/restresults.h +++ /dev/null @@ -1,316 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using json = nlohmann::json; - -namespace dpp { - -#ifdef _WIN32 - #ifdef _DEBUG - extern "C" DPP_EXPORT void you_are_using_a_debug_build_of_dpp_on_a_release_project(); - #else - extern "C" DPP_EXPORT void you_are_using_a_release_build_of_dpp_on_a_debug_project(); - #endif -#endif - -struct DPP_EXPORT version_checker { - version_checker() { - #ifdef _WIN32 - #ifdef _DEBUG - you_are_using_a_debug_build_of_dpp_on_a_release_project(); - #else - you_are_using_a_release_build_of_dpp_on_a_debug_project(); - #endif - #endif - } -}; - -static version_checker dpp_vc; - - -/** - * @brief A list of shards - */ -typedef std::map shard_list; - -/** - * @brief Represents the various information from the 'get gateway bot' api call - */ -struct DPP_EXPORT gateway { - /// Gateway websocket url - std::string url; - - /// Number of suggested shards to start - uint32_t shards; - - /// Total number of sessions that can be started - uint32_t session_start_total; - - /// How many sessions are left - uint32_t session_start_remaining; - - /// How many seconds until the session start quota resets - uint32_t session_start_reset_after; - - /// How many sessions can be started at the same time - uint32_t session_start_max_concurrency; - - /** - * @brief Construct a new gateway object - * - * @param j JSON data to construct from - */ - gateway(nlohmann::json* j); - - /** - * @brief Construct a new gateway object - */ - gateway(); - - /** - * @brief Fill this object from json - * - * @param j json to fill from - * @return gateway& reference to self - */ - gateway& fill_from_json(nlohmann::json* j); -}; - -/** - * @brief Confirmation object represents any true or false simple REST request - * - */ -struct DPP_EXPORT confirmation { - bool success; -}; - -/** - * @brief A container for types that can be returned for a REST API call - * - */ -typedef std::variant< - application_role_connection, - application_role_connection_metadata_list, - confirmation, - message, - message_map, - user, - user_identified, - user_map, - guild_member, - guild_member_map, - channel, - channel_map, - thread_member, - thread_member_map, - guild, - guild_map, - guild_command_permissions, - guild_command_permissions_map, - role, - role_map, - invite, - invite_map, - dtemplate, - dtemplate_map, - emoji, - emoji_map, - ban, - ban_map, - voiceregion, - voiceregion_map, - integration, - integration_map, - webhook, - webhook_map, - prune, - guild_widget, - gateway, - interaction, - interaction_response, - auditlog, - slashcommand, - slashcommand_map, - stage_instance, - sticker, - sticker_map, - sticker_pack, - sticker_pack_map, - application, - application_map, - connection, - connection_map, - thread, - thread_map, - scheduled_event, - scheduled_event_map, - event_member, - event_member_map, - automod_rule, - automod_rule_map - > confirmable_t; - -/** - * @brief The details of a field in an error response - */ -struct DPP_EXPORT error_detail { - /** - * @brief Object name which is in error - */ - std::string object; - /** - * @brief Field name which is in error - */ - std::string field; - /** - * @brief Error code - */ - std::string code; - /** - * @brief Error reason (full message) - */ - std::string reason; -}; - -/** - * @brief The full details of an error from a REST response - */ -struct DPP_EXPORT error_info { - /** - * @brief Error code - */ - uint32_t code = 0; - /** - * @brief Error message - * - */ - std::string message; - /** - * @brief Field specific error descriptions - */ - std::vector errors; -}; - -/** - * @brief The results of a REST call wrapped in a convenient struct - */ -struct DPP_EXPORT confirmation_callback_t { - /** Information about the HTTP call used to make the request */ - http_request_completion_t http_info; - - /** Value returned, wrapped in variant */ - confirmable_t value; - - /** Owner/creator of the callback object */ - const class cluster* bot; - - /** - * @brief Construct a new confirmation callback t object - */ - confirmation_callback_t() = default; - - /** - * @brief Construct a new confirmation callback t object - * - * @param creator owning cluster object - */ - confirmation_callback_t(cluster* creator); - - /** - * @brief Construct a new confirmation callback object - * - * @param _http The HTTP metadata from the REST call - */ - confirmation_callback_t(const http_request_completion_t& _http); - - /** - * @brief Construct a new confirmation callback object - * - * @param creator owning cluster object - * @param _value The value to encapsulate in the confirmable_t - * @param _http The HTTP metadata from the REST call - */ - confirmation_callback_t(cluster* creator, const confirmable_t& _value, const http_request_completion_t& _http); - - /** - * @brief Returns true if the call resulted in an error rather than a legitimate value in the - * confirmation_callback_t::value member. - * - * @return true There was an error who's details can be obtained by get_error() - * @return false There was no error - */ - bool is_error() const; - - /** - * @brief Get the error_info object. - * The error_info object contains the details of any REST error, if there is an error - * (to find out if there is an error check confirmation_callback_t::is_error()) - * - * @return error_info The details of the error message - */ - error_info get_error() const; - - /** - * @brief Get the stored value via std::get - * @tparam T type to get - * @return stored value as type T - */ - template - T get() const { - return std::get(value); - } -}; - -/** - * @brief A callback upon command completion - */ -typedef std::function command_completion_event_t; - -/** - * @brief Automatically JSON encoded HTTP result - */ -typedef std::function json_encode_t; -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/role.h b/Source/ThirdParty/DPPLibrary/include/dpp/role.h deleted file mode 100644 index 1fb8f90..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/role.h +++ /dev/null @@ -1,650 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** Various flags related to dpp::role */ -enum role_flags : uint8_t { - r_hoist = 0b00000001, //!< Hoisted role - r_managed = 0b00000010, //!< Managed role (introduced by a bot or application) - r_mentionable = 0b00000100, //!< Mentionable with a ping - r_premium_subscriber = 0b00001000, //!< This is set for the role given to nitro -}; - -/** - * @brief Represents a role within a dpp::guild. - * Roles are combined via logical OR of the permission bitmasks, then channel-specific overrides - * can be applied on top, deny types apply a logic NOT to the bit mask, and allows apply a logical OR. - * @note Every guild has at least one role, called the 'everyone' role, which always has the same role - * ID as the guild's ID. This is the base permission set applied to all users where no other role or override - * applies, and is the starting value of the bit mask looped through to calculate channel permissions. - */ -class DPP_EXPORT role : public managed, public json_interface { -public: - /** - * @brief Role name - * Between 1 and 100 characters. - */ - std::string name; - /** - * @brief Guild ID - */ - snowflake guild_id; - /** - * @brief Role colour. - * A colour of 0 means no colour. If you want a black role, - * you must use the value 0x000001. - */ - uint32_t colour; - /** Role position */ - uint8_t position; - /** Role permissions bitmask values from dpp::permissions */ - permission permissions; - /** Role flags from dpp::role_flags */ - uint8_t flags; - /** Integration id if any (e.g. role is a bot's role created when it was invited) */ - snowflake integration_id; - /** Bot id if any (e.g. role is a bot's role created when it was invited) */ - snowflake bot_id; - /** The unicode emoji used for the role's icon, can be an empty string */ - std::string unicode_emoji; - /** The role icon hash, can be an empty string */ - utility::iconhash icon; - /** Image data for the role icon (if any) */ - std::string* image_data; - - /** - * @brief Construct a new role object - */ - role(); - - /** - * @brief Destroy the role object - */ - virtual ~role(); - - /** - * @brief Create a mentionable role. - * @param id The ID of the role. - * @return std::string The formatted mention of the role. - */ - static std::string get_mention(const snowflake& id); - - /** - * @brief Set the name of the role - * Maximum length: 100 - * Minimum length: 1 - * @param n Name to set - * @return role& reference to self - * @throw dpp::exception thrown if role length is less than 1 character - */ - role& set_name(const std::string& n); - - /** - * @brief Set the colour - * - * @param c Colour to set - * @note There is an americanised version of this method, role::set_color(). - * @return role& reference to self - */ - role& set_colour(uint32_t c); - - /** - * @brief Set the color - * - * @param c Colour to set - * @note This is an alias of role::set_colour for American spelling. - * @return role& reference to self - */ - role& set_color(uint32_t c); - - /** - * @brief Set the flags - * - * @param f Flags to set from dpp::role_flags - * @return role& reference to self - */ - role& set_flags(uint8_t f); - - /** - * @brief Set the integration id - * - * @param i Integration ID to set - * @return role& reference to self - */ - role& set_integration_id(snowflake i); - - /** - * @brief Set the bot id - * - * @param b Bot ID to set - * @return role& reference to self - */ - role& set_bot_id(snowflake b); - - /** - * @brief Set the guild id - * - * @param gid Guild ID to set - * @return role& reference to self - */ - role& set_guild_id(snowflake gid); - - /** - * @brief Fill this role from json. - * - * @param j The json data - * @return A reference to self - */ - role& fill_from_json(nlohmann::json* j); - - /** - * @brief Fill this role from json. - * - * @param guild_id the guild id to place in the json - * @param j The json data - * @return A reference to self - */ - role& fill_from_json(snowflake guild_id, nlohmann::json* j); - - /** - * @brief Build a json string from this object. - * - * @param with_id true if the ID is to be included in the json text - * @return The json of the role - */ - virtual std::string build_json(bool with_id = false) const; - - /** - * @brief Get the mention/ping for the role - * - * @return std::string mention - */ - std::string get_mention() const; - - /** - * @brief Returns the role's icon url if they have one, otherwise returns an empty string - * - * @param size The size of the icon in pixels. It can be any power of two between 16 and 4096, - * otherwise the default sized icon is returned. - * @param format The format to use for the avatar. It can be one of `i_webp`, `i_jpg` or `i_png`. - * @return std::string icon url or an empty string, if required attributes are missing or an invalid format was passed - */ - std::string get_icon_url(uint16_t size = 0, const image_type format = i_png) const; - - /** - * @brief Load an image into the object as base64 - * - * @param image_blob Image binary data - * @param type Type of image. It can be one of `i_gif`, `i_jpg` or `i_png`. - * @return emoji& Reference to self - */ - role& load_image(const std::string &image_blob, const image_type type); - - /** - * @brief Operator less than, used for checking if a role is below another. - * - * @param lhs first role to compare - * @param rhs second role to compare - * @return true if lhs is less than rhs - */ - friend inline bool operator< (const role& lhs, const role& rhs) - { - return lhs.position < rhs.position; - } - - /** - * @brief Operator greater than, used for checking if a role is above another. - * - * @param lhs first role to compare - * @param rhs second role to compare - * @return true if lhs is greater than rhs - */ - friend inline bool operator> (const role& lhs, const role& rhs) - { - return lhs.position > rhs.position; - } - - /** - * @brief Operator equals, used for checking if a role is ranked equal to another. - * - * @param other role to compare - * @return true if is equal to other - */ - inline bool operator== (const role& other) const - { - return this->position == other.position; - } - - /** - * @brief Operator not equals, used for checking if a role is ranked equal to another. - * - * @param other role to compare - * @return true if is not equal to other - */ - inline bool operator!= (const role& other) const - { - return this->position != other.position; - } - - /** - * @brief True if the role is hoisted - * @return bool Role appears separated from others in the member list - */ - bool is_hoisted() const; - /** - * @brief True if the role is mentionable - * @return bool Role is mentionable - */ - bool is_mentionable() const; - /** - * @brief True if the role is managed (belongs to a bot or application) - * @return bool True if the role is managed (introduced for a bot or other application by Discord) - */ - bool is_managed() const; - /** - * @brief True if has create instant invite permission - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the instant invite permission or is administrator. - */ - bool has_create_instant_invite() const; - /** - * @brief True if has the kick members permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the kick members permission or is administrator. - */ - bool has_kick_members() const; - /** - * @brief True if has the ban members permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the ban members permission or is administrator. - */ - bool has_ban_members() const; - /** - * @brief True if has the administrator permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the administrator permission or is administrator. - */ - bool has_administrator() const; - /** - * @brief True if has the manage channels permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the manage channels permission or is administrator. - */ - bool has_manage_channels() const; - /** - * @brief True if has the manage guild permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the manage guild permission or is administrator. - */ - bool has_manage_guild() const; - /** - * @brief True if has the add reactions permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the add reactions permission or is administrator. - */ - bool has_add_reactions() const; - /** - * @brief True if has the view audit log permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the view audit log permission or is administrator. - */ - bool has_view_audit_log() const; - /** - * @brief True if has the priority speaker permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the priority speaker permission or is administrator. - */ - bool has_priority_speaker() const; - /** - * @brief True if has the stream permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the stream permission or is administrator. - */ - bool has_stream() const; - /** - * @brief True if has the view channel permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the view channel permission or is administrator. - */ - bool has_view_channel() const; - /** - * @brief True if has the send messages permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the send messages permission or is administrator. - */ - bool has_send_messages() const; - /** - * @brief True if has the send TTS messages permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the send TTS messages permission or is administrator. - */ - bool has_send_tts_messages() const; - /** - * @brief True if has the manage messages permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the manage messages permission or is administrator. - */ - bool has_manage_messages() const; - /** - * @brief True if has the embed links permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the embed links permission or is administrator. - */ - bool has_embed_links() const; - /** - * @brief True if has the attach files permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the attach files permission or is administrator. - */ - bool has_attach_files() const; - /** - * @brief True if has the read message history permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the read message history permission or is administrator. - */ - bool has_read_message_history() const; - /** - * @brief True if has the mention \@everyone and \@here permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the mention \@everyone and \@here permission or is administrator. - */ - bool has_mention_everyone() const; - /** - * @brief True if has the use external emojis permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the use external emojis permission or is administrator. - */ - bool has_use_external_emojis() const; - /** - * @brief True if has the view guild insights permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the view guild insights permission or is administrator. - */ - bool has_view_guild_insights() const; - /** - * @brief True if has the connect voice permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the connect voice permission or is administrator. - */ - bool has_connect() const; - /** - * @brief True if has the speak permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the speak permission or is administrator. - */ - bool has_speak() const; - /** - * @brief True if has the mute members permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the mute members permission or is administrator. - */ - bool has_mute_members() const; - /** - * @brief True if has the deafen members permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the deafen members permission or is administrator. - */ - bool has_deafen_members() const; - /** - * @brief True if has the move members permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the move members permission or is administrator. - */ - bool has_move_members() const; - /** True if has use voice activity detection permission */ - bool has_use_vad() const; - /** - * @brief True if has the change nickname permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the change nickname permission or is administrator. - */ - bool has_change_nickname() const; - /** - * @brief True if has the manage nicknames permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the manage nicknames permission or is administrator. - */ - bool has_manage_nicknames() const; - /** - * @brief True if has the manage roles permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the manage roles permission or is administrator. - */ - bool has_manage_roles() const; - /** - * @brief True if has the manage webhooks permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the manage webhooks permission or is administrator. - */ - bool has_manage_webhooks() const; - /** - * @brief True if has the manage emojis and stickers permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the manage emojis and stickers permission or is administrator. - */ - bool has_manage_emojis_and_stickers() const; - /** - * @brief True if has the use application commands permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the use application commands permission or is administrator. - */ - bool has_use_application_commands() const; - /** - * @brief True if has the request to speak permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the request to speak permission or is administrator. - */ - bool has_request_to_speak() const; - /** - * @brief True if has the manage threads permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the manage threads permission or is administrator. - */ - bool has_manage_threads() const; - /** - * @brief True if has the create public threads permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the create public threads permission or is administrator. - */ - bool has_create_public_threads() const; - /** - * @brief True if has the create private threads permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the create private threads permission or is administrator. - */ - bool has_create_private_threads() const; - /** - * @brief True if has the use external stickers permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the use external stickers permission or is administrator. - */ - bool has_use_external_stickers() const; - /** - * @brief True if has the send messages in threads permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the send messages in threads permission or is administrator. - */ - bool has_send_messages_in_threads() const; - /** - * @brief True if has the start embedded activities permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the start embedded activities permission or is administrator. - */ - bool has_use_embedded_activities() const; - /** - * @brief True if has the manage events permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the manage events permission or is administrator. - */ - bool has_manage_events() const; - /** - * @brief True if has the moderate users permission. - * @note Having the administrator permission causes this method to always return true - * Channel specific overrides may apply to permissions. - * @return bool True if user has the moderate users permission or is administrator. - */ - bool has_moderate_members() const; - - /** - * @brief Get guild members who have this role - * @note This method requires user/members cache to be active - * @return members_container List of members who have this role - */ - members_container get_members() const; -}; - -/** - * @brief Application Role Connection Metadata Type - * - * @note Each metadata type offers a comparison operation that allows guilds to configure role requirements based on metadata values stored by the bot. Bots specify a `metadata value` for each user and guilds specify the required `guild's configured value` within the guild role settings. - */ -enum application_role_connection_metadata_type : uint8_t { - rc_integer_less_than_or_equal = 1, //!< The metadata value (integer) is less than or equal to the guild's configured value (integer) - rc_integer_greater_than_or_equal = 2, //!< The metadata value (integer) is greater than or equal to the guild's configured value (integer) - rc_integer_equal = 3, //!< The metadata value (integer) is equal to the guild's configured value (integer) - rc_integer_not_equal = 4, //!< The metadata value (integer) is not equal to the guild's configured value (integer) - rc_datetime_less_than_or_equal = 5, //!< The metadata value (ISO8601 string) is less than or equal to the guild's configured value (integer; days before current date) - rc_datetime_greater_than_or_equal = 6, //!< The metadata value (ISO8601 string) is greater than or equal to the guild's configured value (integer; days before current date) - rc_boolean_equal = 7, //!< The metadata value (integer) is equal to the guild's configured value (integer; 1) - rc_boolean_not_equal = 8, //!< The metadata value (integer) is not equal to the guild's configured value (integer; 1) -}; - -/** - * @brief Application Role Connection Metadata. Represents a role connection metadata for an dpp::application - */ -class DPP_EXPORT application_role_connection_metadata : public json_interface { -public: - application_role_connection_metadata_type type; //!< Type of metadata value - std::string key; //!< Dictionary key for the metadata field (must be `a-z`, `0-9`, or `_` characters; 1-50 characters) - std::string name; //!< Name of the metadata field (1-100 characters) - std::map name_localizations; //!< Translations of the name - std::string description; //!< Description of the metadata field (1-200 characters) - std::map description_localizations; //!< Translations of the description - - /** - * Constructor - */ - application_role_connection_metadata(); - - virtual ~application_role_connection_metadata() = default; - - /** Fill this record from json. - * @param j The json to fill this record from - * @return Reference to self - */ - application_role_connection_metadata& fill_from_json(nlohmann::json* j); - - /** - * @brief Convert to JSON string - * - * @param with_id include ID in output - * @return std::string JSON output - */ - virtual std::string build_json(bool with_id = false) const; -}; - -/** - * @brief The application role connection that an application has attached to a user. - */ -class DPP_EXPORT application_role_connection : public json_interface { -public: - std::string platform_name; //!< Optional: The vanity name of the platform a bot has connected (max 50 characters) - std::string platform_username; //!< Optional: The username on the platform a bot has connected (max 100 characters) - std::variant metadata; //!< Optional: Object mapping application role connection metadata keys to their stringified value (max 100 characters) for the user on the platform a bot has connected - - /** - * Constructor - */ - application_role_connection(); - - virtual ~application_role_connection() = default; - - /** Fill this record from json. - * @param j The json to fill this record from - * @return Reference to self - */ - application_role_connection& fill_from_json(nlohmann::json* j); - - /** - * @brief Convert to JSON string - * - * @param with_id include ID in output - * @return std::string JSON output - */ - virtual std::string build_json(bool with_id = false) const; -}; - -/** A group of roles */ -typedef std::unordered_map role_map; - -/** A group of application_role_connection_metadata objects */ -typedef std::vector application_role_connection_metadata_list; - -}; - diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/scheduled_event.h b/Source/ThirdParty/DPPLibrary/include/dpp/scheduled_event.h deleted file mode 100644 index 1731ece..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/scheduled_event.h +++ /dev/null @@ -1,224 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Represents the privacy of an event - */ -enum event_privacy_level : uint8_t { - /// The event is visible to only guild members. - ep_guild_only = 2 -}; - -/** - * @brief Event entity types - */ -enum event_entity_type : uint8_t { - /// A stage instance - eet_stage_instance = 1, - /// A voice channel - eet_voice = 2, - /// External to discord, or a text channel etc - eet_external = 3 -}; - -/** - * @brief Event status types - */ -enum event_status : uint8_t { - /// Scheduled - es_scheduled = 1, - /// Active now - es_active = 2, - /// Completed - es_completed = 3, - /// Cancelled - es_cancelled = 4 -}; - -/** - * @brief Entities for the event - */ -struct DPP_EXPORT event_entities { - /// location of the event - std::string location; -}; - -/** - * @brief Represents a guild member/user who has registered interest in an event - * - */ -struct DPP_EXPORT event_member { - /** - * @brief Event ID associated with - */ - snowflake guild_scheduled_event_id; - /** - * @brief User details of associated user - * - */ - dpp::user user; - /** - * @brief Member details of user on the associated guild - */ - dpp::guild_member member; -}; - -/** - * @brief A scheduled event - */ -struct DPP_EXPORT scheduled_event : public managed, public json_interface { - snowflake guild_id; //!< the guild id which the scheduled event belongs to - snowflake channel_id; //!< the channel id in which the scheduled event will be hosted, or null if scheduled entity type is EXTERNAL (may be empty) - snowflake creator_id; //!< Optional: the id of the user that created the scheduled event - std::string name; //!< the name of the scheduled event - std::string description; //!< Optional: the description of the scheduled event (1-1000 characters) - std::string image; //!< the image of the scheduled event (may be empty) - time_t scheduled_start_time; //!< the time the scheduled event will start - time_t scheduled_end_time; //!< the time the scheduled event will end, or null if the event does not have a scheduled time to end (may be empty) - event_privacy_level privacy_level; //!< the privacy level of the scheduled event - event_status status; //!< the status of the scheduled event - event_entity_type entity_type; //!< the type of hosting entity associated with a scheduled event, e.g. voice channel or stage channel - snowflake entity_id; //!< any additional id of the hosting entity associated with event, e.g. stage instance id) (may be empty) - event_entities entity_metadata; //!< the entity metadata for the scheduled event (may be empty) - user creator; //!< Optional: the creator of the scheduled event - uint32_t user_count; //!< Optional: the number of users subscribed to the scheduled event - - /** - * @brief Create a scheduled_event object - */ - scheduled_event(); - - /** - * @brief Destroy the scheduled_event object - */ - ~scheduled_event() = default; - - /** - * @brief Set the name of the event - * Minimum length: 1, Maximum length: 100 - * @param n event name - * @return scheduled_event& reference to self - * @throw dpp::length_error if length < 1 - */ - scheduled_event& set_name(const std::string& n); - - /** - * @brief Set the description of the event - * Minimum length: 1 (if set), Maximum length: 100 - * @param d event description - * @return scheduled_event& reference to self - * @throw dpp::length_error if length < 1 - */ - scheduled_event& set_description(const std::string& d); - - /** - * @brief Clear the description of the event - * @return scheduled_event& reference to self - */ - scheduled_event& clear_description(); - - /** - * @brief Set the location of the event. - * Minimum length: 1, Maximum length: 1000 - * @note Clears channel_id - * @param l event location - * @return scheduled_event& reference to self - * @throw dpp::length_error if length < 1 - */ - scheduled_event& set_location(const std::string& l); - - /** - * @brief Set the voice channel id of the event - * @note clears location - * @param c channel ID - * @return scheduled_event& reference to self - */ - scheduled_event& set_channel_id(snowflake c); - - /** - * @brief Set the creator id of the event - * @param c creator user ID - * @return scheduled_event& reference to self - */ - scheduled_event& set_creator_id(snowflake c); - - /** - * @brief Set the status of the event - * @param s status to set - * @return scheduled_event& reference to self - * @throw dpp::logic_exception if status change is not valid - */ - scheduled_event& set_status(event_status s); - - /** - * @brief Set the start time of the event - * @param t starting time - * @return scheduled_event& reference to self - * @throw dpp::length_error if time is before now - */ - scheduled_event& set_start_time(time_t t); - - /** - * @brief Set the end time of the event - * @param t ending time - * @return scheduled_event& reference to self - * @throw dpp::length_error if time is before now - */ - scheduled_event& set_end_time(time_t t); - - /** - * @brief Serialise a scheduled_event object from json - * - * @return scheduled_event& a reference to self - */ - scheduled_event& fill_from_json(const nlohmann::json* j); - - /** - * @brief Build json for this object - * @param with_id Include id field in json - * - * @return std::string Dumped json of this object - */ - virtual std::string build_json(bool with_id = false) const; -}; - -/** - * @brief A group of scheduled events - */ -typedef std::unordered_map scheduled_event_map; - -/** - * @brief A group of scheduled event members - */ -typedef std::unordered_map event_member_map; - - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/snowflake.h b/Source/ThirdParty/DPPLibrary/include/dpp/snowflake.h deleted file mode 100644 index 5424220..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/snowflake.h +++ /dev/null @@ -1,196 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include - -/** - * @brief The main namespace for D++ functions. classes and types - */ -namespace dpp { - -/** @brief A container for a 64 bit unsigned value representing many things on discord. - * This value is known in distributed computing as a snowflake value. - * - * Snowflakes are: - * - * - Performant (very fast to generate at source and to compare in code) - * - Uncoordinated (allowing high availability across clusters, data centres etc) - * - Time ordered (newer snowflakes have higher IDs) - * - Directly Sortable (due to time ordering) - * - Compact (64 bit numbers, not 128 bit, or string) - * - * An identical format of snowflake is used by Twitter, Instagram and several other platforms. - * - * @see https://en.wikipedia.org/wiki/Snowflake_ID - * @see https://github.com/twitter-archive/snowflake/tree/b3f6a3c6ca8e1b6847baa6ff42bf72201e2c2231 - */ -class DPP_EXPORT snowflake final { - friend struct std::hash; -protected: - /** - * @brief The snowflake value - */ - uint64_t value; - -public: - /** - * @brief Construct a snowflake object - * @param value A snowflake value - */ - snowflake(const uint64_t& value); - - /** - * @brief Construct a snowflake object - * @param value A snowflake value - */ - snowflake(const std::string& string_value); - - /** - * @brief Construct a snowflake object - */ - snowflake(); - - /** - * @brief Destroy the snowflake object - */ - ~snowflake() = default; - - /** - * @brief For acting like an integer - * @return The snowflake value - */ - operator uint64_t() const; - - /** - * @brief Returns true if the snowflake holds an empty value (is 0) - * - * @return true if empty (zero) - */ - inline bool empty() const - { - return value == 0; - } - - /** - * @brief Operator less than, used for maps/unordered maps - * when the snowflake is a key value. - * - * @param lhs fist snowflake to compare - * @param rhs second snowflake to compare - * @return true if lhs is less than rhs - */ - friend inline bool operator< (const snowflake& lhs, const snowflake& rhs) - { - return lhs.value < rhs.value; - } - - /** - * @brief Assign from std::string - * - * @param snowflake_val string to assign from. - */ - snowflake& operator=(const std::string &snowflake_val); - - /** - * @brief Assign from std::string - * - * @param snowflake_val value to assign from. - */ - snowflake& operator=(const uint64_t &snowflake_val); - - /** - * @brief Check if one snowflake value is equal to another - * - * @param other other snowflake to compare - * @return True if the snowflake objects match - */ - bool operator==(const snowflake& other) const; - - /** - * @brief Check if one snowflake value is equal to a uint64_t - * - * @param other other snowflake to compare - * @return True if the snowflake objects match - */ - bool operator==(const uint64_t& other) const; - - /** - * @brief For acting like an integer - * @return A reference to the snowflake value - */ - operator uint64_t &(); - - /** - * @brief For building json - * @return The snowflake value as a string - */ - operator nlohmann::json() const; - - /** - * @brief Get the creation time of this snowflake according to Discord. - * - * @return double creation time inferred from the snowflake ID. - * The minimum possible value is the first second of 2015. - */ - double get_creation_time() const; - - /** - * @brief Get the worker id that produced this snowflake value - * - * @return uint8_t worker id - */ - uint8_t get_worker_id() const; - - /** - * @brief Get the process id that produced this snowflake value - * - * @return uint8_t process id - */ - uint8_t get_process_id() const; - - /** - * @brief Get the increment, which is incremented for every snowflake - * created over the one millisecond resolution in the timestamp. - * - * @return uint64_t millisecond increment - */ - uint16_t get_increment() const; -}; - -}; - -template<> -struct std::hash -{ - /** - * @brief Hashing function for dpp::slowflake - * Used by std::unordered_map. This just calls std::hash. - * - * @param s Snowflake value to hash - * @return std::size_t hash value - */ - std::size_t operator()(dpp::snowflake const& s) const noexcept { - return std::hash{}(s.value); - } -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/socket.h b/Source/ThirdParty/DPPLibrary/include/dpp/socket.h deleted file mode 100644 index 7f1ccc3..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/socket.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -#ifndef _WIN32 -#ifndef SOCKET -#define SOCKET int -#endif -#endif - -namespace dpp -{ - /** - * @brief Represents a socket file descriptor. - * This is used to ensure parity between windows and unix-like systems. - */ - typedef SOCKET socket; -} - -#ifndef SOCKET_ERROR -/** - * @brief Represents a socket in error state - */ -#define SOCKET_ERROR -1 -#endif - -#ifndef INVALID_SOCKET -/** - * @brief Represents a socket which is not yet assigned - */ -#define INVALID_SOCKET ~0 -#endif \ No newline at end of file diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/sslclient.h b/Source/ThirdParty/DPPLibrary/include/dpp/sslclient.h deleted file mode 100644 index 801f388..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/sslclient.h +++ /dev/null @@ -1,257 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief This is an opaque class containing openssl library specific structures. - * We define it this way so that the public facing D++ library doesn't require - * the openssl headers be available to build against it. - */ -class openssl_connection; - -/** - * @brief A callback for socket status - */ -typedef std::function socket_callback_t; - -/** - * @brief A socket notification callback - */ -typedef std::function socket_notification_t; - -/** - * @brief Close a socket - * - * @param sfd Socket to close - * @return false on error, true on success - */ -bool close_socket(dpp::socket sfd); - -/** - * @brief Set a socket to blocking or non-blocking IO - * - * @param sockfd socket to act upon - * @return false on error, true on success - */ -bool set_nonblocking(dpp::socket sockfd, bool non_blocking); - -/** - * @brief Implements a simple non-blocking SSL stream client. - * - * @note although the design is non-blocking the run() method will - * execute in an infinite loop until the socket disconnects. This is intended - * to be run within a std::thread. - */ -class DPP_EXPORT ssl_client -{ -private: - /** - * @brief Clean up resources - */ - void cleanup(); -protected: - /** - * @brief Input buffer received from socket - */ - std::string buffer; - - /** - * @brief Output buffer for sending to socket - */ - std::string obuffer; - - /** - * @brief True if in nonblocking mode. The socket switches to nonblocking mode - * once ReadLoop is called. - */ - bool nonblocking; - - /** - * @brief Raw file descriptor of connection - */ - dpp::socket sfd; - - /** - * @brief Openssl opaque contexts - */ - openssl_connection* ssl; - - /** - * @brief SSL cipher in use - */ - std::string cipher; - - /** - * @brief For timers - */ - time_t last_tick; - - /** - * @brief Hostname connected to - */ - std::string hostname; - - /** - * @brief Port connected to - */ - std::string port; - - /** - * @brief Bytes out - */ - uint64_t bytes_out; - - /** - * @brief Bytes in - */ - uint64_t bytes_in; - - /** - * @brief True for a plain text connection - */ - bool plaintext; - - /** - * @brief True if we are establishing a new connection, false if otherwise. - */ - bool make_new; - - - /** - * @brief Called every second - */ - virtual void one_second_timer(); - - /** - * @brief Start SSL connection and connect to TCP endpoint - * @throw dpp::exception Failed to initialise connection - */ - virtual void connect(); -public: - /** - * @brief Get the bytes out objectGet total bytes sent - * @return uint64_t bytes sent - */ - uint64_t get_bytes_out(); - - /** - * @brief Get total bytes received - * @return uint64_t bytes received - */ - uint64_t get_bytes_in(); - - /** - * @brief Get SSL cipher name - * @return std::string ssl cipher name - */ - std::string get_cipher(); - - /** - * @brief Attaching an additional file descriptor to this function will send notifications when there is data to read. - * - * NOTE: Only hook this if you NEED it as it can increase CPU usage of the thread! - * Returning -1 means that you don't want to be notified. - */ - socket_callback_t custom_readable_fd; - - /** - * @brief Attaching an additional file descriptor to this function will send notifications when you are able to write - * to the socket. - * - * NOTE: Only hook this if you NEED it as it can increase CPU usage of the thread! You should toggle this - * to -1 when you do not have anything to write otherwise it'll keep triggering repeatedly (it is level triggered). - */ - socket_callback_t custom_writeable_fd; - - /** - * @brief This event will be called when you can read from the custom fd - */ - socket_notification_t custom_readable_ready; - - /** - * @brief This event will be called when you can write to a custom fd - */ - socket_notification_t custom_writeable_ready; - - /** - * @brief True if we are keeping the connection alive after it has finished - */ - bool keepalive; - - /** - * @brief Connect to a specified host and port. Throws std::runtime_error on fatal error. - * @param _hostname The hostname to connect to - * @param _port the Port number to connect to - * @param plaintext_downgrade Set to true to connect using plaintext only, without initialising SSL. - * @param reuse Attempt to reuse previous connections for this hostname and port, if available - * Note that no Discord endpoints will function when downgraded. This option is provided only for - * connection to non-Discord addresses such as within dpp::cluster::request(). - * @throw dpp::exception Failed to initialise connection - */ - ssl_client(const std::string &_hostname, const std::string &_port = "443", bool plaintext_downgrade = false, bool reuse = false); - - /** - * @brief Nonblocking I/O loop - * @throw std::exception Any std::exception (or derivative) thrown from read_loop() causes reconnection of the shard - */ - void read_loop(); - - /** - * @brief Destroy the ssl_client object - */ - virtual ~ssl_client(); - - /** - * @brief Handle input from the input buffer. This function will be called until - * all data in the buffer has been processed and the buffer is empty. - * @param buffer the buffer content. Will be modified removing any processed front elements - * @return bool True if the socket should remain connected - */ - virtual bool handle_buffer(std::string &buffer); - - /** - * @brief Write to the output buffer. - * @param data Data to be written to the buffer - * @note The data may not be written immediately and may be written at a later time to the socket. - */ - virtual void write(const std::string &data); - - /** - * @brief Close socket connection - */ - virtual void close(); - - /** - * @brief Log a message - * @param severity severity of log message - * @param msg Log message to send - */ - virtual void log(dpp::loglevel severity, const std::string &msg) const; -}; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/stage_instance.h b/Source/ThirdParty/DPPLibrary/include/dpp/stage_instance.h deleted file mode 100644 index a510178..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/stage_instance.h +++ /dev/null @@ -1,86 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Represents the privacy of a stage instance - */ -enum stage_privacy_level : uint8_t { - /// The Stage instance is visible publicly, such as on Stage Discovery. - sp_public = 1, - /// The Stage instance is visible to only guild members. - sp_guild_only = 2 -}; - -/** - * @brief A stage instance. - * Stage instances are like a conference facility, with moderators/speakers and listeners. - */ -struct DPP_EXPORT stage_instance : public managed, public json_interface { - /// The guild id of the associated Stage channel - snowflake guild_id; - /// The id of the associated Stage channel - snowflake channel_id; - /// The topic of the Stage instance (1-120 characters) - std::string topic; - /// The privacy level of the Stage instance - stage_privacy_level privacy_level; - /// Whether or not Stage Discovery is disabled - bool discoverable_disabled; - - /** - * @brief Create a stage_instance object - */ - stage_instance(); - - /** - * @brief Destroy the stage_instance object - */ - ~stage_instance() = default; - - /** - * @brief Serialise a stage_instance object rom json - * - * @return stage_instance& a reference to self - */ - stage_instance& fill_from_json(const nlohmann::json* j); - - /** - * @brief Build json for this object - * - * @param with_id include ID - * @return std::string Dumped json of this object - */ - virtual std::string build_json(bool with_id = false) const; -}; - -/** A group of stage instances */ -typedef std::unordered_map stage_instance_map; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/stringops.h b/Source/ThirdParty/DPPLibrary/include/dpp/stringops.h deleted file mode 100644 index 856ff30..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/stringops.h +++ /dev/null @@ -1,212 +0,0 @@ -/************************************************************************************ - * - * D++ - A Lightweight C++ Library for Discord - * - * stringops.h taken from TriviaBot - * - * Copyright 2004 Craig Edwards - * - * Core based on Sporks, the Learning Discord Bot, Craig Edwards (c) 2019. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - -#pragma once -#include -#include -#include -#include -#include -#include - -namespace dpp { -/** - * @brief Convert a string to lowercase using tolower() - * - * @tparam T type of string - * @param s String to lowercase - * @return std::basic_string lowercased string - */ -template std::basic_string lowercase(const std::basic_string& s) -{ - std::basic_string s2 = s; - std::transform(s2.begin(), s2.end(), s2.begin(), tolower); - return s2; -} - -/** - * @brief Convert a string to uppercase using toupper() - * - * @tparam T type of string - * @param s String to uppercase - * @return std::basic_string uppercased string - */ -template std::basic_string uppercase(const std::basic_string& s) -{ - std::basic_string s2 = s; - std::transform(s2.begin(), s2.end(), s2.begin(), toupper); - return s2; -} - -/** - * @brief trim from end of string (right) - * - * @param s String to trim - * @return std::string trimmed string - */ -inline std::string rtrim(std::string s) -{ - s.erase(s.find_last_not_of(" \t\n\r\f\v") + 1); - return s; -} - -/** - * @brief trim from beginning of string (left) - * - * @param s string to trim - * @return std::string trimmed string - */ -inline std::string ltrim(std::string s) -{ - s.erase(0, s.find_first_not_of(" \t\n\r\f\v")); - return s; -} - -/** - * @brief Trim from both ends of string (right then left) - * - * @param s string to trim - * @return std::string trimmed string - */ -inline std::string trim(std::string s) -{ - return ltrim(rtrim(s)); -} - -/** - * @brief Add commas to a string (or dots) based on current locale server-side - * - * @tparam T type of numeric value - * @param value Value - * @return std::string number with commas added - */ -template std::string comma(T value) -{ - std::stringstream ss; - ss.imbue(std::locale("")); - ss << std::fixed << value; - return ss.str(); -} - -/** - * @brief Convert any value from a string to another type using stringstream. - * The optional second parameter indicates the format of the input string, - * e.g. std::dec for decimal, std::hex for hex, std::oct for octal. - * - * @tparam T Type to convert to - * @param s String to convert from - * @param f Numeric base, e.g. `std::dec` or `std::hex` - * @return T Returned numeric value - */ -template T from_string(const std::string &s, std::ios_base & (*f)(std::ios_base&)) -{ - T t; - std::istringstream iss(s); - iss >> f, iss >> t; - return t; -} - -/** - * @brief Convert any value from a string to another type using stringstream. - * - * @tparam T Type to convert to - * @param s String to convert from - * @return T Returned numeric value - * - * @note Base 10 for numeric conversions. - */ -template T from_string(const std::string &s) -{ - T t; - std::istringstream iss(s); - iss >> t; - return t; -} - -/** - * @brief Specialised conversion of uint64_t from string - * - * @tparam int64_t - * @param s string to convert - * @return uint64_t return value - */ -template uint64_t from_string(const std::string &s) -{ - return std::stoull(s, 0, 10); -} - -/** - * @brief Specialised conversion of uint32_t from string - * - * @tparam uint32_t - * @param s string to convert - * @return uint32_t return value - */ -template uint32_t from_string(const std::string &s) -{ - return std::stoul(s, 0, 10); -} - -/** - * @brief Specialised conversion of int from string - * - * @tparam int - * @param s string to convert - * @return int return value - */ -template int from_string(const std::string &s) -{ - return std::stoi(s, 0, 10); -} - -/** - * @brief Convert a numeric value to hex - * - * @tparam T numeric type - * @param i numeric value - * @return std::string value in hex, the length will be 2* the raw size of the type - */ -template std::string to_hex(T i) -{ - std::stringstream stream; - stream << std::setfill('0') << std::setw(sizeof(T)*2) << std::hex << i; - return stream.str(); -} - -/** - * @brief Format a numeric type as a string with leading zeroes - * - * @tparam T numeric type - * @param i numeric value - * @param width width of type including the leading zeroes - * @return std::string resultant string with leading zeroes - */ -template std::string leading_zeroes(T i, size_t width) -{ - std::stringstream stream; - stream << std::setfill('0') << std::setw(width) << std::dec << i; - return stream.str(); -} - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/sync.h b/Source/ThirdParty/DPPLibrary/include/dpp/sync.h deleted file mode 100644 index a837103..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/sync.h +++ /dev/null @@ -1,80 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2022 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include - -namespace dpp { - - /** - * @brief Call a D++ REST function synchronously. - * - * Synchronously calling a REST function means *IT WILL BLOCK* - This is a Bad Thing™ and strongly discouraged. - * There are very few circumstances you actually need this. If you do need to use this, you'll know it. - * - * Example: - * - * ```cpp - * dpp::message m = dpp::sync(&bot, &dpp::cluster::message_create, dpp::message(channel_id, "moo.")); - * ``` - * - * @warning As previously mentioned, this template will block. It is ill-advised to call this outside of - * a separate thread and this should never be directly used in any event such as dpp::cluster::on_interaction_create! - * @tparam T type of expected return value, should match up with the method called - * @tparam F Type of class method in dpp::cluster to call. - * @tparam Ts Function parameters in method call - * @param c A pointer to dpp::cluster object - * @param func pointer to class method in dpp::cluster to call. This can call any - * dpp::cluster member function who's last parameter is a dpp::command_completion_event_t callback type. - * @param args Zero or more arguments for the method call - * @return An instantiated object of type T - * @throw dpp::rest_exception On failure of the method call, an exception is thrown - */ - template T sync(class cluster* c, F func, Ts&&... args) { - std::promise _p; - std::future _f = _p.get_future(); - /* (obj ->* func) is the obscure syntax for calling a method pointer on an object instance */ - (c ->* func)(std::forward(args)..., [&_p](const auto& cc) { - try { - if (cc.is_error()) { - throw dpp::rest_exception(cc.get_error().message); - } else { - try { - _p.set_value(std::get(cc.value)); - } catch (const std::exception& e) { - throw dpp::rest_exception(e.what()); - } - } - } catch (const dpp::rest_exception&) { - _p.set_exception(std::current_exception()); - } - }); - - /* Blocking calling thread until rest request is completed. - * Exceptions encountered on the other thread are re-thrown. - */ - return _f.get(); - } - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/sysdep.h b/Source/ThirdParty/DPPLibrary/include/dpp/sysdep.h deleted file mode 100644 index 8971c30..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/sysdep.h +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Discord erlpack - tidied up for D++, Craig Edwards 2021. - * - * MessagePack system dependencies modified for erlpack. - * - * Copyright (C) 2008-2010 FURUHASHI Sadayuki - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#pragma once - -#include -#include -#include -#include -#if defined(__linux__) -#include -#endif - -#ifdef _WIN32 - -#ifdef __cplusplus -/* numeric_limits::min,max */ -#ifdef max -#undef max -#endif -#ifdef min -#undef min -#endif -#endif - -#else -#include /* __BYTE_ORDER */ -#endif - -#if !defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__) -#if __BYTE_ORDER == __LITTLE_ENDIAN -#define __LITTLE_ENDIAN__ -#elif __BYTE_ORDER == __BIG_ENDIAN -#define __BIG_ENDIAN__ -#elif _WIN32 -#define __LITTLE_ENDIAN__ -#endif -#endif - - -#ifdef __LITTLE_ENDIAN__ - -#ifdef _WIN32 -# if defined(ntohs) -# define etf_byte_order_16(x) ntohs(x) -# elif defined(_byteswap_ushort) || (defined(_MSC_VER) && _MSC_VER >= 1400) -# define etf_byte_order_16(x) ((uint16_t)_byteswap_ushort((unsigned short)x)) -# else -# define etf_byte_order_16(x) ( \ - ((((uint16_t)x) << 8) ) | \ - ((((uint16_t)x) >> 8) ) ) -# endif -#else -# define etf_byte_order_16(x) ntohs(x) -#endif - -#ifdef _WIN32 -# if defined(ntohl) -# define etf_byte_order_32(x) ntohl(x) -# elif defined(_byteswap_ulong) || (defined(_MSC_VER) && _MSC_VER >= 1400) -# define etf_byte_order_32(x) ((uint32_t)_byteswap_ulong((unsigned long)x)) -# else -# define etf_byte_order_32(x) \ - ( ((((uint32_t)x) << 24) ) | \ - ((((uint32_t)x) << 8) & 0x00ff0000U ) | \ - ((((uint32_t)x) >> 8) & 0x0000ff00U ) | \ - ((((uint32_t)x) >> 24) ) ) -# endif -#else -# define etf_byte_order_32(x) ntohl(x) -#endif - -#if defined(_byteswap_uint64) || (defined(_MSC_VER) && _MSC_VER >= 1400) -# define etf_byte_order_64(x) (_byteswap_uint64(x)) -#elif defined(bswap_64) -# define etf_byte_order_64(x) bswap_64(x) -#elif defined(__DARWIN_OSSwapInt64) -# define etf_byte_order_64(x) __DARWIN_OSSwapInt64(x) -#elif defined(__linux__) -# define etf_byte_order_64(x) be64toh(x) -#else -# define etf_byte_order_64(x) \ - ( ((((uint64_t)x) << 56) ) | \ - ((((uint64_t)x) << 40) & 0x00ff000000000000ULL ) | \ - ((((uint64_t)x) << 24) & 0x0000ff0000000000ULL ) | \ - ((((uint64_t)x) << 8) & 0x000000ff00000000ULL ) | \ - ((((uint64_t)x) >> 8) & 0x00000000ff000000ULL ) | \ - ((((uint64_t)x) >> 24) & 0x0000000000ff0000ULL ) | \ - ((((uint64_t)x) >> 40) & 0x000000000000ff00ULL ) | \ - ((((uint64_t)x) >> 56) ) ) -#endif - -#else -#define etf_byte_order_16(x) (x) -#define etf_byte_order_32(x) (x) -#define etf_byte_order_64(x) (x) -#endif - -#define store_16_bits(to, num) \ - do { uint16_t val = etf_byte_order_16(num); memcpy(to, &val, 2); } while(0) -#define store_32_bits(to, num) \ - do { uint32_t val = etf_byte_order_32(num); memcpy(to, &val, 4); } while(0) -#define store_64_bits(to, num) \ - do { uint64_t val = etf_byte_order_64(num); memcpy(to, &val, 8); } while(0) diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/timed_listener.h b/Source/ThirdParty/DPPLibrary/include/dpp/timed_listener.h deleted file mode 100644 index 467f004..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/timed_listener.h +++ /dev/null @@ -1,95 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once - -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief A timed_listener is a way to temporarily attach to an event for a specific timeframe, then detach when complete. - * A lambda may also be optionally called when the timeout is reached. Destructing the timed_listener detaches any attached - * event listeners, and cancels any created timers, but does not call any timeout lambda. - * - * @tparam attached_event Event within cluster to attach to within the cluster::dispatch member (dpp::dispatcher object) - * @tparam listening_function Definition of lambda function that matches up with the attached_event. - */ -template class timed_listener -{ -private: - /// Owning cluster - cluster* owner; - - /// Duration of listen - time_t duration; - - /// Reference to attached event in cluster - //event_router_t on_thread_member_update; - attached_event& ev; - - /// Timer handle - timer th; - - /// Event handle - event_handle listener_handle; - -public: - /** - * @brief Construct a new timed listener object - * - * @param cl Owning cluster - * @param _duration Duration of timed event in seconds - * @param event Event to hook, e.g. cluster.on_message_create - * @param on_end An optional void() lambda to trigger when the timed_listener times out. - * Calling the destructor before the timeout is reached does not call this lambda. - * @param listener Lambda to receive events. Type must match up properly with that passed into the 'event' parameter. - */ - timed_listener(cluster* cl, uint64_t _duration, attached_event& event, listening_function listener, timer_callback_t on_end = {}) - : owner(cl), duration(_duration), ev(event) - { - /* Attach event */ - listener_handle = ev(listener); - /* Create timer */ - th = cl->start_timer([this](dpp::timer timer_handle) { - /* Timer has finished, detach it from event. - * Only allowed to tick once. - */ - ev.detach(listener_handle); - owner->stop_timer(th); - }, duration, on_end); - } - - /** - * @brief Destroy the timed listener object - */ - ~timed_listener() { - /* Stop timer and detach event, but do not call on_end */ - ev.detach(listener_handle); - owner->stop_timer(th); - } -}; - -}; \ No newline at end of file diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/timer.h b/Source/ThirdParty/DPPLibrary/include/dpp/timer.h deleted file mode 100644 index 92c5a05..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/timer.h +++ /dev/null @@ -1,124 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ - -#pragma once -#include -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Represents a timer handle. - * Returned from cluster::start_timer and used by cluster::stop_timer. - * This is obtained from a simple incrementing value, internally. - */ -typedef size_t timer; - -/** - * @brief The type for a timer callback - */ -typedef std::function timer_callback_t; - -/** - * @brief Used internally to store state of active timers - */ -struct DPP_EXPORT timer_t { - /** - * @brief Timer handle - */ - timer handle; - /** - * @brief Next timer tick as unix epoch - */ - time_t next_tick; - /** - * @brief Frequency between ticks - */ - uint64_t frequency; - /** - * @brief Lambda to call on tick - */ - timer_callback_t on_tick; - /** - * @brief Lambda to call on stop (optional) - */ - timer_callback_t on_stop; -}; - -/** - * @brief A map of timers, ordered by earliest first so that map::begin() is always the - * soonest to be due. - */ -typedef std::multimap timer_next_t; - -/** - * @brief A map of timers stored by handle - */ -typedef std::unordered_map timer_reg_t; - -/** - * @brief Trigger a timed event once. - * The provided callback is called only once. - */ -class DPP_EXPORT oneshot_timer -{ -private: - /// Owning cluster - class cluster* owner; - /// Timer handle - timer th; -public: - /** - * @brief Construct a new oneshot timer object - * - * @param cl cluster owner - * @param duration duration before firing - * @param callback callback to call on firing - */ - oneshot_timer(class cluster* cl, uint64_t duration, timer_callback_t callback); - - /** - * @brief Get the handle for the created one-shot timer - * - * @return timer handle for use with stop_timer - */ - timer get_handle(); - - /** - * @brief Cancel the one shot timer immediately. - * Callback function is not called. - */ - void cancel(); - - /** - * @brief Destroy the oneshot timer object - */ - ~oneshot_timer(); -}; - - - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/user.h b/Source/ThirdParty/DPPLibrary/include/dpp/user.h deleted file mode 100644 index 589cf2e..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/user.h +++ /dev/null @@ -1,406 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Various bitmask flags used to represent information about a dpp::user - */ -enum user_flags : uint32_t { - /// User is a bot - u_bot = 0b00000000000000000000000000000001, - /// User is a system user (Clyde!) - u_system = 0b00000000000000000000000000000010, - /// User has multi-factor authentication enabled - u_mfa_enabled = 0b00000000000000000000000000000100, - /// User is verified (verified email address) - u_verified = 0b00000000000000000000000000001000, - /// User has full nitro - u_nitro_full = 0b00000000000000000000000000010000, - /// User has nitro classic - u_nitro_classic = 0b00000000000000000000000000100000, - /// User is discord staff - u_discord_employee = 0b00000000000000000000000001000000, - /// User owns a partnered server - u_partnered_owner = 0b00000000000000000000000010000000, - /// User is a member of hypesquad events - u_hypesquad_events = 0b00000000000000000000000100000000, - /// User has BugHunter level 1 - u_bughunter_1 = 0b00000000000000000000001000000000, - /// User is a member of House Bravery - u_house_bravery = 0b00000000000000000000010000000000, - /// User is a member of House Brilliance - u_house_brilliance = 0b00000000000000000000100000000000, - /// User is a member of House Balance - u_house_balance = 0b00000000000000000001000000000000, - /// User is an early supporter - u_early_supporter = 0b00000000000000000010000000000000, - /// User is a team user - u_team_user = 0b00000000000000000100000000000000, - /// User is has Bug Hunter level 2 - u_bughunter_2 = 0b00000000000000001000000000000000, - /// User is a verified bot - u_verified_bot = 0b00000000000000010000000000000000, - /// User has the Early Verified Bot Developer badge - u_verified_bot_dev = 0b00000000000000100000000000000000, - /// User's icon is animated - u_animated_icon = 0b00000000000001000000000000000000, - /// User is a certified moderator - u_certified_moderator = 0b00000000000010000000000000000000, - /// User is a bot using HTTP interactions (shows online even when not connected to a websocket) - u_bot_http_interactions = 0b00000000000100000000000000000000, - /// User has nitro basic - u_nitro_basic = 0b00000000001000000000000000000000, - /// User has the active developer badge - u_active_developer = 0b00000000010000000000000000000000, - /// User's banner is animated - u_animated_banner = 0b00000000100000000000000000000000, -}; - -/** - * @brief Represents a user on discord. May or may not be a member of a dpp::guild. - */ -class DPP_EXPORT user : public managed, public json_interface { -public: - /** Discord username */ - std::string username; - /** Avatar hash */ - utility::iconhash avatar; - /** Flags built from a bitmask of values in dpp::user_flags */ - uint32_t flags; - /** Discriminator (aka tag), 4 digits usually displayed with leading zeroes. - * - * @note To print the discriminator with leading zeroes, use format_username() - */ - uint16_t discriminator; - /** Reference count of how many guilds this user is in */ - uint8_t refcount; - - /** - * @brief Construct a new user object - */ - user(); - - /** - * @brief Destroy the user object - */ - virtual ~user(); - - /** - * @brief Create a mentionable user. - * @param id The ID of the user. - * @return std::string The formatted mention of the user. - */ - static std::string get_mention(const snowflake& id); - - /** Fill this record from json. - * @param j The json to fill this record from - * @return Reference to self - */ - user& fill_from_json(nlohmann::json* j); - - /** - * @brief Convert to JSON string - * - * @param with_id include ID in output - * @return std::string JSON output - */ - virtual std::string build_json(bool with_id = true) const; - - /** - * @brief Get the avatar url of the user - * - * @note If the user doesn't have an avatar, the default user avatar url is returned which is always in `png` format! - * - * @param size The size of the avatar in pixels. It can be any power of two between 16 and 4096, - * otherwise the default sized avatar is returned. - * @param format The format to use for the avatar. It can be one of `i_webp`, `i_jpg`, `i_png` or `i_gif`. - * Passing `i_gif` might result in an invalid url for non-animated images. Consider using the `prefer_animated` parameter instead. - * @param prefer_animated Whether you prefer gif format. - * If true, it'll return gif format whenever the image is available as animated. - * @return std::string avatar url or an empty string, if required attributes are missing or an invalid format was passed - */ - std::string get_avatar_url(uint16_t size = 0, const image_type format = i_png, bool prefer_animated = true) const; - - /** - * @brief Get the default avatar url of the user. This is calculated by the discriminator. - * - * @return std::string avatar url or an empty string, if the discriminator is empty - */ - std::string get_default_avatar_url() const; - - /** - * @brief Return a ping/mention for the user - * - * @return std::string mention - */ - std::string get_mention() const; - - /** - * @brief Return true if user has the active Developer badge - * - * @return true if has active developer - */ - bool is_active_developer() const; - /** - * @brief User is a bot - * - * @return True if the user is a bot - */ - bool is_bot() const; - /** - * @brief User is a system user (Clyde) - * - * @return true if user is a system user - */ - bool is_system() const; - /** - * @brief User has multi-factor authentication enabled - * - * @return true if multi-factor is enabled - */ - bool is_mfa_enabled() const; - /** - * @brief Return true if user has verified account - * - * @return true if verified - */ - bool is_verified() const; - /** - * @brief Return true if user has full nitro. - * This is mutually exclusive with full nitro. - * - * @return true if user has full nitro - */ - bool has_nitro_full() const; - /** - * @brief Return true if user has nitro classic. - * This is mutually exclusive with nitro classic. - * - * @return true if user has nitro classic - */ - bool has_nitro_classic() const; - /** - * @brief Return true if user has nitro basic. - * This is mutually exclusive with nitro basic. - * - * @return true if user has nitro basic - */ - bool has_nitro_basic() const; - /** - * @brief Return true if user is a discord employee - * - * @return true if user is discord staff - */ - bool is_discord_employee() const; - /** - * @brief Return true if user owns a partnered server - * - * @return true if user has partnered server - */ - bool is_partnered_owner() const; - /** - * @brief Return true if user has hypesquad events - * - * @return true if has hypesquad events - */ - bool has_hypesquad_events() const; - /** - * @brief Return true if user has the bughunter level 1 badge - * - * @return true if has bughunter level 1 - */ - bool is_bughunter_1() const; - /** - * @brief Return true if user is in house bravery - * - * @return true if in house bravery - */ - bool is_house_bravery() const; - /** - * @brief Return true if user is in house brilliance - * - * @return true if in house brilliance - */ - bool is_house_brilliance() const; - /** - * @brief Return true if user is in house balance - * - * @return true if in house brilliance - */ - bool is_house_balance() const; - /** - * @brief Return true if user is an early supporter - * - * @return true if early supporter - */ - bool is_early_supporter() const; - /** - * @brief Return true if user is a team user - * - * @return true if a team user - */ - bool is_team_user() const; - /** - * @brief Return true if user has the bughunter level 2 badge - * - * @return true if has bughunter level 2 - */ - bool is_bughunter_2() const; - /** - * @brief Return true if user has the verified bot badge - * - * @return true if verified bot - */ - bool is_verified_bot() const; - /** - * @brief Return true if user is an early verified bot developer - * - * @return true if verified bot developer - */ - bool is_verified_bot_dev() const; - /** - * @brief Return true if user is a certified moderator - * - * @return true if certified moderator - */ - bool is_certified_moderator() const; - /** - * @brief Return true if user is a bot which exclusively uses HTTP interactions. - * Bots using HTTP interactions are always considered online even when not connected to a websocket. - * - * @return true if is a http interactions only bot - */ - bool is_bot_http_interactions() const; - /** - * @brief Return true if user has an animated icon - * - * @return true if icon is animated (gif) - */ - bool has_animated_icon() const; - - /** - * @brief Format a username into user#discriminator - * - * For example Brain#0001 - * - * @return Formatted username and discriminator - */ - std::string format_username() const; -}; - -/** - * @brief A user with additional fields only available via the oauth2 identify scope. - * These are not included in dpp::user as additional scopes are needed to fetch them - * which bots do not normally have. - */ -class DPP_EXPORT user_identified : public user, public json_interface { -public: - std::string locale; //!< Optional: the user's chosen language option identify - std::string email; //!< Optional: the user's email email (may be empty) - utility::iconhash banner; //!< Optional: the user's banner hash identify (may be empty) - uint32_t accent_color; //!< Optional: the user's banner color encoded as an integer representation of hexadecimal color code identify (may be empty) - bool verified; //!< Optional: whether the email on this account has been verified email - - /** Fill this record from json. - * @param j The json to fill this record from - * @return Reference to self - */ - user_identified& fill_from_json(nlohmann::json* j); - - /** - * @brief Convert to JSON string - * - * @param with_id include ID in output - * @return std::string JSON output - */ - virtual std::string build_json(bool with_id = true) const; - - /** - * @brief Construct a new user identified object - */ - user_identified(); - - /** - * @brief Construct a new user identified object from a user object - * - * @param u user object - */ - user_identified(const user& u); - - /** - * @brief Destroy the user identified object - */ - virtual ~user_identified(); - - /** - * @brief Return true if user has an animated banner - * - * @return true if banner is animated (gif) - */ - bool has_animated_banner() const; - - /** - * @brief Get the user identified's banner url if they have one, otherwise returns an empty string - * - * @param size The size of the banner in pixels. It can be any power of two between 16 and 4096, - * otherwise the default sized banner is returned. - * @param format The format to use for the avatar. It can be one of `i_webp`, `i_jpg`, `i_png` or `i_gif`. - * Passing `i_gif` might result in an invalid url for non-animated images. Consider using the `prefer_animated` parameter instead. - * @param prefer_animated Whether you prefer gif format. - * If true, it'll return gif format whenever the image is available as animated. - * @return std::string banner url or an empty string, if required attributes are missing or an invalid format was passed - */ - std::string get_banner_url(uint16_t size = 0, const image_type format = i_png, bool prefer_animated = true) const; - -}; - -/** - * @brief helper function to deserialize a user from json - * - * @see https://github.com/nlohmann/json#arbitrary-types-conversions - * - * @param j output json object - * @param u user to be deserialized - */ -void from_json(const nlohmann::json& j, user& u); - -/** - * @brief helper function to deserialize a user_identified from json - * - * @see https://github.com/nlohmann/json#arbitrary-types-conversions - * - * @param j output json object - * @param u user to be deserialized - */ -void from_json(const nlohmann::json& j, user_identified& u); - -/** A group of users */ -typedef std::unordered_map user_map; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/utility.h b/Source/ThirdParty/DPPLibrary/include/dpp/utility.h deleted file mode 100644 index 9a0fb3e..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/utility.h +++ /dev/null @@ -1,494 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef MAX_CND_IMAGE_SIZE - #define MAX_CDN_IMAGE_SIZE 4096 -#endif -#ifndef MIN_CDN_IMAGE_SIZE - #define MIN_CDN_IMAGE_SIZE 16 -#endif - -/** - * @brief The main namespace for D++ functions, classes and types - */ -namespace dpp { - /** - * @brief Utility helper functions, generally for logging, running programs, time/date manipulation, etc - */ - namespace utility { - - /** - * @brief Timestamp formats for dpp::utility::timestamp() - * - * @note These values are the actual character values specified by the Discord API - * and should not be changed unless the Discord API changes the specification! - * They have been sorted into numerical order of their ASCII value to keep C++ happy. - */ - enum time_format : uint8_t { - /// "20 April 2021" - Long Date - tf_long_date = 'D', - /// "Tuesday, 20 April 2021 16:20" - Long Date/Time - tf_long_datetime = 'F', - /// "2 months ago" - Relative Time - tf_relative_time = 'R', - /// "16:20:30" - Long Time - tf_long_time = 'T', - /// "20/04/2021" - Short Date - tf_short_date = 'd', - /// "20 April 2021 16:20" - Short Date/Time - tf_short_datetime = 'f', - /// "16:20" - Short Time - tf_short_time = 't', - }; - - /** - * @brief The base URL for CDN content such as profile pictures and guild icons. - */ - const std::string cdn_host = "https://cdn.discordapp.com"; - - /** - * @brief Callback for the results of a command executed via dpp::utility::exec - */ - typedef std::function cmd_result_t; - - /** - * @brief Run a commandline program asynchronously. The command line program - * is spawned in a separate std::thread, and when complete, its output from - * stdout is passed to the callback function in its string parameter. For example - * ``` - * dpp::utility::exec("/bin/ls", {"-al"}, [](const std::string& output) { - * std::cout << "Output of 'ls -al': " << output << "\n"; - * }); - * ``` - * - * @param cmd The command to run. - * @param parameters Command line parameters. Each will be escaped using `std::quoted`. - * @param callback The callback to call on completion. - */ - void DPP_EXPORT exec(const std::string& cmd, std::vector parameters = {}, cmd_result_t callback = {}); - - /** - * @brief Return a mentionable timestamp (used in a message). These timestamps will display the given timestamp in the user's timezone and locale. - * - * @param ts Time stamp to convert - * @param tf Format of timestamp using dpp::utility::time_format - * @return std::string The formatted timestamp - */ - std::string DPP_EXPORT timestamp(time_t ts, time_format tf = tf_short_datetime); - - /** - * @brief Returns current date and time - * - * @return std::string Current date and time in "Y-m-d H:M:S" format - */ - std::string DPP_EXPORT current_date_time(); - /** - * @brief Convert a dpp::loglevel enum value to a string - * - * @param in log level to convert - * @return std::string string form of log level - */ - std::string DPP_EXPORT loglevel(dpp::loglevel in); - - /** - * @brief Store a 128 bit icon hash (profile picture, server icon etc) - * as a 128 bit binary value made of two uint64_t. - * Has a constructor to build one from a string, and a method to fetch - * the value back in string form. - */ - struct DPP_EXPORT iconhash { - - uint64_t first; //!< High 64 bits - uint64_t second; //!< Low 64 bits - - /** - * @brief Construct a new iconhash object - * @param _first Leftmost portion of the hash value - * @param _second Rightmost portion of the hash value - */ - iconhash(uint64_t _first = 0, uint64_t _second = 0); - - /** - * @brief Construct a new iconhash object - */ - iconhash(const iconhash&); - - /** - * @brief Destroy the iconhash object - */ - ~iconhash(); - - /** - * @brief Construct a new iconhash object - * - * @param hash String hash to construct from. - * Must contain a 32 character hex string. - * - * @throws std::length_error if the provided - * string is not exactly 32 characters long. - */ - iconhash(const std::string &hash); - - /** - * @brief Assign from std::string - * - * @param assignment string to assign from. - * - * @throws std::length_error if the provided - * string is not exactly 32 characters long. - */ - iconhash& operator=(const std::string &assignment); - - /** - * @brief Check if one iconhash is equal to another - * - * @param other other iconhash to compare - * @return True if the iconhash objects match - */ - bool operator==(const iconhash& other) const; - - /** - * @brief Change value of iconhash object - * - * @param hash String hash to change to. - * Must contain a 32 character hex string. - * - * @throws std::length_error if the provided - * string is not exactly 32 characters long. - */ - void set(const std::string &hash); - - /** - * @brief Convert iconhash back to 32 character - * string value. - * - * @return std::string Hash value - */ - std::string to_string() const; - }; - - /** - * @brief Return the current time with fractions of seconds. - * This is a unix epoch time with the fractional seconds part - * after the decimal place. - * - * @return double time with fractional seconds - */ - double DPP_EXPORT time_f(); - - /** - * @brief Returns true if D++ was built with voice support - * - * @return bool True if voice support is compiled in (libsodium/libopus) - */ - bool DPP_EXPORT has_voice(); - - /** - * @brief Convert a byte count to display value - * - * @param c number of bytes - * @return std::string display value suffixed with M, G, T where necessary - */ - std::string DPP_EXPORT bytes(uint64_t c); - - /** - * @brief A class used to represent an uptime in hours, minutes, - * seconds and days, with helper functions to convert from time_t - * and display as a string. - */ - struct DPP_EXPORT uptime { - uint16_t days; //!< Number of days - uint8_t hours; //!< Number of hours - uint8_t mins; //!< Number of minutes - uint8_t secs; //!< Number of seconds - - /** - * @brief Construct a new uptime object - */ - uptime(); - - /** - * @brief Construct a new uptime object - * - * @param diff A time_t to initialise the object from - */ - uptime(time_t diff); - - /** - * @brief Construct a new uptime object - * - * @param diff A time_t to initialise the object from - */ - uptime(double diff); - - /** - * @brief Get uptime as string - * - * @return std::string Uptime as string - */ - std::string to_string() const; - - /** - * @brief Get uptime as seconds - * - * @return uint64_t Uptime as seconds - */ - uint64_t to_secs() const; - - /** - * @brief Get uptime as milliseconds - * - * @return uint64_t Uptime as milliseconds - */ - uint64_t to_msecs() const; - }; - - /** - * @brief Convert doubles to RGB for sending in embeds - * - * @param red red value, between 0 and 1 inclusive - * @param green green value, between 0 and 1 inclusive - * @param blue blue value, between 0 and 1 inclusive - * @return uint32_t returned integer colour value - */ - uint32_t DPP_EXPORT rgb(double red, double green, double blue); - - /** - * @brief Convert ints to RGB for sending in embeds - * - * @param red red value, between 0 and 255 inclusive - * @param green green value, between 0 and 255 inclusive - * @param blue blue value, between 0 and 255 inclusive - * @return uint32_t returned integer colour value - */ - uint32_t DPP_EXPORT rgb(int red, int green, int blue); - - /** - * @brief Convert doubles to CMYK for sending in embeds - * - * @param c cyan value, between 0 and 1 inclusive - * @param m magenta value, between 0 and 1 inclusive - * @param y yellow value, between 0 and 1 inclusive - * @param k key (black) value, between 0 and 1 inclusive - * @return uint32_t returned integer colour value - */ - uint32_t DPP_EXPORT cmyk(double c, double m, double y, double k); - - /** - * @brief Convert ints to CMYK for sending in embeds - * - * @param c cyan value, between 0 and 255 inclusive - * @param m magenta value, between 0 and 255 inclusive - * @param y yellow value, between 0 and 255 inclusive - * @param k key (black) value, between 0 and 255 inclusive - * @return uint32_t returned integer colour value - */ - uint32_t DPP_EXPORT cmyk(int c, int m, int y, int k); - - /** - * @brief Output hex values of a section of memory for debugging - * - * @param data The start of the data to display - * @param length The length of data to display - */ - std::string DPP_EXPORT debug_dump(uint8_t* data, size_t length); - - /** - * @brief Returns the length of a UTF-8 string in codepoints - * - * @param str string to count length of - * @return size_t length of string (0 for invalid utf8) - */ - size_t DPP_EXPORT utf8len(const std::string &str); - - /** - * @brief Return substring of a UTF-8 encoded string in codepoints - * - * @param str string to return substring from - * @param start start codepoint offset - * @param length length in codepoints - * @return std::string Substring in UTF-8 or empty string if invalid UTF-8 passed in - */ - std::string DPP_EXPORT utf8substr(const std::string& str, std::string::size_type start, std::string::size_type length); - - /** - * @brief Read a whole file into a std::string. - * Be sure you have enough memory to read the file, if you are reading a large file. - * @note Be aware this function can block! If you are regularly reading large files, consider caching them. - * @param filename The path to the file to read - * @return std::string The file contents - * @throw dpp::exception on failure to read the entire file - */ - std::string DPP_EXPORT read_file(const std::string& filename); - - /** - * @brief Validate a string value - * In the event the length of the string is less than _min, then an exception of type dpp:length_exception - * will be thrown. If the string is longer than _max UTF8 codepoints it will be truncated to fit. - * - * @param value The value to validate - * @param _min Minimum length - * @param _max Maximum length - * @param exception_message Exception message to throw if value length < _min - * @return std::string Validated string, truncated if necessary. - * @throw dpp::length_exception if value UTF8 length < _min - */ - std::string DPP_EXPORT validate(const std::string& value, size_t _min, size_t _max, const std::string& exception_message); - - /** - * @brief Get the url query parameter for the cdn endpoint. Internally used to build url getters. - * - * @param size size to generate url parameter for. Must be any power of two between 16 and 4096 (inclusive) or it'll return an empty string. - * @return std::string url query parameter e.g. `?size=128`, or an empty string - */ - std::string DPP_EXPORT avatar_size(uint32_t size); - - /** - * @brief Split (tokenize) a string into a vector, using the given separators - * - * @param in Input string - * @param sep Separator characters - * @return std::vector Tokenized strings - */ - std::vector DPP_EXPORT tokenize(std::string const &in, const char* sep = "\r\n"); - - /** - * @brief Create a bot invite - * - * @param bot_id Bot ID - * @param permissions Permission bitmask of the bot to invite - * @param scopes Scopes to use - * @return Invite URL - */ - std::string DPP_EXPORT bot_invite_url(const snowflake bot_id, const uint64_t permissions = 0, const std::vector& scopes = {"bot", "applications.commands"}); - - /** - * @brief Escapes Discord's markdown sequences in a string - * - * @param text Text to escape - * @param escape_code_blocks If set to false, then code blocks are not escaped. - * This means that you can still use a code block, and the text within will be left as-is. - * If set to true, code blocks will also be escaped so that ` symbol may be used as a normal - * character. - * @return std::string The text with the markdown special characters escaped with a backslash - */ - std::string DPP_EXPORT markdown_escape(const std::string& text, bool escape_code_blocks = false); - - /** - * @brief Encodes a url parameter similar to [php urlencode()](https://www.php.net/manual/en/function.urlencode.php) - * - * @param value String to encode - * @return std::string URL encoded string - */ - std::string DPP_EXPORT url_encode(const std::string &value); - - /** - * @brief Create a mentionable slashcommand (used in a message). - * @param command_id The ID of the slashcommand - * @param command_name The command name - * @param subcommand Optional: The subcommand name (for mentioning a subcommand) - * @return std::string The formatted mention - */ - std::string DPP_EXPORT slashcommand_mention(snowflake command_id, const std::string &command_name, const std::string &subcommand = ""); - - /** - * @brief Create a mentionable slashcommand (used in a message). - * @param command_id The ID of the slashcommand - * @param command_name The command name - * @param subcommand_group The subcommand group name - * @param subcommand The subcommand name - * @return std::string The formatted mention of the slashcommand with its subcommand - */ - std::string DPP_EXPORT slashcommand_mention(snowflake command_id, const std::string &command_name, const std::string &subcommand_group, const std::string &subcommand); - - /** - * @brief Create a mentionable user. - * @param id The ID of the user. - * @return std::string The formatted mention of the user. - */ - std::string DPP_EXPORT user_mention(const snowflake& id); - - /** - * @brief Create a mentionable channel. - * @param id The ID of the channel. - * @return std::string The formatted mention of the channel. - */ - std::string DPP_EXPORT channel_mention(const snowflake& id); - - /** - * @brief Create a mentionable emoji - * @param name The name of the emoji. - * @param id The ID of the emoji. - * @param is_animated is emoji animated. - * @return std::string The formatted mention of the emoji. - */ - std::string DPP_EXPORT emoji_mention(const std::string& name, const snowflake& id, bool is_animated = false); - - /** - * @brief Create a mentionable role. - * @param id The ID of the role. - * @return std::string The formatted mention of the role. - */ - std::string DPP_EXPORT role_mention(const snowflake& id); - - /** - * @brief Returns the library's version string - * - * @return std::string version - */ - std::string DPP_EXPORT version(); - - /** - * @brief Build a URL parameter string e.g. "?a=b&c=d&e=f" from a map of key/value pairs. - * Entries with empty key names or values are omitted. - * - * @param parameters parameters to create a url query string for - * @return std::string A correctly encoded url query string - */ - std::string DPP_EXPORT make_url_parameters(const std::map& parameters); - - /** - * @brief Build a URL parameter string e.g. "?a=b&c=d&e=f" from a map of key/value pairs. - * Entries with empty key names or zero values are omitted. - * - * @param parameters parameters to create a url query string for - * @return std::string A correctly encoded url query string - */ - std::string DPP_EXPORT make_url_parameters(const std::map& parameters); - - /** - * @brief Set the name of the current thread for debugging and statistical reporting - * - * @param name New name to set - */ - void DPP_EXPORT set_thread_name(const std::string& name); - - }; -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/version.h b/Source/ThirdParty/DPPLibrary/include/dpp/version.h deleted file mode 100644 index 78f0e64..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/version.h +++ /dev/null @@ -1,31 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once - -#if !defined(DPP_VERSION_LONG) -#define DPP_VERSION_LONG 0x00100023 -#define DPP_VERSION_SHORT 100023 -#define DPP_VERSION_TEXT "D++ 10.0.23 (04-Jan-2023)" - -#define DPP_VERSION_MAJOR ((DPP_VERSION_LONG & 0x00ff0000) >> 16) -#define DPP_VERSION_MINOR ((DPP_VERSION_LONG & 0x0000ff00) >> 8) -#define DPP_VERSION_PATCH (DPP_VERSION_LONG & 0x000000ff) -#endif diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/voiceregion.h b/Source/ThirdParty/DPPLibrary/include/dpp/voiceregion.h deleted file mode 100644 index fa44adc..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/voiceregion.h +++ /dev/null @@ -1,119 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Flags related to a voice region - */ -enum voiceregion_flags { - v_optimal = 0x00000001, - v_deprecated = 0x00000010, - v_custom = 0x00000100, - v_vip = 0x00001000 -}; - -/** - * @brief Represents a voice region on discord - */ -class DPP_EXPORT voiceregion : public json_interface { -public: - /** - * @brief Voice server ID - */ - std::string id; - - /** - * @brief Voice server name - */ - std::string name; - - /** - * @brief Flags bitmap - */ - uint8_t flags; - - /** - * @brief Construct a new voiceregion object - */ - voiceregion(); - - /** - * @brief Destroy the voiceregion object - */ - virtual ~voiceregion() = default; - - /** - * @brief Fill object properties from JSON - * - * @param j JSON to fill from - * @return voiceregion& Reference to self - */ - voiceregion& fill_from_json(nlohmann::json* j); - - /** - * @brief Build a json string for this object - * - * @param with_id Add ID to output - * @return std::string JSON string - */ - virtual std::string build_json(bool with_id = false) const; - - /** - * @brief True if is the optimal voice server - * - * @return true if optimal - */ - bool is_optimal() const; - - /** - * @brief True if is a deprecated voice server - * - * @return true if deprecated - */ - bool is_deprecated() const; - - /** - * @brief True if is a custom voice server - * - * @return true if custom - */ - bool is_custom() const; - - /** - * @brief True if is a VIP voice server - * - * @return true if VIP - */ - bool is_vip() const; -}; - -/** - * @brief A group of voice regions - */ -typedef std::unordered_map voiceregion_map; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/voicestate.h b/Source/ThirdParty/DPPLibrary/include/dpp/voicestate.h deleted file mode 100644 index e9807f8..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/voicestate.h +++ /dev/null @@ -1,110 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Bit mask flags relating to voice states - */ -enum voicestate_flags { - vs_deaf = 0b00000001, //!< Deafened by the server - vs_mute = 0b00000010, //!< Muted by the server - vs_self_mute = 0b00000100, //!< Locally Muted - vs_self_deaf = 0b00001000, //!< Locally deafened - vs_self_stream = 0b00010000, //!< Whether this user is streaming using "Go Live" - vs_self_video = 0b00100000, //!< Whether this user's camera is enabled - vs_suppress = 0b01000000 //!< Whether this user's permission to speak is denied -}; - -/** - * @brief Represents the voice state of a user on a guild - * These are stored in the dpp::guild object, and accessible there, - * or via dpp::channel::get_voice_members - */ -class DPP_EXPORT voicestate : public json_interface { -public: - class discord_client* shard; //!< Owning shard - snowflake guild_id; //!< Optional: the guild id this voice state is for - snowflake channel_id; //!< the channel id this user is connected to (may be empty) - snowflake user_id; //!< the user id this voice state is for - std::string session_id; //!< the session id for this voice state - uint8_t flags; //!< Voice state flags (see dpp::voicestate_flags) - time_t request_to_speak; //!< The time at which the user requested to speak, or 0 - - /** - * @brief Construct a new voicestate object - */ - voicestate(); - - /** - * @brief Destroy the voicestate object - */ - virtual ~voicestate() = default; - - /** - * @brief Fill voicestate object from json data - * - * @param j JSON data to fill from - * @return voicestate& Reference to self - */ - voicestate& fill_from_json(nlohmann::json* j); - - /** - * @brief Build json representation of the object - * - * @param with_id Add ID to output - * @return std::string JSON string - */ - virtual std::string build_json(bool with_id = false) const; - - /// Return true if the user is deafened by the server - bool is_deaf() const; - - /// Return true if the user is muted by the server - bool is_mute() const; - - /// Return true if user muted themselves - bool is_self_mute() const; - - /// Return true if user deafened themselves - bool is_self_deaf() const; - - /// Return true if the user is streaming using "Go Live" - bool self_stream() const; - - /// Return true if the user's camera is enabled - bool self_video() const; - - /// Return true if user is suppressed. - /// "HELP HELP I'M BEING SUPPRESSED!" - bool is_suppressed() const; -}; - -/** A container of voicestates */ -typedef std::unordered_map voicestate_map; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/webhook.h b/Source/ThirdParty/DPPLibrary/include/dpp/webhook.h deleted file mode 100644 index eeb5c58..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/webhook.h +++ /dev/null @@ -1,113 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Defines types of webhook - */ -enum webhook_type { - w_incoming = 1, //!< Incoming webhook - w_channel_follower = 2 //!< Channel following webhook -}; - -/** - * @brief Represents a discord webhook - */ -class DPP_EXPORT webhook : public managed, public json_interface { -public: - uint8_t type; //!< the type of the webhook - snowflake guild_id; //!< Optional: the guild id this webhook is for - snowflake channel_id; //!< the channel id this webhook is for - snowflake user_id; //!< Optional: the user this webhook was created by (not returned when getting a webhook with its token) - std::string name; //!< the default name of the webhook (may be empty) - std::string avatar; //!< the default avatar of the webhook (may be empty) - std::string token; //!< Optional: the secure token of the webhook (returned for Incoming Webhooks) - snowflake application_id; //!< the bot/OAuth2 application that created this webhook (may be empty) - std::string* image_data; //!< base64 encoded image data if uploading a new image - - /** - * @brief Construct a new webhook object - */ - webhook(); - - /** - * @brief Construct a new webhook object using the Webhook URL provided by Discord - * - * @param webhook_url a fully qualified web address of an existing webhook - */ - webhook(const std::string& webhook_url); - - /** - * @brief Construct a new webhook object using the webhook ID and the webhook token - * - * @param webhook_id id taken from a link of an existing webhook - * @param webhook_token token taken from a link of an existing webhook - */ - webhook(const snowflake webhook_id, const std::string& webhook_token); - - /** - * @brief Destroy the webhook object - */ - ~webhook(); - - /** - * @brief Fill in object from json data - * - * @param j JSON data - * @return webhook& Reference to self - */ - webhook& fill_from_json(nlohmann::json* j); - - /** - * @brief Build JSON string from object - * - * @param with_id Include the ID of the webhook in the json - * @return std::string JSON encoded object - */ - virtual std::string build_json(bool with_id = false) const; - - /** - * @brief Base64 encode image data and allocate it to image_data - * - * @param image_blob Binary image data - * @param type Image type. It can be one of `i_gif`, `i_jpg` or `i_png`. - * @param is_base64_encoded True if the image data is already base64 encoded - * @return webhook& Reference to self - * @throw dpp::length_exception Image data is larger than the maximum size of 256 kilobytes - */ - webhook& load_image(const std::string &image_blob, const image_type type, bool is_base64_encoded = false); -}; - -/** - * @brief A group of webhooks - */ -typedef std::unordered_map webhook_map; - -}; diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/win32_safe_warnings.h b/Source/ThirdParty/DPPLibrary/include/dpp/win32_safe_warnings.h deleted file mode 100644 index 104b666..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/win32_safe_warnings.h +++ /dev/null @@ -1,32 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once - -/* This file contains pragmas to disable warnings on win32 builds with msvc only. - * It is only included during build of D++ itself, and not when including the headers - * into a user's project. - * - * Before adding a warning here please be ABSOLUTELY SURE it is one we cannot easily fix - * and is to be silenced, thrown into the sarlacc pit to be eaten for 1000 years... - */ - -_Pragma("warning( disable : 4251 )"); // 4251 warns when we export classes or structures with stl member variables -_Pragma("warning( disable : 5105 )"); // 5105 is to do with macro warnings diff --git a/Source/ThirdParty/DPPLibrary/include/dpp/wsclient.h b/Source/ThirdParty/DPPLibrary/include/dpp/wsclient.h deleted file mode 100644 index 6f05840..0000000 --- a/Source/ThirdParty/DPPLibrary/include/dpp/wsclient.h +++ /dev/null @@ -1,212 +0,0 @@ -/************************************************************************************ - * - * D++, A Lightweight C++ library for Discord - * - * Copyright 2021 Craig Edwards and D++ contributors - * (https://github.com/brainboxdotcc/DPP/graphs/contributors) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************************/ -#pragma once -#include -#include -#include -#include -#include -#include - -namespace dpp { - -/** - * @brief Websocket protocol types available on Discord - */ -enum websocket_protocol_t : uint8_t { - /** - * @brief JSON data, text, UTF-8 character set - */ - ws_json = 0, - /** - * @brief Erlang Term Format (ETF) binary protocol - */ - ws_etf = 1 -}; - -/** - * @brief Websocket connection status - */ -enum ws_state : uint8_t { - /** - * @brief Sending/receiving HTTP headers, acting as a standard HTTP connection. - * This is the state prior to receiving "HTTP/1.1 101 Switching Protocols" from the - * server side. - */ - HTTP_HEADERS, - - /** - * @brief Connected as a websocket, and "upgraded". Now talking using binary frames. - */ - CONNECTED -}; - -/** - * @brief Low-level websocket opcodes for frames - */ -enum ws_opcode : uint8_t -{ - OP_CONTINUATION = 0x00, //!< Continuation - OP_TEXT = 0x01, //!< Text frame - OP_BINARY = 0x02, //!< Binary frame - OP_CLOSE = 0x08, //!< Close notification with close code - OP_PING = 0x09, //!< Low level ping - OP_PONG = 0x0a //!< Low level pong -}; - -/** - * @brief Implements a websocket client based on the SSL client - */ -class DPP_EXPORT websocket_client : public ssl_client -{ - /** - * @brief Connection key used in the HTTP headers - */ - std::string key; - - /** - * @brief Current websocket state - */ - ws_state state; - - /** - * @brief Path part of URL for websocket - */ - std::string path; - - /** - * @brief Data opcode, represents the type of frames we send - */ - ws_opcode data_opcode; - - /** - * @brief HTTP headers received on connecting/upgrading - */ - std::map http_headers; - - /** - * @brief Parse headers for a websocket frame from the buffer. - * @param buffer The buffer to operate on. Will modify the string removing completed items from the head of the queue - * @return true if a complete header has been received - */ - bool parseheader(std::string &buffer); - - /** - * @brief Unpack a frame and pass completed frames up the stack. - * @param buffer The buffer to operate on. Gets modified to remove completed frames on the head of the buffer - * @param offset The offset to start at (reserved for future use) - * @param first True if is the first element (reserved for future use) - * @return true if a complete frame has been received - */ - bool unpack(std::string &buffer, uint32_t offset, bool first = true); - - /** - * @brief Fill a header for outbound messages - * @param outbuf The raw frame to fill - * @param sendlength The size of the data to encapsulate - * @param opcode the ws_opcode to send in the header - * @return size of filled header - */ - size_t fill_header(unsigned char* outbuf, size_t sendlength, ws_opcode opcode); - - /** - * @brief Handle ping and pong requests. - * @param ping True if this is a ping, false if it is a pong - * @param payload The ping payload, to be returned as-is for a ping - */ - void handle_ping_pong(bool ping, const std::string &payload); - -protected: - - /** - * @brief (Re)connect - */ - virtual void connect(); - - /** - * @brief Get websocket state - * @return websocket state - */ - ws_state get_state(); - -public: - - /** - * @brief Connect to a specific websocket server. - * @param hostname Hostname to connect to - * @param port Port to connect to - * @param urlpath The URL path components of the HTTP request to send - * @param opcode The encoding type to use, either OP_BINARY or OP_TEXT - * @note Voice websockets only support OP_TEXT, and other websockets must be - * OP_BINARY if you are going to send ETF. - */ - websocket_client(const std::string &hostname, const std::string &port = "443", const std::string &urlpath = "", ws_opcode opcode = OP_BINARY); - - /** - * @brief Destroy the websocket client object - */ - virtual ~websocket_client(); - - /** - * @brief Write to websocket. Encapsulates data in frames if the status is CONNECTED. - * @param data The data to send. - */ - virtual void write(const std::string &data); - - /** - * @brief Processes incoming frames from the SSL socket input buffer. - * @param buffer The buffer contents. Can modify this value removing the head elements when processed. - */ - virtual bool handle_buffer(std::string &buffer); - - /** - * @brief Close websocket - */ - virtual void close(); - - /** - * @brief Receives raw frame content only without headers - * - * @param buffer The buffer contents - * @return True if the frame was successfully handled. False if no valid frame is in the buffer. - */ - virtual bool handle_frame(const std::string &buffer); - - /** - * @brief Called upon error frame. - * - * @param errorcode The error code from the websocket server - */ - virtual void error(uint32_t errorcode); - - /** - * @brief Fires every second from the underlying socket I/O loop, used for sending websocket pings - */ - virtual void one_second_timer(); - - /** - * @brief Send OP_CLOSE error code 1000 to the other side of the connection. - * This indicates graceful close. - */ - void send_close_packet(); -}; - -}; \ No newline at end of file From d7f4580d0c29fba61b7564060da245547867462c Mon Sep 17 00:00:00 2001 From: Iuri Guilherme Date: Tue, 6 Jan 2026 14:32:00 -0300 Subject: [PATCH 2/5] Preventing crash when sending game chat message --- FicsitChat.uplugin | 4 ++-- Source/FicsitChat/Private/FicsitChatModule.cpp | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/FicsitChat.uplugin b/FicsitChat.uplugin index 68357f8..b7a76be 100644 --- a/FicsitChat.uplugin +++ b/FicsitChat.uplugin @@ -1,8 +1,8 @@ { "FileVersion": 3, "Version": 1, - "VersionName": "1.1.0", - "SemVersion": "1.1.0", + "VersionName": "1.1.1", + "SemVersion": "1.1.1", "AcceptsAnyRemoteVersion": true, "FriendlyName": "FICSIT.chat", "Description": "Satisfactory to Discord chat bridge.", diff --git a/Source/FicsitChat/Private/FicsitChatModule.cpp b/Source/FicsitChat/Private/FicsitChatModule.cpp index 88fa7f7..66b48ec 100644 --- a/Source/FicsitChat/Private/FicsitChatModule.cpp +++ b/Source/FicsitChat/Private/FicsitChatModule.cpp @@ -32,6 +32,12 @@ void FFicsitChatModule::RegisterHooks() { FFicsitChat_ConfigStruct config = FFicsitChat_ConfigStruct::GetActiveConfig((UFicsitChatWorldModule *)self->GetWorld()); UFicsitChatWorldModule *worldModule = (UFicsitChatWorldModule *)self->GetWorld()->GetSubsystem()->FindModule(TEXT("FicsitChat")); + // Check if worldModule exists and bot is initialized + if (!worldModule || !worldModule->bot.IsValid()) { + UE_LOG(LogFicsitChat, Warning, TEXT("Discord bot not initialized, cannot send message")); + return; + } + std::string userName = TCHAR_TO_UTF8(*newMessage.MessageSender.ToString()); std::string message = TCHAR_TO_UTF8(*newMessage.MessageText.ToString()); if (message == std::string("has joined the game!") && !config.HasJoinedMessage) { From 5073ea073e6191f1b2b2012e49841ce1c3adea0b Mon Sep 17 00:00:00 2001 From: Iuri Guilherme Date: Tue, 6 Jan 2026 14:34:36 -0300 Subject: [PATCH 3/5] Enforcing handling only discord messages from configured channel --- Source/FicsitChat/Private/FicsitChatWorldModule.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Source/FicsitChat/Private/FicsitChatWorldModule.cpp b/Source/FicsitChat/Private/FicsitChatWorldModule.cpp index def9b28..158d186 100644 --- a/Source/FicsitChat/Private/FicsitChatWorldModule.cpp +++ b/Source/FicsitChat/Private/FicsitChatWorldModule.cpp @@ -42,13 +42,16 @@ void UFicsitChatWorldModule::DispatchLifecycleEvent(ELifecyclePhase Phase) { botDiscriminator = bot->me.discriminator; }); - bot->on_message_create([this](const dpp::message_create_t &event) { - FString messageContent = event.msg.content.c_str(); + bot->on_message_create([this, config](const dpp::message_create_t &event) { + FString messageChannelId = FString(std::to_string(event.msg.channel_id).c_str()); + if (messageChannelId != config.ChannelId) + return; + FString messageAuthor = event.msg.author.username.c_str(); uint16_t messageAuthorDiscriminator = event.msg.author.discriminator; - if (messageAuthor == botUsername && messageAuthorDiscriminator == botDiscriminator) return; + FString messageContent = event.msg.content.c_str(); AsyncTask(ENamedThreads::GameThread, [this, messageContent, messageAuthor]() { SendMessageToGame(messageContent, messageAuthor); }); }); From b05e73d73e94502584a75e17369673c70723fb64 Mon Sep 17 00:00:00 2001 From: Iuri Guilherme Date: Tue, 6 Jan 2026 23:46:02 -0300 Subject: [PATCH 4/5] Optional footer on discord, improved join/leave messages, debug logging, removed discord echo --- Content/FicsitChat_Config.uasset | Bin 9871 -> 12682 bytes Content/FicsitChat_ConfigStruct.uasset | Bin 7585 -> 10085 bytes FicsitChat.uplugin | 4 +- .../FicsitChat/Private/FicsitChatModule.cpp | 118 ++++++++++++++++-- .../Private/FicsitChatWorldModule.cpp | 63 ++++++++-- .../Public/FicsitChat_ConfigStruct.h | 9 ++ 6 files changed, 171 insertions(+), 23 deletions(-) diff --git a/Content/FicsitChat_Config.uasset b/Content/FicsitChat_Config.uasset index a25d5c853bd6105231060aa4a45f8e58ec8fba03..b50da50f4ad8adecd13f2cb22ea55975bf7acc07 100644 GIT binary patch literal 12682 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 literal 9871 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 LIYsWLKSlc=@G!Qt diff --git a/Content/FicsitChat_ConfigStruct.uasset b/Content/FicsitChat_ConfigStruct.uasset index cebf98629cccd9c585264d4bffa0e1a8f860dabc..7bb02d64846d4a6dab47c0d8de6b1df9a7ce23c8 100644 GIT binary patch literal 10085 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 diff --git a/FicsitChat.uplugin b/FicsitChat.uplugin index b7a76be..d86b9ae 100644 --- a/FicsitChat.uplugin +++ b/FicsitChat.uplugin @@ -1,8 +1,8 @@ { "FileVersion": 3, "Version": 1, - "VersionName": "1.1.1", - "SemVersion": "1.1.1", + "VersionName": "1.2.0", + "SemVersion": "1.2.0", "AcceptsAnyRemoteVersion": true, "FriendlyName": "FICSIT.chat", "Description": "Satisfactory to Discord chat bridge.", diff --git a/Source/FicsitChat/Private/FicsitChatModule.cpp b/Source/FicsitChat/Private/FicsitChatModule.cpp index 66b48ec..1c43adb 100644 --- a/Source/FicsitChat/Private/FicsitChatModule.cpp +++ b/Source/FicsitChat/Private/FicsitChatModule.cpp @@ -26,8 +26,15 @@ void FFicsitChatModule::ShutdownModule() { void FFicsitChatModule::RegisterHooks() { #if !WITH_EDITOR AFGChatManager *afgChatManager = GetMutableDefault(); - SUBSCRIBE_METHOD_VIRTUAL_AFTER(AFGChatManager::AddChatMessageToReceived, afgChatManager, [](AFGChatManager *self, FChatMessageStruct newMessage) { - UE_LOG(LogFicsitChat, Verbose, TEXT("Chat message by %s sent to all clients: %s"), *newMessage.MessageSender.ToString(), *newMessage.MessageText.ToString()); + + // Define the lambda separately to avoid macro preprocessor issues with commas + auto chatMessageHandler = [](AFGChatManager *self, FChatMessageStruct newMessage) { + std::string joinPrefix = ""; + std::string discordPrefix = "(from discord)"; + std::string userName = TCHAR_TO_UTF8(*newMessage.MessageSender.ToString()); + std::string message = TCHAR_TO_UTF8(*newMessage.MessageText.ToString()); + + UE_LOG(LogFicsitChat, Display, TEXT("Chat message by %s sent to all clients: %s"), *newMessage.MessageSender.ToString(), *newMessage.MessageText.ToString()); FFicsitChat_ConfigStruct config = FFicsitChat_ConfigStruct::GetActiveConfig((UFicsitChatWorldModule *)self->GetWorld()); UFicsitChatWorldModule *worldModule = (UFicsitChatWorldModule *)self->GetWorld()->GetSubsystem()->FindModule(TEXT("FicsitChat")); @@ -38,20 +45,111 @@ void FFicsitChatModule::RegisterHooks() { return; } - std::string userName = TCHAR_TO_UTF8(*newMessage.MessageSender.ToString()); - std::string message = TCHAR_TO_UTF8(*newMessage.MessageText.ToString()); - if (message == std::string("has joined the game!") && !config.HasJoinedMessage) { + // Message is from Discord + if (message.compare(0, discordPrefix.length(), discordPrefix) == 0) { + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("Ignoring message from discord")); + } return; } - if (message == std::string("has left the game!") && !config.HasLeftMessage) { - return; + + // Message is join / leave game message + if (message.compare(0, joinPrefix.length(), joinPrefix) == 0) { + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("Message starts with join/leave prefix: %s"), *FString(joinPrefix.c_str())); + UE_LOG(LogFicsitChat, Verbose, TEXT("Full message: %s"), *FString(message.c_str())); + } + + // FIXME: Figure out a proper way to localize this + std::string joinMessages[] = { + "has joined the game!", // en_US + "entrou no jogo!" // pt_BR + }; + std::string leaveMessages[] = { + "has left the game!", // en_US + "saiu do jogo!" // pt_BR + }; + int joinMsgCount = sizeof(joinMessages) / sizeof(joinMessages[0]); + int leaveMsgCount = sizeof(leaveMessages) / sizeof(leaveMessages[0]); + + // Extract the part after the prefix for comparison + std::string messageSuffix = message.substr(joinPrefix.length() + 1); + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("Message suffix (after prefix): %s"), *FString(messageSuffix.c_str())); + } + + bool foundJoinMatch = false; + for (int i = 0; i < joinMsgCount; i++) { + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("Comparing with join message [%d]: %s"), i, *FString(joinMessages[i].c_str())); + } + + if (messageSuffix.compare(0, joinMessages[i].length(), joinMessages[i]) == 0) { + foundJoinMatch = true; + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("MATCH FOUND: Join message detected (index %d)"), i); + } + + if (!config.HasJoinedMessage) { + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("HasJoinedMessage is false, suppressing join message")); + } + return; + } + message = joinMessages[0] + " :white_check_mark:"; + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("Normalized join message to: %s"), *FString(message.c_str())); + } + break; + } + } + + if (!foundJoinMatch) { + bool foundLeaveMatch = false; + for (int i = 0; i < leaveMsgCount; i++) { + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("Comparing with leave message [%d]: %s"), i, *FString(leaveMessages[i].c_str())); + } + + if (messageSuffix.compare(0, leaveMessages[i].length(), leaveMessages[i]) == 0) { + foundLeaveMatch = true; + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("MATCH FOUND: Leave message detected (index %d)"), i); + } + + if (!config.HasLeftMessage) { + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("HasLeftMessage is false, suppressing leave message")); + } + return; + } + message = leaveMessages[0] + " :no_entry:"; + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("Normalized leave message to: %s"), *FString(message.c_str())); + } + break; + } + } + + if (!foundLeaveMatch && config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("NO MATCH: Message has join/leave prefix but doesn't match any known patterns")); + } + } } - dpp::embed embed = - dpp::embed().set_color(dpp::colors::orange).set_title(userName).set_description(message).set_footer(dpp::embed_footer().set_text("If you're tired, just remember you can buy a FICSIT™ Coffee Cup at the AWESOME Shop!")); + dpp::embed embed = dpp::embed().set_color(dpp::colors::orange).set_title(userName).set_description(message); + if (config.ShowFooter) { + std::string footerText = TCHAR_TO_UTF8(*config.FooterText); + if (config.FooterText.IsEmpty()) { + footerText = "If you're tired, just remember you can buy a FICSIT™ Coffee Cup at the AWESOME Shop!"; + } + embed.set_footer(dpp::embed_footer().set_text(footerText)); + } worldModule->bot->message_create(dpp::message(dpp::snowflake::snowflake(TCHAR_TO_UTF8(*config.ChannelId)), embed)); - }); + }; + + SUBSCRIBE_METHOD_VIRTUAL_AFTER(AFGChatManager::AddChatMessageToReceived, afgChatManager, chatMessageHandler); #endif } diff --git a/Source/FicsitChat/Private/FicsitChatWorldModule.cpp b/Source/FicsitChat/Private/FicsitChatWorldModule.cpp index 158d186..62b4487 100644 --- a/Source/FicsitChat/Private/FicsitChatWorldModule.cpp +++ b/Source/FicsitChat/Private/FicsitChatWorldModule.cpp @@ -11,48 +11,74 @@ void UFicsitChatWorldModule::BeginDestroy() { Super::BeginDestroy(); #if !WITH_EDITOR - UE_LOG(LogFicsitChat, Verbose, TEXT("BeginDestroy")); + UE_LOG(LogFicsitChat, Display, TEXT("BeginDestroy")); #endif } // Runs on game world load void UFicsitChatWorldModule::DispatchLifecycleEvent(ELifecyclePhase Phase) { + std::string discordPrefix = "(from discord)"; + if (Phase != ELifecyclePhase::INITIALIZATION) return; - UE_LOG(LogFicsitChat, Verbose, TEXT("DispatchLifecycleEvent")); + UE_LOG(LogFicsitChat, Display, TEXT("DispatchLifecycleEvent")); // Get mod config FFicsitChat_ConfigStruct config = FFicsitChat_ConfigStruct::GetActiveConfig(GetWorld()); + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Display, TEXT("FicsitChat started with DebugLogging enabled")); + } + // Start Discord bot if (!ValidateBotToken(*config.BotToken)) { return; } - UE_LOG(LogFicsitChat, Verbose, TEXT("Starting the Discord bot. If the game crashes due to FicsitChat or DPP, check if you have the right intents set (check on https://discord.com/developers), and check if your bot token is valid.")); + UE_LOG(LogFicsitChat, Display, TEXT("Starting the Discord bot. If the game crashes due to FicsitChat or DPP, check if you have the right intents set (check on https://discord.com/developers), and check if your bot token is valid.")); bot = MakeShared(TCHAR_TO_UTF8(*config.BotToken), dpp::i_default_intents | dpp::i_message_content); - bot->on_ready([&](auto event) { + bot->on_ready([&, config](auto event) { if (dpp::run_once()) { bot->global_command_create(dpp::slashcommand("ping", "Ping pong!", bot->me.id)); } botUsername = bot->me.username.c_str(); botDiscriminator = bot->me.discriminator; + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("Discord bot connected! Username: %s, Discriminator: %d"), *botUsername, botDiscriminator); + } }); - bot->on_message_create([this, config](const dpp::message_create_t &event) { + bot->on_message_create([this, config, discordPrefix](const dpp::message_create_t &event) { + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("on_message_create fired! Channel ID: %s"), *FString(std::to_string(event.msg.channel_id).c_str())); + } + FString messageChannelId = FString(std::to_string(event.msg.channel_id).c_str()); - if (messageChannelId != config.ChannelId) + if (messageChannelId != config.ChannelId) { + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("Channel mismatch: got %s, expected %s"), *messageChannelId, *config.ChannelId); + } return; + } FString messageAuthor = event.msg.author.username.c_str(); uint16_t messageAuthorDiscriminator = event.msg.author.discriminator; - if (messageAuthor == botUsername && messageAuthorDiscriminator == botDiscriminator) + if (messageAuthor == botUsername && messageAuthorDiscriminator == botDiscriminator) { + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("Ignoring message from self")); + } return; - FString messageContent = event.msg.content.c_str(); + } + // Convert event.msg.content (std::string) to FString + FString messageContent = FString(discordPrefix.c_str()) + TEXT(" ") + FString(UTF8_TO_TCHAR(event.msg.content.c_str())); + + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("Dispatching Discord message to game thread: %s: %s"), *messageAuthor, *messageContent); + } AsyncTask(ENamedThreads::GameThread, [this, messageContent, messageAuthor]() { SendMessageToGame(messageContent, messageAuthor); }); }); @@ -69,10 +95,10 @@ bool UFicsitChatWorldModule::ValidateBotToken(FString botToken) { std::string botTokenString = TCHAR_TO_UTF8(*botToken); if (botToken.Len() < 40 || botToken.Len() > 100) { - UE_LOG(LogFicsitChat, Verbose, TEXT("Failed to validate the Discord bot token. The Discord bot token's length needs to be in between 40 and 100 characters long.")); + UE_LOG(LogFicsitChat, Warning, TEXT("Failed to validate the Discord bot token. The Discord bot token's length needs to be in between 40 and 100 characters long.")); return false; } else if (botTokenString.find(std::string("BOT_TOKEN_HERE")) != std::string::npos) { - UE_LOG(LogFicsitChat, Verbose, + UE_LOG(LogFicsitChat, Warning, TEXT("Failed to validate the Discord bot token. The Discord bot token is set to the default value, which is invalid.\nPlease change it in the mod's configuration and reload your save. The Discord bot will not be started " "until then.")); return false; @@ -83,6 +109,10 @@ bool UFicsitChatWorldModule::ValidateBotToken(FString botToken) { void UFicsitChatWorldModule::SendMessageToGame(FString messageContent, FString messageAuthor) { FFicsitChat_ConfigStruct config = FFicsitChat_ConfigStruct::GetActiveConfig(GetWorld()); + + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("SendMessageToGame called: Author=%s, Content=%s"), *messageAuthor, *messageContent); + } FChatMessageStruct chatMessageStruct{}; chatMessageStruct.MessageText = FText::FromString(messageContent); @@ -91,6 +121,17 @@ void UFicsitChatWorldModule::SendMessageToGame(FString messageContent, FString m chatMessageStruct.MessageSender = FText::FromString(messageAuthor); chatMessageStruct.MessageSenderColor = FLinearColor(config.ChatMessageColor.Red, config.ChatMessageColor.Green, config.ChatMessageColor.Blue); + // Use BroadcastChatMessage which properly replicates to all clients via NetMulticast RPC AFGChatManager *chatManager = AFGChatManager::Get(GetWorld()); - chatManager->AddChatMessageToReceived(chatMessageStruct); + if (chatManager) { + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("Broadcasting message to all clients via BroadcastChatMessage")); + } + chatManager->BroadcastChatMessage(chatMessageStruct, nullptr); + if (config.EnableDebugLogging) { + UE_LOG(LogFicsitChat, Verbose, TEXT("Broadcast complete")); + } + } else { + UE_LOG(LogFicsitChat, Error, TEXT("Chat manager is null!")); + } } diff --git a/Source/FicsitChat/Public/FicsitChat_ConfigStruct.h b/Source/FicsitChat/Public/FicsitChat_ConfigStruct.h index bbaac3a..a75513d 100644 --- a/Source/FicsitChat/Public/FicsitChat_ConfigStruct.h +++ b/Source/FicsitChat/Public/FicsitChat_ConfigStruct.h @@ -40,6 +40,15 @@ struct FFicsitChat_ConfigStruct { UPROPERTY(BlueprintReadWrite) FFicsitChat_ConfigStruct_ChatMessageColor ChatMessageColor; + UPROPERTY(BlueprintReadWrite) + bool ShowFooter{}; + + UPROPERTY(BlueprintReadWrite) + FString FooterText{}; + + UPROPERTY(BlueprintReadWrite) + bool EnableDebugLogging{}; + /* Retrieves active configuration value and returns object of this struct containing it */ static FFicsitChat_ConfigStruct GetActiveConfig(UObject* WorldContext) { FFicsitChat_ConfigStruct ConfigStruct{}; From 05b360aeae292f350e48626475f5fd39c7b4f5a5 Mon Sep 17 00:00:00 2001 From: Iuri Guilherme Date: Tue, 6 Jan 2026 23:49:57 -0300 Subject: [PATCH 5/5] Bump v1.2.0 --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c707f9a..510e6a0 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,10 @@ The configuration file's content looks like this: "Green": 0.40000000596046448, "Blue": 0.94999998807907104 }, - "SML_ModVersion_DoNotChange": "1.0.0" + "EnableFooter": true, + "FooterText": "FICSIT.chat", + "EnableDebugLogging": false, + "SML_ModVersion_DoNotChange": "1.2.0" } ```

      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� zv1Wtx8G*KbXA1!U35XDtsOFle+6Gg@^?pw0mwj<{XeXp>egBOg<;^5yWyC;z%!-m5 zDb_rAlD?rQqtl=Ni|kZ5{<}iN0(z%y(=Ufs9*0B9(JHez$L*d!U1U_ZQP~AS%lbyr2 z*Fg_>w7D5V*0>XXSa`}SXk9Z_b~*Gfqe(ihc^uIy{Cv8+VsGa+Vn=I|Xg!Ed=(^4Y zwRcq-(8iUA8Yo8FcH%Ay0{Kobws{Fh74S?P3~;L^0grK>1KWB*mx27WpRflM`Ox!h zi&faO<6gy}@KYfFm_?NR)>NHwK*!8x)1r2gG5f#$EzZ~X`9uRsp)OQU5$m#D93Ba0 zW&pnHw(HpFUc^~BMI#r(xf$mGBT(0!%o&lN7nyQ2I9M8*GN}r}@%kMdIli6D0|~hh zbnqz&FfROttQb?ABfIIToIY{!f(*M=292Yx&mf+rK33!oX_^Z1{qT_6!%#sa-9AX; zou84`8fCTKk)WU7M&IrHt@PcFT_aUG_8z+&_UvYFx{h9vNoGaZI+|O9W+ zVov!kZ>SPU(Du1_Yb*>V_1#SQcOc!mT+;2)>ka9axdGCxb}xvmb5corrCt%HgVc}a zwZRH&Ou$IYh_7MYwtGt*Gp1*?T4w2Z1Nlo=3Iie?WhrM@c(oEFiObGzu$J!Al%@}2 z0r@;v3~1a9bZyWKH>cfyiVnkr$63q%k19GB9+V=2WOjZu5zH(m4PbT7#e)2b3G=I& zxUm|A5k#=5{1kI#*B8%^JeD&5m`D3Y9!Y(F%p(f?@wdF^$37yGC-y1d1yDNAP=$(H zKUj?=thm*frtav#DKVpcoU(f%>WmT`OlNSL5bky?c|juqww~F*9}-yh7f3YBhAmiC zB|Ss~s!V1det^dFyWi5jnNyqSSuY=(s687ouYc;4&l+~sKlU5wMyG@_0N-~?v4sZTy7{nle~B$N#$)?<*)J-!eLDM*pRCMqS7 zd#(icamfT&&do08-uRqZTDa)EER))QLga@$eI`qvbkhd4Gg~p|8@|jl(&oS7Zi$~Q zFk7MVJ4d3Sc)B~N^0hn{o5iT3;ofT`A`}kr zJ!O-4SJI;as?9m$hqQ}V&A@fiehjesnw5#~*fjktGdaNc5Vu{AQEc3~fKN@7>?HPS z=Qt0aJa!IKaA67Z4FX!ArU&hAgxk&W8tkmDi=79DV(y!s~3y=s!ve;`jYlaI@(H zowI4?jydM#u}8h^`$yCH6p=E2y>qEt{#xfgSS3OlS?vYpJ#DI-m*wZv0EknlQNFbd=+3>DHKe zZYp4fd}=>-qA6;E_qEf2Yy8M^Z8xM1Zt#Cw&H)SCONtDSnfy!+|5hgwK+@yI!vpgg z{{sb=46c**du|s;HV3#I??wxZE`0Q!Qy<6m(RyWa*Abdb&4n1#90ar%9NTD|s+VDniu^eheRp|-;3s`lKcxH(>LNr_6WXH*L# zk-2@Q_wime%t!EFbL%~?dQW@9nma(<=LTnb{qcms(6T#dJuUQQ9*q=SdLE`nlmX4l82ShpWf9rWv&V%1G|ier9^yAiKrxEqi0`7j1&?FfU@dE-&c4bH8R62N4)%iMquZ~5EI z%~GZaQU!ml|22Q(fd{9@yAi_1N9^mX2ghpp22b!F0VE`q4h@mp^;fA z<<{$9H9_MQ^9d=2GzPBteL~3hCux}bjIy{H{u7cK&|qZ?tZIROCo~b}Ia*xhh%g-0 z17vLl-WmY{-#2=!Xnn5ZV=$-fa8{kCmUN7b5Ce_dGN-AS>^j^KD-CV0Ih_-a76b~| zBe=-XnMN2!WO)fpeH4aq)6<@SV49WmlrzcfgF@NIRQt(jwYbN% z)yztImZtV-LB@yhK|g)ULM=Vt)20^4|Ed! zX1l#xn5N50f^=kX&zhHm^Axp;yE^1P5E=Y}P%4B6hR^UFWYtK7cF{*Ul5hY_U+A;` z+MsoU8rB}M25TOx)zXjyv2;(Q{wZtOt?n6J&BmTnZsd>^_RMJ9IlnP|)k;@hf z4lrul1oGpKn7yL+Kwty(CWyCZSAdfAO09ugj12QzE>=w=Opg2>{+;?}Qvzf{DJUe! z@Hiu2pI05~B{F?|iu1P8B_=b6$inLD_$vwO4X^fjS8|+x|7Z zb~#Ur+Qt**(QJ`LA0d8RMrACAm_ftXzxfM-y}hw_0EvVV22bYms?)2DIJoUhy}Rh+ zXha(1C${~(!m26xM)`|uj&>9xv4*`rGOv66U?mju7y431^yhVRy{ShKichm5MeP>Z zVKj0+V6Ujibf>?lz0({WgWpMaHW#&DNxjmJ7Puu~&;Rg#ck)dl`L=2|TiZ2_c6V3)^wK^l?{-EA>*-<2zlSC} z9@i0fMUYd##V+e0iwb8O(t>#QVWH^!`llp~odV_(OgX1+(DDJ^Lnx))5ViSV-6Pok_lcY~`g#Jc(23k!)u& z5_)!cBZmA+Ye#_hpAob-M}2*;A|lzbdBeSSZ+gfTds)feY-*luV)qg`JC-G%`|4Wi zC(`SENmu-mQcermn`r)H&U|9-#DL>+*k^bdX?1A$W2{P8A{zil1nZ*-HdAABS zz^I3AUfrMix<9gJ9Hj>y)I6q~|B&Fc>)>%7SVU}J4ck5d!G@S<-2eSLa_`G>`DgDD zrIPXqMa{cEy&0_biR^MhE39- zZ*`Ab@SN;=%|UDMT$t*$A~b@q5jq4#f9LPqqtDnscs!^mdyBdtWQZ`Aj!2J?%AF{a<}kQUfOI^v7p7ZZu^B^v*!dOt7V#CyTRHd%j+MC*p~%E z&qmSi0(G%~lzLHD%ZSRg{S>sG-|HG6+iNbeB)^j020uzBnO&>7D#BEe5W~nG2clLy z7qKs?BeKm&5&M=u@X+4UKNKa$GVR&unSV@?I7st76LX2lx9q1RfjhoOjof2sF>6Im zbM?!b#XMzV7BbPAp!sgtTh3yljDkvp6h2|OahRiUMD!nve_Qp_o4wkUq5 zOLrC4Cy@ULpcQdaUo9oU+i}=X;iVtkD}hKP{aB8l%R5hYr|6Lu?)nenGd);^hyNnW zEnck?0P6;P=Ylg8Ynf=?TyuM18eM+ zNrk$&5Unf3TJi>VZKu0jKT%K(>H8%gVDzZbEhLsK_HD0Y4vb$r%5Oy@@YhGC0= zHm1{m)?Y|w$UeO?1ebcJ_GP5lHL)P}*ex1V|I2tLh91)jv-^4^X-0B_Bi@;KzeTd< zodZvEp&EoUIQ8yW_D6a#{rp!;yZOQcdo(6126d6=D}Y;lh+=eQuLwc&XwbZrSc}5J#yY73f{@RQ3FyN1qoIf1ZlceLhpqUEImJ5wZW+^}=xl zHADXA_@%)zN`XAQS?6fmCr}1-e1yObe!dDS_{7NCa<0(K4j#uJ%v~9}NQOuV95}lI z<2U>+hui+ikh=y7uj(r5WTonJonzLF<=w$AU)3d}UAIK-4%S@N)$&TAt2li2uvEQwik0y70C>)SGO*b2mL=lX?kIlpuH{3b}vkhpw1V!TLyPIiJgUaVJBEur9LA=1-&alntr{Jz%i5cAKH|3_2s4_vP+pqiw?q zQ8keN3dyseW~vD(Xg9O~s2_8t4cj~Fdl>R?HwM!u*7w-ENoG7)V(+GV27gy!sI=>i z)6jW*;rvLpp#=nv{uJ78M85EoA{McAHr5p`fBAmq_v>2?kfb|{P$2xECPxSDCrK;F zjG&UQSTYEiA{!1Y?LvRVge0DFA`Q&VDr$0@a@xftghD}a& zif`q5Wa#b`lYoKg)Fks@faegw^GWm()VD!x`f4yf;j+bcCl_j&?ugl!QeTWDXH*R2zjiPBoy@DyzFO!u=yz-&q?}w>qBObNL^wRn z@Uhh)Luf1z7dGxJ%)d9so{3K+6suOe6l9p9$;0I8Wo-l+weBj|DE_$%h+`Tf{9&widE9<4LGnHm%{2j;fNa%> zT_rjoE=8Q|xR~-KAmnh)D#)un;u&f(5!wdhV|1lczHjV@jGNq?WVsSy$w(EAInIDC zM>mHE;S;)5Dnu?m4{mNwvRJvXOkLHJM3_euV}&$YJmO*1eounTVN(*=e=#ap&Jdw~ zJRXbzF`Cd0uL-!v(H7JIJQo7X=lF0OmpLnA^*gL(@4{?FC*Ql8FK+u(bn=|KMV|mU z1(?KmPp+tF01K$KW_!Q@y!i_$tZie#!qmDpM)t!ic{jrHT~dkE@1)d)#JhvC~6->n4Z(lzKsC^@<

    D1cG6UYJ! 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

+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≈gp;T)Bt$mpuJG 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 Suq8za8KA8D)Kkd6@qOwHUZ4{kpkCb> ztxvrKwPXE#ifX@u9e$#reF~$L*r%rV75bFkAF8dIXa`%4T!j8mvq|eh*1@k+gV)^6 z2KjhTP`IS1Zy1Hko7Lw@mFt^*cqWi$i9WeI=}a7@*tH54Ne?CIuY2XgiQUql`o(_b z&_!U3i%Ugbyy`@F-0&b*ISqBe!OgBFo6mn1ZYRdXatNPT-b|xtc2e08=uvJ<=8Ba6 z(4|nAtX6sD4!F;ljiT=EPv8z$KzXv0(ddU0zWA=x-n()ePeqT`+H7EA5=v3 zdbnSd{{AwSGX78IXGwYV7H`HCQsDVyEGgg?uV2>ijue0V4V4F!a`A>gZACBL(e$UZ z3^l+bX?Pty2af{2MOOUqCJfA#Ae^qd@o1eiG1FaK>vSxBr6mcNOBStojD(4ub>9*n zcsNaYQ+;hyw0mHlL<+2*C*amQiqwL1q&wNa`a`kaALS{o#ewg~p@!0KCV}U#7bpo# zrUVfA1ub$*N2wbs<0{W|1kc0OC^>UjF7830KxImxAg?PDN$aO1a)wZf>$HTLE2W6* zi&DIZDk4R^HK?X|{6?I>?O0b=hlelu1y<}&XlN#tmOGaAg}eh-c{k!vHHuNyn(0&? zh^Z(KJ(&XMH=l+xUP8}vlWqL7u#KfGlt6j8vlF5)Bi)))ZN~ZucD*C;ts7qJ2Z=4pUpeN|TQCb$S_>V?w(5!_{ zaPg)sL|ua}Gz7KpS}hvrrHZ$ya=jlCehb7z5eM>wcCqVNUXJj<#)MOZ}1N*=?*wN`U=vu+58 zyZ?!lIY95Mf<1T?WEFzj+Q+PMYp&on_h${a2{-|+;RZ@T@i_`R*neeKaG2jXzBpQ## zv+CMl6NK!AZ)k|W`7)JI>DmhYswA3;8xZRu(IVnS)VCE9?Ve|l==ER|mL&S-LrTR* zO%8?k?+qN#Y5aZp_bxS@1#3h&!tYP&P@Fa127RuEA6Ok+Rs3Ry){CDTsR{UfJJP_f2hy^{@3z$n ze(fiP;UH@q1!9;a3f=7J^%V!%X6o<&bjo zj~Z@SQ2%PUDMN~i+Yabr>!CY4AMA9xdj?O3pn7~r`4zm{61Oaf(bVC-zAhBE+t!P? zJ$0{$+bY;BaXa*YlGsuuv1qt`fS@97Q|}?%)Y?VbA-+^$d( zi-y|@1Ql`Xe>dSa9U`#%^_buk5`{%kCXr@I7X4M_cRzok;r9VlzzTkzeqb*u(T#@6 zqaN^qOiR-y`By1Dhpom#K+;m(LT6hFdq1TLj$RxeIoTL37y3 z%Hwrz$A)c^9N=>lD9ZorPIKMW$<DcVBOK1rk#iCE*A5 z_b~1MVA3+jqj9#9mDq~}a|_IKFy$~0zzl@hzaq}|FBl3ZnlB$Q?20x*(a$+)zN;xC z0#lQ53+*qYeuEOX)eGu`*OTv+|HzT6xr!nu&C~B!wYOlZds7*<2Q5>!2Ti5xe0QU? zc<%|fEBWMFHC!&KF!K2jhmR=~8WMke$w%$+3vQq5cs>4hSSDe?VvJ)$d?CKevXZaL zDw~>owI|@Yo;q7D60T+TOxmkbE6H@cEH{ZJYP~9;V{I|BpA^WzS|DBxk+)$=##dmP zN`Wr+jE&0Rniz*7kUTwNf55 z3m*+oqWwaOw8gF73a0Y}XCOh8C=W2BKq@}94TyehDOISiTAl@C6@2Vfo?768*U@-- z7jS@Rfvx`XJjWCKHd!f8s#u<+21K9Aqd$h|)Ly?`t&}IF$^#Z8=PeV^0hKi%y)Hbx z%aNW}?gAB!$1N4lALH~nGCl6i*MqD{wfOoa=xKrY>NnflaJ{GsN=#wXzU8#c zfJki3gKIRv$27{g3N&b$#K~zp{#;^2fMhlQjUv+atzWEYOa-I8`>Gkk)BXV z?lWj3f}IpS;p@BM>qx0$+W;(A6%K%4iZP)u4dFovJJ{j{&}QACB%+iFj(y=!Go8H4 zR4`r#QZ?iCjNsFn!uTY4aXBJOevh8wyG8K8XrV%}gY{P{GK+ruE594$PEW;CCU?qq`$ zx8Q}OFZ85wbzzR1y+T5yDh#A*+CnG<6@f5u`R5pz`6zk=sd-3ROx3i7qiEaaF18bhRmN@WVB1)ixDhstt)8-w)TXl} zHMMn0YMvq_1~oVGl|mGTsqD8Ugvka_c>oA4D}gQe2dN7U*yfQ8X#tx$v-5qX!Pb{l zHY#kO1QecQu#0WFuwK{>9-!{bVFS|8H)n>xwg*MBsAnolPou>4JY|$n>Iu*$KPiHC z_hJ#WV%WHxZEl0_WF@s*mDC_C@;0!7?R5k-V7s!IVB1XELIbuev;jy0BNnQ&4Qp4( zvmAUp>r)M{$8dF~p(|Wb1$XEQTjCm7RaXdUi0&}(CFfh{3Uf7G;eK{_CcqZJyOMG< zXzo=M%mTc>kP(3=k1~OG&J!FiCrBcxE^*W%ZrcxAZC&CJ*aYx2MPV*`5~*^?jt(QAtx%5~6$VVqMefCC#h<3MI{>?htfmqDYD!w#?KE@9`@DpQBbtr_T2t zMCs zIyFL}-zM&%{=<3UIMVB=$SE@zwNw9aLA}Uz|1%W1ic3R~%R^??$c-seklR1PM4C$< z6_MLiEF$+DY?jD1S5tdTNiABx-nUppZXqtETNeBgyi7oDDhD^5=G0Lnho*NNxik5? zcjzd>Y3|tp^&OUW?_V!+FZ>>gT+YQI z$aO|zS|j&EsZ!V5hMSP<{D_F0XQ7DPK-esiyH`!^JSDYg$lZvb26Ck{*s#T z2K)*L?&lzf)1J!j-YwSwZ13>zQZVw#Za;qasyGF zdzcBkeGiG)H7gRaJ9>Kr?5TB(UgX#7FZ8yS|un2$;Re;f;vd-S23a z%_7~IN_9$SRyo~~^Xr9e;IE;ueNGaOF#^*eEeqIYKyDz|nkf}k#WaX7Yn4S|b%6MI zfe2eAY?dTlir@#Otv76RudcvG3G=2TBl`?%T2da(~bxOIg zl4h8OvhZ_6-Ou_y%O|SovuL6U`)U_g0Vtk{if32N^LEj*_8A^CM)SPZ@Lb2P?#PFv z=V$O_*D;Ubxu3nQ#N0Mh%`-*xd{ps#R`YBjdX^}j0nPKbZbE4%E1uIe&yPgU%M{O% zn&*0Wez0u7Yq|1CBmNGw&cb%oEW52o=K z6{rZsbZ-XNLGbdXO0ucE1#^`R-+|r=|17|Ch#uupj>`oGya2AMmKU>Nc^Q@G+n!WT zlxHoNAU@JidK^ibmCEje13&Cb87@`|WrgKL$?q zzKdtW+XMT25Lsvi-V{oEM5u4JQC|rU4^p)Vv*;eHEv8oQ>Oq#dSY}JdjiaSvx_6Vi!FBo z;lR*Tb{Dx$;jTN_d~#I?VN?Btpq4liJzQbnV?htwktJ(`%mG{)vnwA?RtMI}?=&F1 zeskz#z}qK;3_|g8h0r7Q?}7E$TVE&{*}Lchlo5xs4V?sJo$0ObEV*a5^4P+1s%%zo7YM$~O2+ z>$Wz9v8W-${N~yvxg$!3*I)xfU2GxchmJ9qev7x}Qknl_t{1o zR3OXvLj=46GHGvF92JU~_0ieUaczW!|Jl4OIM0;*tBcWPCyvg;EB5Qkx7uv{7q=-#=Z`~X(Rep+PsP-grRnJ)8{r@h!^37Y)$E7 zC63Z}G&=oO=JYlB6EY0m=@^t@FC2ynxNO)Qg@S_)h{U#aj==;Rx7=-TIyS%;ceRv_ z!c*FKV1#x{(5*2jqZ&MgmE8!UK`r=1f|e|c(wY=r#xszmT1mbVvGCkqdZx3WYn9E` z56_4oK9u(pkPpzYJGIFCm5tp*h?S?u5HLK+@B*I23z+F@XbJyAWTYj>nD)oUr4iwrEfjJcP(G7zqqUIt#i~(Z-R>?EOAw!zlF-1gP#w zI9jO{Hl#4!l)^N;-oM>ot~al*8#{%*FVm05fm}H`_)y#&e&&<-O)rptMQv=|c4}xU zMyw?J*OE`^dxh93a_hgad=G{|#0-`)DmkSt*NG=>7T|cxMhXT}N@2bU#B%XaBet5L zwc0o~*fYwSl{xX$4Ney0xfnSn$4?y%K2CNCl~-Nrgv2@liv=JZ&}pU}NAct_wMFSo z@ZgPnwL(z=3D4^0?q^NaX!iXzIJ?PLR1v#7Vgp7HY#OO%`W|ZoVyko;b6rh-<6Suy znCx1tV*-f4@XAVV<481?X=glR`~>m6%Q^}RqDbY7MgSvbpb!Yc9TlHDWnlIehq$0 z6J}guh5cdAUQ)Vx6v!(%6^k zjh)kn<&SGjTVFmoq^Nk9adB?`U#{k$Fh3A#&hIt2@`5-aF~OWeI4rcyQ-@N4;`4rj zDz6V~y8c)ldcsU@IR|7|l!j~DJ$(uWfc%ROH=CU-FIhTAOBtaCvQbba1c%eAezE6L zXV61mb)M`X6v{Zohq60815w}Kv5cORO{Z>@UKQ{l$2{CJ;jLxYfRuTd9Qb~>DLFKyyUiRYk8gXMUAoV(E4WZ5kjiVFedzhQ- zsca`!RB!?_)mCr=PqlbXt*u}@6#xPg6(Df0#`;`r#8uQCF#gdiq1b3g}4HDZp6MwVue1uD#}@52iEU8UjFg?k?ZAe*Y6DB zZ;K8_G`IBh_S%lEseHTU>{KsgsHbUI3&i!2{OQUB!w*p_5I2y-atU%eXit4d zVZzqB#EU1RJ;gt&4-uY>Yk|B;$a-!!+Pa4Wl^ytR=z&Tcjl`uk724^@;%~c2fe|3` zEp%XhR>$y@ls=G@tELr2@CM?FsFS#G{F2Z{kAckKmEUuukcIl!Bs%%$VjF1+tu~lX zZswDrYa4;GeN1KJhdoiYu*06cwo}=*C}nH8kmoWO?DR;?tYk0tl9*=%&pR%e}e6gRo7SeW}U?Wz2z?mIp?D=v3q@=L+710SNA_FX(T$ws#@ zlOk6OE7RJb-bv#z7uzxTXIsWt!?ni>5 z??^^#acW9+d_x;!Ks%h_NWpRm5w=h6m?LlXA%q(v8>k;WZ$wf~>Bj}bXz#Gg+iQLw8>Hp0p9d68+&mrtPx} zeSwT_UN9aEKNwpfTW|690_&=6;!7`|)oN%UZlRREr63N+4?xGmlfcYwX}0J4x*eI_ z$1Xg^Z#1G2g*q5jP$BR(9`ujTB>6-3*Al2+aH$i9-y(RU^XJm=%hK=BbqPch;OfNB zn{#zg@Cb&Y5O$*7H*4H4*Abk7#%9Oc{4vpsoP}d?BM8wu>I0q$?oPDM8G8m+48R%u znMvOC?T(T=P!7BUDs6o3S>?}o5j2+G0aY{*7#GrrRZR#k(BC-IZ;gjdcvAlXT zhOJpiDtzSxBa-sy7k{!roFEc^GUp#cZ|$t{|9k$ah5z4c1O$js*~i$)qT`Phg%iZT zeI)$9D=_fCMa-S!-=2KK@yCTyx~i9xK)v`UM! zx5YKuI{iN^?Z{>9um{>kJUjz0#7M$&)B2>8!FweT-k9fm)yq}1`pD1L(YcPhj@?n1u6Lu)dS zjM_=XwnXMiwZcN#Eda%KpeD z;ap3@j|8dxFm5YDM<;XBHH?3Cwr;<;!c(jL)<0kXq>SGmB)|jq9k7-(AH11Mz`2lyGV5+JB7xbAgyUZx`C#gxTabI1`7q;Y}16X=gdZNedK! zj1m}`!Y+l)u_03`%a+hqN;7q#k_!1WR^B?@y1hQZA&FCo-^JZ;Zm+hPLVKMat-Z|h zPKdnKRctRo(hFYxrqN!DRtdRtepm2@CBN%x?lkp|_uZ`VFPVO7;a_r}fB+wF1`iSN z2MvcZBC)?j#orYP|G|X@{t0643jWsemaEbDcelpB|IMcs{&Dx3@xRt9;NQK$_z&V| zT4}zqm~J1t=!`<>8nFRpxRcgs10$W74zqhF9w$bVQbvP9Xu~Qa%r-V_B?`ooAT1c3 z!-4)u8DYR5iGxvsl-QNmDT(ovc#7gMb4F;3)!SdrEX3H_gdh3BWYDT?TiNF;1h9}9 z=Kfkh9ubQq>O74<+!l3y1iUam`a;Jmx$q*wOWs8nMYoo4(R!xKpY4(}ll|Gr7)>#b z%9-c-v(J??Q~j7<>NzX*)Zpt+MO5I!(!1OmYg3YpSqp|=M;qKcKvV6(NqCwVHhP%Y z(dII^VDhcLOI#KsXSn=>U2;aUe{iy#k>VemB4?cIAAGKyk?J3ed=+$*K_XcP*$Uqf ze%K>Ye{AxE(I0PFE&$B?;}4Ho^1~i_#wtUw%0FcOc~&8mVa*kFN0O%P2=EEL6IzY} zTvuVK;fS}=a2$Wqm@{m-$0&0kz6&}*D!Zb_v= z_133nq1z{8f5=cflvj4D!5ChH$K~@jv&ZD~3>}SS4c`2m6qCxV-zL;Rky*OFMIxL^ z%ec-#qjCdvtMY}kcS@x8p1Ia&??rbT*vU$JKV{k8DMro>#OG{l{`&*ga84!pqhy(Y z03ZKe!9GVFd#Lflu_pxT#s8d0_}_7@fq#OSJIDX;Yb^0Ury=-QCyaleNcdliRVj`0E?Oew&ham3PMjCAh1Ttr zfwoVh@lUnJf5kPY7XBr&j)0G<4SnnLq?uR8o-jE_;rjgW#GTaFXYbY zKkG_M{QHIGZr%PN{J+07{!d^N#i@jUNtu9v!vDPj|HtM;jS++*P%r)iBH`bbBrH|( zOAvGC`2RrCcsTzV5Sn`f@V_7e{{K3)@Q+(;#{Z1V1pF^(F#hKG+`vNg9h(2zY03nh z8>vRC_TxgQz{oLh9%D*5*t~_-F5B46i%=?c5=;_#3+ChVAYo>zj0*#`cCn&|kp7Tn z-5w=Zom%ZtP^!0wIv%|8v@jlot(!J@JQx(IKQtkUS6lxq(Q{YFgB24j`@sQ>S#P1LjZla?Gs7WLo?t!!iO-(fE9szgFc)t~c~VlkdZDavoXc(u30 z>$TAaUf!?*{FG;jSJ+~4L-0zBhS$Se47|>muH&^0iX~C$FKs-{?QVzu*Kbm;ME}-Uc=ro@cQ#+9j^|*MWL^M6`AoG(?!4wy(yF~ z8%bYDmU#6L=qq@;xd8WB(^uGHY(wzs7!9wx-Z1dma+8kNPrpRL>%y?&u5}4`LA%>9 zyof<0WvIvZ2T6gM7{I@zJ(ZefyHnxWd{|H4SpZ7GZK`yw>P!sH5EedT6ECI-99BP} zu&u!Xe^Rk+V-GDbunfdc#+e5%PXE&dtje0{Tm6h!UX6ux61XM5&j9Ov8Mw=U{)m4> z<#(N<;d}gb1K(?>>i90MiGuH!^NlLtUShCkcBX(YU)hY_f1{SSi%yS1BEiyXqyJth z7T^-j$FV{XJ2P};b5>ufgSN7HJ!}nH*{m1O)1%>e9=4Nd<44;Ybv$1$h{6x=yv>Yf z84jfA{E)9a3Q*`HEpPsC{hxWf?W*I6IkdKEF8Jvq2A<8r3UKIQOMV!(_}CEo>lO{K z)-M})eaCnC@$t54Fbe%$HP4Kfy_bMjw}$p_^}Yo&UM@?#5@|ZB_TevXH5VXzj3r)S zi-irrt9vxOetW^d>y;@weSQ8@6uiy}EAE{01ibjlUcK}+HI&JiK|7)P_Y@6kRUYVrF)w{tNDi53*B7<4XKg~ruv+y*Bvx%b( z&M<|DoLjX*H5UpcC(zTX6p)@TCW%wuuA;8w;r+jiQR?9$Tdsb{V~iwI#ys)yrw!Py@WqB)Y-*;yrY!=ReNEokV{ti@K1)L~$E<0^b zo$`>Yz9kpAc;&cchZB2}>6i^($HA`hY4OKm67eZHv;1>h{Nbe3EdTUm|CAK}^mF}l zaG&IWV|ZXU4%wnqbnD9$NmdF=Z^Tj!v=u_^%^pJs$C_^iv^Y$J=izWvvR?VOhh=~K zbg|JNy|WFfQU;{gOD+3j*kYmDAC>(BVdH(0X}mwH@Ir;ilW0db->i)N!5IA~lg3Qn z6b&iB?(4P1TT#mw+}M}?<8?+CSbd98*g*WjNhAQYCIP@7L(AE;3mSBytq?A_^f=H} zXAwx`gjh=TebxNuhQua=924JluW zWqW&;80~#!SkABCY1!Uki-l_bQRR=bqw(JbPZ|8TFZM8~^TR8?i^6}OEiePMy|=)B z`O03s{MXpeZRT(1SmO00EuX35)!AVM=wQ9L7Ph$8koM|jng4-aM*h#tG6S&f9Lx3! zTik0%dz~Atyl5HkW`2aF~Q|{-Hx8I8-8!bV+6e-gGzl2LIWPv<|^IOWhF8Io)uj!69CCNn;AHU1+%l54xI`0M%Mi5%q z4buRbc612G*l2O^)0Na;mL${RJZ7hr5@egtj-N{d6rHd8Tm5pepXp16_@|Um5l7CK z+rt~4CRchxeXD7jb23X?tDM=hE|9KD3=7#F4pY~hg6}EWR5WFsk zhF5Dr|N7WfI(=>XA_`ue!it-cD&WOex}xI+`3d}z-bA+MmIDhhTf-hhWt(~N7CZaw zQ)1Ux>%y8Bd*=6Jbv4-3w3R;YrcUVTnlG<<(sZqVc4D|LJ)?~Q`*=6?wl;{A88*na_SC>;}*G5+eE4-K-U zM~@)y4GJs3=UJBY7`AwYV$_S*h0*Z31Z-UEzir3pcn!oR!-)O&&Kt~lNdpCb$5)yn z)1!7?zAe9QrWyPC5OMohh0F5=qR{(z%;Aq6p%Sa%aT3OS#NHf!$wdUE8lEqxL{IXL zW(PBsKlp;Ts@wjy3pGt6&jW?w-%=<~XY2BW%rDIE+wd!z^nL6Z zN(B7S3oVy9y?(dTt3Kw8%jGg;H|=G|4{c`05A9~h4{c}1kFuX#%`4f+iyGP7USs(= zL=}IoP>O_SAU=u1@&z5yhjwSMqTRv9dvOo=>fXd9)%4B^$J?C$lBEKF>sf#J)pLdR z=L(TX<)u5?nz4)c+M-&Xv+Ga)g8@SNT!9ch{SP_`;rWC=dibel2>6^^e|eriT}Yo# zkfW#nbvJ?D&#OQEud8Wlsp7*Ylve4}j(i2rmL&rJPpv=wV`W15`EEn2^!W*X-d;=2 z63XAV{`7yLQ~p}{xd0zM{a-}<``4fT^9zLZxxgDe{Wp_^_PwC~^nJGp=?{z)-oXF1 zVgY}CV?^}wJfAM4&jqAD@Gl(_ z(zg&c%;9gZ6wwh#jru`OP1O;>QWs|CSv$YT&%;CFr7VxnU9?apVB?{%S5FX6om-3BkYI!V#2XpvG z_C^;T5T58=(XY@Y04`ODCo&b%Qw75cti zz|TT>G2`)0SAkwEgco!8K4%N*TL>@a@FDGQA-tHw|6VAhZy~&dh3_KJmxb_x@M?P+ z_c@47Y0{FVZV?q-*M7y7CZeLtLJgwL4>R(}Jlp6Y z_$tp!SQPLqhW$Rgzf10qXb;4{dJTUd-m_SaUx!b>XK9sZxh)G<$_4Tk=tr>fiA=&Im-Ri0gxTvIW*-y4wJ zr|l@Y7HV==sLA1Z-QOv>M|g7TGwO>QklZ4k+?(Jc==XWs#L~Rffauvg`g}ykgWiw} z=l9_cdUv3k>~^sr$QnZ0$61ObBsX27X;DR3u`6o`K@o60meg&lYkBcu8zS5Wz;1lj4( zUf^u?bXM6#eUs}!2nE`kTwL4_mOkCaxbxIKGH-OoC`~g?+c|JYV;i4*z}M?fsn-_i z4O|~cf4Aqz)g)=8Z*`RHM^3mM6_*IVPim@sJT*nzbf)+Mb7G{A5PvJhOy7RX8PcY+ z5Eg$$toSihzqB0JmIvlwDF3M%3xTyY8MvCYxmVujP2VOtGWSXgkJ>=JGfzVudeVau zi|$0^nk{vSE7|~3dg!PX-F|lgB_`L_H0ehdR%16$>>;#VMp*)FX2I?jZ#pZC$EKE= zjz0Na{IVYF(bn+u28PA>df}GBPgz^;v?GUF=yQ62X~r}33Lol&=hta_&=i6TPpyv~ zKkn+SEECfC2W;HNquR>|U>^8$=PAnysX2H|LjKvSUAcHE?kx1C?{+M{f|?tHBvLJ> zAreoR;U03IJQtg8AiEKY4yocW=HDNAE9#mMejGfiSg^z;$GEV!_`73KFYWC|m-hbo1T_zEL4BW- z{J6T4){x`6(t2+S$*uWtfg-9h6)Ps=aBpv^gL>FYpzROXdmDr{;o}!cA*p;0i<=AR zO^4x*4Q8PTcX9uK+i`XQ-RXFkSBBsk&3DwPPhjAN^}fo*<0{IQERC1gd~#E| zDn6si)|7zNp2EmAJ%uqJ5td;!J6J)KC{L*^nr~}Tc%3BQgjyE@u0m%)->L+D!TAt7 zW#!m_&Ogk~G7+;Xp{bG^y#tUd`O&wFJvx?P)*rI5Z&JGSK3FK0H6tU{;pe7C9kTh0 z8TD0SBVwQuxI7b-h$f#(EDt*e9VvucvHH@Bg0LYEtLu#b7QIBJL$6pUDEc*AM=LqB z#)A-5F$tVfi7xzjDFpY|rYK~4z7i-Q_?(F4)r6%FSo#RdvokoDUV=*Qgcdpt9M8@U zCLF7SPlDHv_ic0ty)@o^$ll`+4he^FNQBa^MQXrfm@8^=?@&Sw5m8e*u(;%TVtAdU zq^;l;9|5lzCD4iBRTa==60k?pR$J z?wiKZM77t(MeDWO5F7b?^2MQkl$r;)NV1EuBs-xS<@n#E% zc|_Vt+`Nt}rY&w>rz@tn(@pDi!#becUi57@$A*tGt###6?PVY&`a8x(y74!Z&mSOcr7AA&A*R9JQNCLg>WHM{eAM_k9pbmKS6(LL^a3gP3vasJQA%%dD~o@QHiMn)*ny+apti$v zDvrfX;pGd&U%C4TE^}Y9EVXYuE_2^r_pKM3@NJILb%3GhNNiyb+`nvRd%(@q2TftC zc(9GFA09%PXLpyS2dDCo_CkzJvjBK&_&@|pljPA{1Y3B73yDx@Z|OI3b+i?9 z!@CWO{Z_(Hf;Yq?% zMs9YIjanlx%*8$if83nQOSY3$JU}HLXRj%sD(A?zI(_mjknShoPON_yWc90abi+ax z{u~=(skEp7f#ujRa(`Loer3SOtd;yjVe|oZcOB_7inmf4g;hWgGU#P^QR(vi>@~$} zh<(4$KOeNs?>Vof!YHrJ>5o|l5|7Yk0?3&zmVb;-?6Zp`uuoXUTVDUTbT8ItPO?HGRKUr}ZTz8#!=H8GyZ?K6bq6Qa zy$ah!-|fsfZ#BEFmI!rk0=Owyr^rorgPXEYI_-8?r_;UQrWhjgm=&FpOk2&GA!!Rb z-3xA7jVy_qR)=y^@OPb?LiEVl&)z+RG(zZ9N&5wIkHAfp5Hb%T(kWU4a&c_u`sh@N zKa|H;>6CFgwd1Z^OFA8nJ7>eWsgh1CrNimeqT)I?4X^o*gNPSOr%HmakcUF2wM3_X z`lHFkntTw6UJDZc-=f#`klR5#@eQKaX$KoauU8`Jlcm>0O2dL)|M{EJw&tr!vwp=x zgwyNDq=wP!gFJo+y^g_cxR&(#2rg`mM6V+$ofDwf&J@pzUYn4IK(B)rpA5ZLw$;Q>>AuEYe~01;kwswc|b|$K}zQY z=yoE-v!dI}$U~spJ4>R`Z6yBM-l@~8CJg-V=V0{m8I8cI43Mt~gY^vlXZ+C^qHKwq z>Q0s@x8pdb6;ZAu_o&SDE*>JBC=;-P(-5K@#^Z-D(-yeu){-bM#|^NNm}vr~a{@%U z^Ebq^BFfjuLmg>uxaLXWz zu|LXa&P@l6u;wZrY83X1czJ~OSepN-2Q7p1*VfY5m+fd%3tm8j%FCfBi0Bkb@L@`l zzCt$0ho#qyUv2KWoOYIIiMTi2&H0U7dznx5VvMyfnNu)98uWw7~#wyT9!A772?Ju zqrCZgeQ%&7M9?C{_wd{`yl~T=THmwH@llWWrgb(R`2*Va;C;RHHv!>4!bSDO0yycV zu`yEKBD9!@*I~zoFL`Ti1B)!dR)EcE1T?m6ys{{~=86Q0^!;M~(Ba!NJ!4qZt8PEL%_GU9b2 z|46$$-08>jdvrs8;EE)+n(>YURVbbN<7>N`Xv}|+zzsKv_-Osd$j=*^-yO*WSET&T zttUUDJsofR>14E2S3&O`uJ4OeZR(+A>-NXXOXo{|T(^P^eKFLG+9iaW@Dvq)o);T4 zK6FuM+)aBl{(OY%(M`|58u>>|FNoXtwDjg1={;td9&aD<{UN%%l2)#iy3K}qI>h!WD+uuysJ>MqF8eA#3rT9B+rD0NwE#!n}+Q-0*k6}05-3A-6oUPit(caeY zJx8C4nWz2b7+ZmlS*@gvpicTLlH~1(c5b;8Td|3jjimGn$&tNXO8)|H5@U-E)*TQ$ z(B&HnO|GCOY{91p0C zDR8hI$g3*TrDjo;p?#^z&|F&?SBQxR@4v(Jz^LI*OgcC>vOlrZ;FXd6iG>6QMfNAA z80={Fck`#-Q}m}<9ke~b@z!>}=7p_Dd#a`M-M6%s0)MpB|nq&6TrjGARIIS z*6&+jtJGUik>cfCEL+x9NLVTh3`@l@v^YTkrmZBsI zhQh57OSTlGIdOfjAKTh+ZK@xyJYR_1>Hrf82d*^^s``mbmeYG03irDFUaT7=r; zO!nmFq5fITLhb9p7sT``n}*u^o9v?!Lj5Z-bcpePKyMN4aVC2*23OI41$dBXUk_3g z?a3xP$;6^RlIM0~JfW?05CO3t2A7P0nDFp6Q}ybS}cMJrAO1i6f)Ja2lWgt!c~f zTlsHphx~gqI{!TnSl3_OYlqEa9Dhd%21LMzOI}p`u|W`$5e=GHET%R{oe(^jNMY#M z6JKb-K)sDnhuitIK@lwiX-VzRU5UA|{x2P^+e}x@(B8$Zw~++)7Y6XceTra38xYZy zF5Z;bhR2&STWw0%Zws}8?d?%YV@1*eDxGD;sCsd!&of})9^^@AzHkYgQc^rN0Bx+-g>r{lh&(;zC@B}#Yq!p16Zaja!GX?m18jbJw%NvMqL&m$& z=S0QVV!Vs{!fD$~6FM62_7v)9p2&EYL{*72-klJCKG>^q^+{uu$Nn*PZ^fQmeWZK- z+x5A(cjM}l#M(cN-Dpl#9_d$bQtdP6?#9&T-UjsN3;L+_A)T5gTG7O$0C)01w3>v& z93@DHLUrU?G&XG()nNz8R5d5iW7jX^-34bO3|Wf4a6cbEi_tjw@Tt_sw#WLuEsgQ= z@tG&p9*o~v^52pVFY8PE=i0{d_lZ=9hVb`>@SjEf8;j@P)4_kzFli(HGjhgB;koLr z#?W^|>T}iwjjd0~C+M%FvZ4AEPd};pY!5`KPou~G_XmPLO2?Akv@!G1Oe(~Gi#{&6 zu(5cy9|V3*DmKEi-?Wp$bIy_|c;a~CXs{5sS7tsshx-Sesw?TrIq!%h??zpZ1-_Oq zZPb)mUb!o2YoQ5Pkm~baM{3(^>{uQj=9Kzv_dx}g0?Uv#Ir7bRuj8fdl7Ce49PWcd zXyntDyY|~o-|d9&_QH3f@O_%_-9i24KW846Dt>|j`3Rl1L5Zf|G?Y)i9aB`?D9Tz@ zfiKhzbLONUD(FEQqb2#Ml>SXY3fIPVX1~6x_L%=X8qz{@^j=`pZqgUc5s@SXF*eApmY32@=t;0U^KDhNZzes+L<**+h76W;}(R?D8Ai*t{T9DIM<%6rAo&-&gpQ zZ_rfaQrdy@04f0}ulfJS-gm%9Rb~H&5(q_S0MQ_ps8OR>qFBPlG64c_Uqu_ zV(bwT!5&PqX7=r1EUdU|!CiH+V?#j21TZuy;;PuO-x$PL2`c3O{hs^Yo0mx@nFM8( z-=B|hUb*kqbHAtDbI-MJRb0s1o#Az}#!%?pwyRy66K zf8J>I&-rgi|NIlaT(15(Mt4`b8iLnO{~Ud>?jL{V_l4Q)o!KNv?te-ljl!b*tUet9 zXAE!@*d;mWFf90D*zT6Fz70Bnwj9IH(>yKJ@Q21G;7>ZPY~41H{$r%y)3Yd4 zO(kZf3khrbEeHL=P@e3cZ%=O{L_7XFF8Wm%2W${J4?7`7cmtvQ^{x&#FHVvN_)I1cXxVeK#yLia+EC>vPNx#eWCCS&iB=uUCBwp*1w98AlK#+Eq8wUvO`a4zX z*%P5%A89wuMIY|*DMrt!m0x3}K0GQ{EqYxv&ebPx8%b8KdY(5WWG+5<>**um=}x?O;` z0br`6(*QexEbO|}0@Czs>Fmc+b*JAgG|uFCnwY1Om>Vkupx?1pyaB*(UBLXNt5e$ zz|-+D@N|QPrymCf@{)LJT@p{NOX8_@Nj$YKiKo^j@syYHbHD|_(@%k?6Nsl60^sS- zLZZ68H{9uJ?=Dt*AsC!ov6Gr>g41JM~C=;s2x2<8p zOd+Z@YU=nVMEIgbgov!E>5fF`v2R)+!dm3{d!j$If0f;SeWBZrLuw-JKVP@sAdq_S-X9tV`^gaeLOC$6hbnNgVQw}uw|Ywdg_7y3 zm*G;jsg?L0J6yyb5->-n1;UJHbR4XNDgKfz-btMiU&}jiIs9saWetV;!q*ydWWv`B~8}{?PR>CtROYL$i+G9EZ3Z z*QUW$c??P$tWSM}u;|rgVma6w$gD3q83EGNJMgY3tE5|Ar$FY?LY%=#XJ;JkGYZ-W zLTJ$N1Qij{K03fz8nH8K zk9ep^7#_3^#-spDKE@;%CE)yPEO2byFW3g3AXfNVqL0`8nafEZ7lJ-Mrsfvx^f6Dv z6ceH!+L#oR(Y*ZyHkVNn8gW#H%GMWNbpkFHu(N1$8E^(|4Dgc{Ghu)_-pjNErWJJ- zEe{1?DB`wUs83>!P?BU`m*1@m-=}mpG0Aa6(VK@TXK4(tJ1LuOJadaAeP_YSP zwL0e|3{Q%MZoyMAJmJyl%HY#{i%O5@Q&{l=f_Ve5gfbs4`zU7w%AuY0p6yvEsfec6 z%YJiub?nWcSK6C@Mw33T=>rBVW=y-Auy5%rcIxm*Z>7KJ>aBfGv3hGyKDB$R8=s=L zf>ie;Wm1qt-|M$M~A3?wN0Oz#aM`MVYv8 zI^dd7x&s{RUsY??zrD5-aa)rQ5BcNDhtrpV1k?aTNak9y+FxIIRXCL$v2 z%{xj&^g;ICVe+BwkN(eF{n1-rcvUxCIQ>ySGD<{T7)wMPY>S9Cw8?L5eEYv(&->tU z$4hpNdK|{RoqRoQ(_^moz69eQ+v|YW|JHuI^Xn%WYTFvei+PPY(TGWJJBfahp>}aM zI551e1otcHC;EH>=qLZz`~{wv>Uf#2QLD0J(%a7BFR*ZmtG(|JZ7aF`O8x@c;}pIG zZjaMVA_F(}IHh;s2XIYEhKmqP%$9>G{Z!~z+So${ny@%*K@%RP9aOY)smm*+-HxW% zP9G^l12G>tCF zed0U%fOy=|lcX5crVZFfJ=FFfg&Fv4xC4s^X^wc1x_walK@h8b!IHxMZ_8gNb#QiF z;B2C-ogSY?CAivqqVIo%PtE(!-Ml^a44{+vZ;7Ma@4>*Eo~vL_4zXq z^C|6gu*T75r{+EkmCCj;J$RCv4r!5lYlT?krXm+w;a{+99EaIv4LUgCTwQHaZo$U! zGchj8fqsV@kY)MLZNEeVe_W0RYWo~bnCuqBJz}e2pHnkuyL#v56Qij1rPfRy-M7=^ z@&ENzF`Ux>^WIEnR~7s}Gu?E$Q~G~C@h4Y%cd^?0JJDDFFW5(>BXXRz>urq+58CPJ z?cTdx?Y$=>3h8!`eI(ZYjCo+t+p#}`OKI4mfvp$+)BPFY#4F#5Fy^tZTZ~7x7==cG zB~O>|g`r`|Dks3LG}DX0S=9r_F>WCOx%AlF1A#gazK82;KOINwr`}iOL)e#a;%>}5 zyvx>gdhzVvWKQ;$4MSKoeF(5+Bh$KRdCNv$q-x|Z)0ln#Z}xA56OVY4-KP6&82GjB zvv6V;G#i_Z(p2A(k*>SwSgY&S{^07mmygw5$1O*)pW{JxRcre>wu;Nk|KHCca_;u; z=h$@{@J8=~h5mEQPLHqqY<0Ew#DV`4e3dW;-Nk%Sv*75c@P79B#qg`)9=Q}bf(9Gl zuv5;j!&3H`!GN6Mktqnz3IB^b^qmiPKJ~SAmxsGN^^x4c65tL>%kT-XsMzNxGG`s` z*3a`lx6sy-k!2=?I`GKri;(gnZ#bB*$___gAhM_xFfFfjrB zX}HH95E;fHoH&!-70L^q!I^AW2JSPG^nC_x9e9Wxk#v4zj8b<1-gdNiJ~ue2+YgJY z#b+D8uNJqby$U_4{yiYB_Fg*t_t#z?eFqb}I01otI>Wl%(U$w21QMI*` za}w~rI0-ml{zPKWto4-sn`Fe;Q4Oyc1D4TQHV?cfz2uIK2C@wj+dEH5@2#V((Fwk^9DOq;Yo{e);RLR{EjFsmdM_LP#PyF)f zJrj(9OXvcbA&2eTn)yJKk!*rWF&Fw~>=Jp`4W?-d1)YT6J!53?aG0k5PQe~6}JU^!1ZNjeZyy9BWW=!$wa z4(&c`u{!1-I<_zI0aog7MMM5gCqyX&woS-r`p4^nqUuHMcVN4EZh#6vpT16?ja{Psgnqa4@Gvop|uV z8QSYdo|q=cb4;?D{tWVDTDqUZh4pj(`m!Y0EQc82-yb;_j*HlnB00Zy5Ss1ejIa?Q zcq)eto%1os*&jM4H4vJZ6fi%RLO51Ff5TEMXJEj3BXeodV>P#vQZj$^lrpL(_zxBk z;Qu--2|O}<;x+KS4}?#A9o8zW9~g|=aRU}qZlEf`W6xDL9~u#!PB%}r^<=r;fDF}9 z&&$r|0=53W9?%&Oi|k48cI&M3)#~0uS^e*TOSJj@$A8FWNi`4PJGzt^bT;$(&0qpO z>i49hHR~hQ>WMa;mlW)9J=(REuP6CK2oe%HEESbqwMZ&^5Gt$fkyrow)1^ap=VN+mfFB0NcmNpJ78h|omfd8lk48puUBZ1D{ry;jB) z;HE&$KGRK^h&KVs%pTZ~ZGNFgnk0P^M;0&Oq7HPJFD$VlHA0$n$u`0{US*CZ4I_<3 zlAAP1zKHMfe1c7qp3-aZU}A+UyDVg9n98Dbn;z+lT1dx11Y8dxZZZTWG(z2RvIusg za@h)1or_rH{?KJ8frll3CAqS?AlD^UsW!QWDGTKwATbG6$5n9%7Of714=jI{L~!^a z&-FCpxw)XL$D#^ zFKoP~OOeA!m!C$_We}AIQ|@p5J8I@Pw~->lw@9U4 zJ%N=PU7&8ijg`6(mAV3z8l9nT!UL;PYt)rM5mMeFQXUBBtXP!S0=>n?JKc*>c(?9n zH&r!@cZ@CK!n;}Q<;?vfMAZcEMr}c!M6fpEo#gz{el6hL_w^CH(9`q zR`#Ayz=dt5fMab6ARXHN02cq^i6XC!b&6c6@=zql`@^=hyabVZ6T&Mev|C`KNZgjQ7&m<6WS>|C?ZdPu1#+bVh18xdHBGI#R=G zwOZiGCW56x1XJ2f1lbWHC`Nt2Eku5yOmd}^44EWfUq}^R+~!nar5cGUkSJEPLKLnQ zzh4m#K5dmgqVRxXw(7B03-ocsC+(vT$@!`NEzrk*KW+nk#DNDBHezQji>29ou^^F6 z3cnQ|d{gTbxl-kz$Q_FZr#{lw@vh`}_usRH@gDVX`^H;xuIksqcz-|p*B$RqyE!}e zf&YR;zx8-u87UI@k0N*Mcz^p(ba(D7RLL7jqMw6$@#TCS{UzArc0l^_#1u zCu%Q1=Xy$CLM62riN(L+N$48UNwGV5R;i^|+^H|TYC0~Q-O1Mro*gaVGRUvlT^Y9#;vk}TLLcNU82-rw2hc3F2Z!;O86K5?Y&`B~`r=Im{jy#w~P zD0|0Hp%K|x1p}F7bQ3#=fpdd!KFnY*w&ar#aX^VWleIO6_>d0WZ`?<(LpL8xVLIsT`O2Mi{TP-YJ(!M-tSPBWv#R9b2JbQy$O`W zYET{-C`kF+;#G=zZJJZ$N>z#3?ch}l28%YzpJxfFq+nb*dO|AZkQDr~M`_GSZ;oUR zMrR;>4$|ddQsg{VEf>boiI@-P z~RB@&H6P}U^=f|xO zwUHk6dO@@Hv)%_qm}89ff*y^iYyKQ`p89#$7U*lA1CeJt=u2|GA34XQuO+ElxH-Z)C>9|MLmrR=lqfTd$TS!BCXh7WjPWrz|oiURF;$s zeK|v4q^Kh!RamL^K@~_F!rvfeY&U-ckEA^x;i}2s(xT-ndPlV`UtNbPI`Y-NaxjQy zah7}~mQ!CuzA^+5M+hMmQeuLIe!i%`PxmAtiF^g5!{Vte5)mrBoWQdtYa6^^r|O7P zJ7CVo_Y}Jz#faDiY{l9{MD{YQ6{%~j^-))WSyEtK^JN{=sI0%^M2!kdt`d<-N<}CE zORhpGwz>aa%3CQEcfdtNuu7}V7r`oGudxLy;eWK>F5^tfx>iUqLuKd-uR0PJj*`BQ zSK!MMuW&jj9N8#d)lOnzU=V0`T(Z?*OSZD`O3PQbNEH^6!_%1moWAg?$8cd)VU7By zM~hfuuZd5@`t|T>9bMQQ`Kej^ew4jt9((ny?k(Wc6C>Kk|0L%Q$T=oHorav_<$rP6 zZ?ANA>aJFO1Q~5K`mO9WukpwZwv_yJ)-Epjs0H+CVZ39?)8mbo9(_drs}Oj&T*QDV zdC43C_anF=nM2a?OYI8?F)G8KxeWe_CgL;s;9;`JUsc};p@d&ieX88-Y<6?Pl13qW z`8yoUQAZ>-B^HR=7eZ2|xQ((?@SB3)H2g|k@S6^K3UwKip)S8ME`H}J{VTc^BKWSz zSlmgY*2{B9x%YQ%N?#(6n{YM@8K}ib^oW64j6{zZkR}aX3w1+;H?|_5SHvfuXQd?wR4FL(H;~U;kcajk+*Z8t(od~6u_*~f|4;~kmi>E*|4>Lwz?>Z1RO1%)m%KXA;n z%M4>u^EqZ96z6a-L;ciAh6VX}J-vL$Z)A$6myz-<9;APZCzzW^Nht$fA|l@SvK9j1 zkc~tM6o;8yd;Lrj>vQ4nN5-*ph36GE1jG3NSz7tS`Jmd$)Rso()DB1EHQwm(e*{lB z$~fiO=XJd-XtR=TcW`e}{zEQJO{zUzTsZZ9R&Z5+In;F*(?GQY;BZwqg_$p2(`FHdyF%xP5hsl)n^v*V3Ib;3)=qM zv4#12`StCazuNxWp@sRo8*;YiuMDUt%`yA|;;{dI{|bEjSu6$TPXsxBYk6T>q)6C* zQDocZFRh;`@%g(oJKmG_qS3^*uQe+l_7b%t!tnFei3u%?_N@NMk&{bIsIk4>&UMGP zWcv9uIjD~su+JivzuQpcZI5?r_L16&qQ9;X)N<*s@E;3Si2v9o{8;$r_IHB?WaH(K z-)#%Xy8=}<9sGBDwOIPE-6G{*?v!uovyT57EF2d_s<2Y!q6(yox1um0mP=X-@?;zF z;HF7!#RDE!r}}U6LM^Q$epBA_Lf(t`LmqKi`|v<=uG-oHef$^xtZ~yv9C%RJ!Pz;9 z^*=!(n+|>}e%>KcB-Z~>S^jqyM7zo`6`}l=ey1a$E zJJnUaS;bq5IRRJv!YX3((ovBru2CtdBI)VnR`|xR$1lEJ+A2Lo*_(Wz7;vglqZfs&hgSyJocv2SDc-BtJS{+xqfT>=oKjv`X7pn3qMLWrWqwyCnXeO zbvY{;doN%NhH{4OFJ=}10*2$Oleq+Q7%3y8!Z1H%Bz^iP-oM0YBG&%^14vecx7?ry zi)sqCXrwL1rax@gL;jx9e+ug8GGMxHRK}Gk=HC1wvEO)KwlA{co}9e}OYaLH|-e(m$ORSU*T3ECQSjI{O~Pf7g_;zoCH| z;bV`*wb-|v@y2*fPBuc9q^Y;ZJ0kH)wX9yZ^DVtu5nbwwqJT#30^8HS=go6eGPK_+ zw;6h~`uAkJ?Po{P^PfR$?-usA<^7eST*GFeejz~E=WT29-JbeRI~4Rl%ahoDCGTeE zNBig@Lv?_$bO9}$%-{EG=MQ_*nJ)YFh96s_=WFc#hSJ^4+&pPVI?fWNE87mYM5j!2{FEHZ!3x9ih9o}CnhXL+iFl!^7j`aITR zWQzJ47uFKyO7+1Hx(8OZM&CBxJ=JLb!GaZysh-jhlejT&m+5*AVquS~VBur$xK&%Y zBlaM{UvqLE<|4pvawOb$7HgX#g|1fVtZf+D;{ZO@3hYX?r_~1Sx}{;yg@Ob{LBYtJ zjr3<5`9q3&>Rgm;NPV#W@qKIbGsPaS=ILil%k%^PrYw{vi*FhF0_%UQL9x_ejoL?Q zfc4+l#DiwHySx>*s&#%P#-ox^G*n{{{AV zH9x=653@B0`SaGd|N&K@EBf$4cdG zt$m)-8>Opld8Ii_JIhUzrASUJw&asy+^8p}Vm*t#cMqOz(dOOyB3a#z3u{Z!8g}~AkX^}SB4WLgOUv#h8^=nR^Dr|%;=UpEqPu25*UEd1U_lPc(qp&;ehqH8j8598$ zR=WBW51id;uh;47E^0-Xa?dAE>7&v;Ey$Rj(h?@2oN3D>w9nZx$w%d~zfbT_@9T6# zlB*I~Z@s_sVtu`V?YZ|l_CNMgWM9B7slfKV*baJmk!kjjb~F?{5?grTaz@#5Pg&s} z+ZxDXSUZTtj=v+uBgHV^_QMIp?B>UANbJPNp*C1GfzQQ&*Nl>n>zy6q2sTvDUE+T1 z%MbIie%~qS+#z1_HTpB$`D-JTsRKXo80v86&AM74DC#mFN*D>Ep>Mx4v8CJo$NK2d z8mNV_G%EwmM%zX}1ec2V;U8Con-18h%{|p2tooXxGg!wX_%w5kXU3w29JFDvv2?ig zH3LvcVK~MKu_*>yj~BBV)|*KAg{jFB+Jk3S1;S^duGp>rZSmB8355sKM->MvCGoE4 zc<~p?%<&c-j-#`9I=UqKs&*g4^cG)(6uo$!Pj|yy1Y{__8X0^O2oHlIvTM-n!~3Fs zSxi@mBg|i`-6de=;AEp}PZHoD81--D=$CtO7olD{pLC;1N+c@GzQ!A89nzJ!XZdqzwuKc+QS$$$?GY* z$1b+8r{7!-2V8Frm! zOTaX&`lGIXvj-NXkrRHH-eU~95)I-_EnX%WY?Be{P}>=gkPLySav+}@_#Ks8ZX}nV zo?LuGatBXY7m+}_1~PM!Jf+{0@;Slm_MzZp92oYtr|iFYB9M zD7vhAFq53(&8p5y25oipqd@#f3p)o;q@Vk>!+uZ~&c!lO6xxAFl9Ln&b%$>ENs(GKW3hRw99Om^p11LOQ!jP;~j|S-U7TVW| z9KOZ(}3PLdG^bXYHvff-qH*Da7)S>#n`LfgXmdtK*rkft21 zTSQFcs61zyMiaxBJg!D${;=+T(e$Y~Sq{4nyj(rek2>LVM zDTHBX40`3eQQ@A)Y5g4G_3E?AhxP)c0(XY?@>UP7N1+|1%<$lPf99g1cLU~{0NnY~ zS#=PJLW>X&+qQK2ngnc6U9g*1b1>f+@q2J$gtTR#&f1=V>htH;2dcVrszi?AnR@0M zINegM`UOWMHXW=JWUwC8gVl(CwbcK=m+{ItL&ghJDaQ$_aSmd-)N%qn|EC6D~MfeE_8eFelV8+qhl#30V+^n>$bEHk$h zVK3HlPw6as(6qeancJbfqtqO{bZ9w10F99ORfYMr+?ii%ocR?yJ%qcW4})O{tbX$x z#Pa#M@VG$ujHJMT4-ZRwa@hIw}?bp}tGww>x|JmVxD&tmo9sn*a59yT5?*ft2%=C}4>eGoNR zFGU9H6;J6%8La%~2J4jw5*`L5{0f8h6>6!TM-}PV)68HI`B8R%*Kl3r*TdDtPgz=z zQ5S@?@@IZiG*Bki-S!w^pMIS9SM7{XY`g?5a(n>JL5z<-^E-~u=@_5YO~cP6XI0RAg;mD*d^yG$pJLP-vno9@s}OjrJK{LBIG=v|@!10tJO1%mK3tDa;?6NX zBQQ0r`P1z9TnrKC*Bl?srSjsKKN~TBHgf(Dn?1`+b4mZiSKWAmgafv*9>1YY!(T8o+qPx`#h=u}tT z1vZ3HNdwoZnWG@`S~w=W=Ix?P8G#2PBVg-)@%DfG@?3b7)&K7nqW{ML&Q`kCujB0h zH4%QZC*}jS77^J?bO=Gjd|RxtAlbi)=x$UT5GhbG2x8efPw6o9B-swu5IbWz^HS{X z2>%)8cZMPi&nZVAP=ZP`sy1{EbW$RJa+5Ar8q+7@e9s{pAcQJ(WqJ9qV(u>NZIonc zRUlvvsaGq&E<{WXkD4u;4{?NDit|2MJtFTf!KvX_Ekl^S!o&RLNg|kHGt2NK_3pcL zac9)KH;mB90BqbqW1P5Fb$Elusxk0EAB8w=*a(Y^bDWF~b&Ae77a7+x;{lB`zNz_) z4^j{R7y0U#e#SHj(dRGu8is*hV6$StWAL>!S{|Woa0fM31ajHkIV5|m2Y`KyvzAwE z`Cd=E8^hM{b93f8o`j>vxrCuX@mL- zqW$gphSt|mB~~t4Uo&BLfO?4lwD2~o8T6hv!LF)+C`3H_JqEs}U+ni>sjJ!YZp`oJ z@%y)9zpvx_`LW;6;rqK{zc1$dt7E^fE57hPe)V=zlGQP6`O zm=>`>5V%BFcj6`cO`sX{-7}FbzVX9uYJ@t$m<^K~;`e3N{Uq^|0dk0ud|5Yav}4|O zwjzI1?RWBH2tq_jMn-FC12;1zPQqeXPWV+g@uzEOa+d;-WtzHJ5`?i=CVYmW&c>Z* z?(qEbAqI%hLjgbt$o(;lVZOYw{Jwb4DE` z9nE2k=ghdyaEwDBR@}pk$U~@y;g4~iM?rZQj=YB9k8z$yrQtpe_xNL+=i!L$Jlu-y zj5yEcaM;g>Td|!H=UMYH{ED9heJx`4pS!8hWw%IEe>6f@qPAChbyF9vb2SysfZLZ5 zI?7H17eDqeY5}8v2sJSgO>zL-{i=TIB)sT~O_cM7Kqo~@;UfczuMp@ZB{V-G{>-(W z(z|F<)`V&gjN9=X2A6s(&}I0PB>%i_58U?M)8(TRjQP)CP9~5&&pYsd{YyW+``eX6 zJ##Pd1_mnZIjiAeWRc6>k;^`j%iSWEeIu8=YGuQFa!B_APO71J$4y5-+_ z&Z+VonVsOdv$C|Z@M6PUrQR(7x98Mer4s5$;gN0_i}Hr90Ff8L7*Ji*gH1?d6KcVe zcU$2n@eeY*5O`of%v@A>2G?l#q-c|2f|6j%U_U@wNO4+kn5QQh4cXpc=pcUxx@+j@ zKnR^@22oZv2H+K=Q)R&HTouU7PAb|x5IUx+c7NJvB?n#jqd^3v#Yzoc^)v>ZR+WS` zkx*e3sClfLcqB5erwl=65%Uws6LSYQj;ok{Ngu>M-f)6zq09ml-xx@Xn741+j0AS+ zs$@0ebx#6@O+*Ech!UKbXVugYOL%1q6&Be8-&&rZ;ZgZ2WzBZY&ey(dG&@hlK(#hI zUwu`#4;EOo5Gxt59)*p3_4n1TnqY4e-14k8wP!wGb^gKpuj5WSpYzetYQm}(=JQfT zp1Wh_bC1iM`JBFSCz#I;@w8<=FT9ZR**mD|e2!v6?n&87KsbBma z<%1^pwJ$`ro6n-ih853nV(Qs)2|uo?bamvP*aREZNY@(G`Vg2j0<^9FxFJsYSH#tS zy+8jw_FtRY%k8OWEsv|Ush|BGTkDp`-BY8fJc%9ns$iL`scn}g_xrRFzuG@8ekJ_p zfwsw$x25{|U+3R9|9Plcd9or(o_wSkd6FRYX?2AE#NNdG+w-6+DM;Qt(cwXl37y9y zQy$t#rtIgOukrg4Egd?tSP?>Rw=P-^JddoX>}ZP>wFyt=)5fH_z2cf?vH8!s4ZlZ3 zvD(|J{HvR~&k|Qt+m0w}K5T?2DRCf5d*s=DudA!-y6<&6t9~j(cgLa#o;1-`q&<<_y!4_58)CqODug-UIQamzo_)O}uXHMQ-CwdT!6h?N%yVl}Z3(7u_W z-WWy_w(*KHP~%lMLTVGdYNLIB@a|7nlpQvqLj8PJa41 z*8!uH^*e$5feNQ&)));{2#-1GtAL51!B{5@pGKdUHENH} ztS^GbVwcLB5O9KnF2vH{kGu+Bfi*A$yQ5o?Pt#Yw=Lj7exa#E#;Ftow%47NT*6g_# zpu-A7pRO+d6BY{n<{5D>6#B83E8c~|EYFc$WuZ`?QNV^gahiY$FUOqI05>-*7R!VO5j!bMms4dMjUZ;HCoe3()@Iba^PC}`f`wf)D8@agEh!Kknuupg~*j*-|kfRkf; z!k0^>!JdWQ?cs;x(!N|@t%XM&JRyc+B@q3AmHF!s%^1t#8CVt7D~1 zHx5nB!5B*q8zzPXTWON~4a2c@XSdWKa>OBg*tB>)>OML-(xiadvnrSwOyE*uYE^CT z05-DWTid`l<-nZ<}1jTOheMiY@PPl-mPw#i3xI7w@sc1_aQ zc=Yt@KQtamQ@1_kYHHi@=*d-$@QAAuFk`@VEVloGjECiq^k=M7Z(%G5gfKUkvFo>` zpijdiGt>|I!mBp&g8Qb#$4o%<4a{e^i;eB7BEQT(8CyzD=Q4A^yfR(RAu`l7w)*@NwlO9v;Rc*!+~K$vw7f;q}LrtlN-oB6v&%5)MUXd z0WW8N66afk_z5CVrz+}+Bbe2En0xee`+&>&XC>9bfwGek!ZbcNsTNxb_k~-ERi?P2 zEae0=*sMqe9R0P8^5D3_*RuB*SGcpvgF?AOpKL)MybzIic9cD>c9bIzdIb^w;L52( zJZ+H&@AVUX>-LOBU&p>=yD7OB!J4iQhlBa*lE+<;6dQeyS^j%OU#GpT+UMz?Qv8^! zsclE!qn0&7-$?+l*3j3gUo`&q2j=FfY5fI!eQK({NKset!U12Ice!&KgKvB6{f-Ml zGqT}M;E%?2e)Yg3E#T80NAEa%8acwjrvjNXe{g(qh^H<1v~4KyDQEZX#wSCqob8&l zvGM7SC4Y2$GSr6uxSHB_e7bdUBYb)~K73;QH}QlvAs$kRgO@R7#NlwRxdOweE!f_+TUg542eBn5@hrS{=R(FBHJdH_$Y;4XAImV7CtLaf|Xhi59m z_V{a<92d5?p|yVST+8}zl)tTG)%DMt{z(S^`(3UdJP&ETslV<0cA+}@~TFnm3%bJy9{IqC9i?{8|IOSi3amnVsJ?y3}W0@&;l z-xsux93mQI0&LjB<`^6zdNS^;Lqz>;z#7=t+G51B-2H7U-YTVhmKAT63Xh-_FWa%= z(dA#PcnEyp81V`Xv-2XF-qN)t58;lS{ju@d^KxONf`MTdBNKahco-=xdW#!b^w`<8 zy~UQt%Q&rg+09t-g0Pp^P1068PisazhsbOr-YxMM@y^I3R6X3&C8o6vuf#w0ko#Pd zI5u8=yWkIvSJKpz?sYY_?RfR|{6=_H5C>k#cr>R!BL3qp=ujH(GV}%FKk~xSA7#2H z6JcHZ7>s|8`b?F&WtjcQ+?rS?is9T)E@)#~vp*(p35j9L_(uH02OaTlB|; z#}SykNiJZrtj=x2r%KE)75ay3(#FQ8Q|JDn@kyF`?_I8@wjG~FKi3GK^3Z$jlBbeY z-~S{5b{zi;DmC=Fs0rPJ3i8U<_}YUIcV_IL-6X2}fs zgX57yJZ-_FBjEnt(6_i#Q#@)`pGZ~@{)KGUrhks8MgPPiH~qH_&tyGr{tVY7kBw(H zJ@tpiGimDTJ6ug|JD%M*rxBi|U>I7%v-aST?R&A4`h&?x486StJi74A9fwD?M>}}r zeR?O5j~wD@3m)BjIPs`%Tkl9a`l970JdJA~;)(+g?bJh_K9u+^n z6X20UJZ-_FUEv(x&^Pa=rg+q>{Q~|+h*3Wc@sM$W^>2NV&hrsoy`0@?`ya_rk0rji zOc)l@>7VxS>o3L^oYduu@jI(MgMqKq9cByjWB3a@E}lc?0B3&WJ+c$b4~KZ#GCwxK za~u2LHpiGBk@FQ=_Scy|i~M$e$i;+W^V^#q{6q6wY3k~7S5w>0Z*P2{5x>nt@3kiX z$B>_neHmEg=yRN5T7H`UH&oCqKeY#s?$ZBuR(>rb+4<%c@Mw>7cAWn3=s^x1t(6(_ z2e)T9#M2f$I%hxP(VTB%;8FB?!@)+_EXL$ftG(#F@W@>C%J;&%Gt`UvB3V7d3x{#b znBPsHielWBy`%N@VI}32Zr}W$)oA{wAj{U~zs%p7me+T4?DgF(2IIXsUUmL?=gt35 zufJcrXNSmsFwb1XMjN;cyDOG6+*{6Ve26l)P$nFI=Qjf&Nt_;YFmEjaM z<6eo5 z-J|f#ksTbt&=F1)IgXj$zu`Zi(uyJ%%p5L<`XE$X?_lPV=Ay>=5#c^UcoAZ>7lN;} z7J@;vv3GNf+M9SVYf}t7h+95M2koeS(_E7_wtVvO-G6BLM4Ea;v8$H$$%8<+Ee&cxz|X zw}cW>Z*b5tBZ7|B`ti-(cbt5)a&JezsgoJ@2bXUg;%SR~b3-!mY;8>pJd2iZ0+t66*jlg(^Vz?os&tQw)e{nx!!=Oq0)B|X{bQG^+R`hz53J>wQeCu z2;)vdL_`QON@~(;-ukhdZMgM~bsxwRzBF~FF>PZ$DiAb33et^?N4x~g$JcW%n$NLZ zBUF@N#Tzde_^uHeS8OcJF8AO~`Pr!jo?h54ND#;)x5>92=NMrGg~dSyMkqK3*Yj`< z4nD395q-recNd)Kg#e`U8t^o`4sUYi=O9NFxR%vlkM8&fq7fR1lWbf#ExpCP?eDZ2u@Gr#lP7@Xx_T1m$@e?#Tq;uE?i6#a+@{zf=hp;jb_3)#@r0&+?p zPqE736>y1F1e@fB(loPdEy~9&4oiBK(ecA$AwsNH{ol}YX|_@FlXudwMgtDd3j#H( z>|+P_;*o=hc3N)?sKO~tI2EOS->bSd^j$}4P)Rp>iLt>tLL5XUX*9yLTc-jp&8BS} zEj}$ZUkW%*3J9Qzt(QU3`o{&&8?(N@`36RlU2EWImvl8k zA?S74EM(FtXs%|`bVk4rhu0!Q^SyO;~E#WAaSGLpJn@AVuN z&qApf_ODKOYD@i)b!ykML0W& zw4l{M1l0 z$N6lglixm@e`%<>(|K{D^CJ5*ytu)6G0}N(T?J}zf%78hy!Z|tfi(f=#WBu{i}_-p z^P<1=;-l$!v8VH*BVR~kre1=^aGunBBS^`nep+Go!B1g)_KEXiC11#Aw_a@b!2;*) z7mYx-h3eyug^yfXo{}s;Jp3*7Q4M8{)+s*!&{)+O!Zg?@`ONYf%?~HBvv4Y znrU67tLeC^St@DSX-_f}DWWfnn8hOQb>80Uy!`_42p3dhM%5HMZznqy7_{-1hT0;O zK3kn54}<0EKq)fuoGzTvf~|=^S=WZHR41gUJz3M~!A?nEO+-B?_tgR%SjC>stNr``43Uc?`-SMnEs{N>+f{Pi8(CE*DC z@qRddnJ&+|zZ$>%{x<9WQR{w*_4~2){AcUFUye?HG=7<1j`e$y^_+R{Ykk9f`NwoO zS?PHFPwVvtV~Yw@>-RsUnH-!b^T2!Hok_Y3fAFG^VU!!Y++`$dk{5Wdoe@F5z) zODrF#-#!1IZ1exY@PTQT|ChIs|JRFYpxyi*M*>!Wy|$hIeR)cvbRF_o%PdWz8Wfn8nAJ^c}%+%u0ytIp1JUPOl zrQFMlEDp_zfkQ8PSUB{|Gc69SId2NNa0*X$#`#ps*tTg)*u-&*iB~D=#k;BgM7?VC zskg~%ewm^6|EosyG_@?$OddMX){sW*H1*vCz+pb&7zg*HsX2w5CsF0{8=qRvZ=`a! zd`R`6nM4`t0V`3OI`nIt6V!a78=XYi@5fAZrjw|kJZ3wNbrQXMbIe3uC(*FjiE7L3 zZhPu4F>|VBA~3o%b;5Xbo5&7JaMG{t)Y(oJ3(I0=QQ~CbKYv?8%{1rhi=D4Gl*arz z+xhyR=b-{*qcuaEEDmy29s0}fP@pdMXF1tDp zH5Ty$(xug9MNSqgr!`v+WPts)Aal@Np4#JmEsFTmF4k3w>cp$&$t>9^`i65+^elGP z?oQD^{l%_W&N;SNQjcR=^;o{gw}g16XHwej>W2_x`#G5&a6 zhQ9}_UtTZA-&XwXe};ZH9KTF=sdaxVe);`e>;7HqJ|R~>-v__UXNYxww)H#BdVZhv zyTp3Vyt`U?F<<`i`x+}9uXp{kem2nhJq5p4;qM9S{#EPuOZ<8OnPc(C??4RLm7()5s((F7GhN=g> zRO&5DMw(bM^1#NRElZad?prOdIzEl#uwXfvBU2W}j!>BTe{EO8 zlncW=1?w26cnkOQ%tc*!p03zb1}91HamW$mCM(HX+g%!?&N%4jhLX>>u^T;ePebc4 zVRO_euWPT6IbygtN?TTDy6hJHnz5{SZoVB=QBPe4_BU_6Cn4Ysd=<^ z8S}#YAI9j}uF|W@%BlC~E|D{sH^W-uPU^j>; z$%uzm)HP_96$>qdc@~m?!76L|XnOTGVEt&3fAa>T>dQ`^xr-_{bPV_Oc3eL6(5kHB z%JgiUV2t=iW$TLGgaJb`z$xZb3w1U z2ImZDf)hdAxfYablMW}DKXZ+qV167%hJHnXVWJt&S6nb&OKKYkchi;-^&*xuijf+{ z#%v*-t;N{QQ+upJ{sFVn2={&V0BAuNCFu8tz;Z;)k0o=*`Aj;Cg-H8|fn-)G~+E?86*VY>(eG-1B6P z%oEiJKPwu%0kf`c^8}})=}8bU|Dq>BFflR%c+h%V=s!ErPvU219h)rFuUi2FFCyTP z=Fx1M<~cE7-o1O8Ci=EpPrrSg)S7ltyUG12$>588P3~>hFDJ?8v-RgAWptWX{moz! z>G0_DuwoRxJC$RPwb>NEIXS~`eggYR#F}gIYtoBX0&$GZIt?el@~mA@&RS4Tx~7~5 zH`=@p!5gbKXIQeU$44do(>O9T&Ow>bOB zWqvG)k3U#F6r7`W@2jVWj8r5S z%gNDWqNeRx?$68P`26qk`KuRLb1T>NJ-RE748}?ZCNdx|cv@bF#)|oo&xK z!mYQFeB5ZBomjJj=9wLDRMS%%=iAcWvFBT#y;`4d_5Is0-$q>No^QwDuIYSBk*Bfe z+j0Bu*!lKQujc0)c@nHo#66jF;O5^U$R4NOm@gZ|?%3w3cjhWiy^8bOIraL>=cnk; zPXl;HmObN}dhfi-^1aA_Q}67%wtwoCOO6Y{zgnMqfitzVMfD2O7H6P6<#?#M=%Xo7 z^Q{tm&8PX=s?Y5ChS(j@M86D}AAzrx4_pquMm4em3)U(9-NE7^Uw8M)S8jS24}{>G*&O?T02Kk^?vaA-(izCBdma#=gvqmx4 z;EiO1>12bIr|Y>mQ_n?Cu|{*Tk$#e_<;^HL^Tdzs`Isgr9wP$zSO}Sp1PK70YU%nS zMLN2EJ`cgZ7?V~+93O>I!yMt(Vcf!Kb~zHvgeW>o#I5Xdh+?E*WZ$~7A24sWX!1a} z?otY3!t85<{vMIfuIeH5X^CZ2-fc;ZHFX3vt-M1XTcaji(oRWjz)}wAd1p5wFHX?VF91OlH*aEN1Iw7d?1)iXDHN`H}LAZ(aKnWB-rPgxx=#H=%J4g%Y= zvD$!H3GFJ%fVpWoYz8H3IXjrA<9`n>jq3|Mrg)*R1-J} z;+$bMY%MZXE1z=PFz?CJHq2zUdF`LMbP!Hr`%vya9436ss@MifF=H};WyX{W;%sgt zJPqx(lfig92X;*MWFtG~3aklgJ0@RgJLWv4meI5loCiDRGGBcaUVs;F3aA?3@njks#?@VL=pg$_Ky>l`>L)+_}C11 z|B5&gW;Me;1W89KNF!4nX=Ey-kz_gvLmJsnOCxntl8wv{rt}!tP}{qqZ|Nc!7Y*}g zW56~l;M<^pceNC7>SO^p>_M4^0)8OwAe3YV25d&GwXQ~|x2S-7i;dKjWkZ41!TrkNBi6`*W3nz;a&8{#=O30D~V+hUZVfEYYk? zXv4C~@@bhv55Y?HOlK`(*^6rqy}}xIo!bH(+yE58bXlop!A>8UNS087H?10u zFRUaBx@WBBA@wemCAcAu&(q}dbM)u!k+QycndR?|3@Bw?^tWg!tHM4c*<6v*C_E5IucdeD*Qd4S}ZB%DxFuP<|{epPVYIZ*^ zWP=Ywb~KF>Yk@9=RCV2afT0aV+BCk(HjSe&Vv!lH;|CBB?+a)F(MQ+DX-mjp-2$SG zSQ#JNrtu8*%X8Wa4(a?Z#1VwudxI*k*3WFqc!HYPNi5^%&JoLag7QHE*OqbGTasef zH!GkA7O-k&;wx|2a%aBVzNswH6Y#Y(d!~iXA~V|PT<$9``YTv1kT<&+LM3cIjZC0k z;j)GxO!jOfn1`GywbVHqb3J%LyX~JBSWuj&j_)8)EGBMEZ`%F|Fh23o?gGYQ{{#>- z4Ujm`LE=0h@pPnV)&6P2?*jB~L??U*cM+Ws@T={g@)SnlX6>JO>LCOYv_Kcjy>#ft z0-*)EJ{xp%qD-O$-5k0sZXOep&*TpfB4}XCZd3=sW&JFI*m&Nhw zRe#ZU9BfMM5D39XKh(=Jw-3&H(mBf1$wNhpyiP^EU?8*A zohw+&aNprr@wKxa?_?dEjlALiX&T5JtK%U!17cT;XD*(Fv6vE){LQ~;fgDrSoL+&- zQ6bDTGOIkLhm*aT;+=uYKF6B-N`EX$_08?zE7!N4xmXDbrmGWQB&!>jZaZ^y_Z4sJ z;3?~>JDEbMZy~%7k$GWiPS#808{EB;iyae*A#{xFnecg@Pb|d^eI5+Y+{9~eT|P8* z1ZKcUK=lEBs+vaVrM38aXy_$TKFnVN44PkjV?Ug^R)!bm2ci#H$*|I!LKVzsm{)q? z+nFrqA$23}XMPay3|_4M^JfMuF51n={BCmBdEAOqn*>*#%1+9$+DT0z73@>RfjmGZ*Elj zX1nyFt^{jBC_Yaw zUy8>|rqs*8Q*^%AhS>i!H2Hkx1wJEe7z5X-YZidq0-=Kgp$kFo7kVd#pvWL=k5_gW zc@B{uDlC@n3(5ENZrqp&dozYo#=&2*)jR1Ze|T&MKe~9@PYK?Hgh`@D2Ft-g_vDC{YCETC~E*-q4|{@&UA_WC;9{`oLL6KV3`3 zV-GHKLXee5VU0u2JVDgZsyWe%s8u%VXIAq1oPc>52I~R>AJ%NwLWJ9ZQJ|`>ND{U% zxVAcb9RMX8>S8wL=}Q%OXUoQb39b|5ijK|~oL=Z9jhk=0nGo55M&dLj`{p?ZE-f|dxcu~hS!MtEGg zB@f~voOmM=P#oObR?IQUKe!6Vo{2Wzy`k?HPeVCxtdu_hWhkPQSKzLxQhtp*%`UIq z-C7d2^>9@84oL8=ON32U3YwJ(2elv*4h;|Q3*>*P0mu(Z_zEhGul!m(Y9bN-14&#G zVW-u$L^#`$22|8>W;9I)juLtzXZ! zh@C4LdruTWamGC4Byv!O_*Y4Oafm|O=1`V71^`(BR@i1q>Sg)-hiv)0J>udGlEJgc zfNF8V^-m z4@x_rIG;HxSB^noPpg{t-z39DL(yf_v^i|hwDF^QKSC(AjDAEDf2OTzLoPF*Wiv5^ z%0VZRpWU6B1BmjZS@PhtB@_>%wQc6RVx6UJhu8Afd`NJk5|bp2Zqr!gRC_$HpV<e=THI+gqc>(@vlb-%*S_$X@i;b5)`>Wqik86S*{ElE0JA4rapr=#ruOKmy2 z9=Qh1En@%I3&p{Vf$wUbupTmn0zarDKPVr!9&7^mFm4$ht<{g_VZwr8X8TavIqd0M z6Cs5LLJyX+vZ3cHq|Rlsc!p`60~WUyk8B;nGV}7aun@jOl3B=UembsI$CEhh^_DK2 z*hBo>f%h|5805Jmm4X66C%U{_Ht@0KwivoaNupco(&bo z$*cfs2$S*;tc7D>h3|Wt?8*Gvu_sTelQDJMlVMf`gTF2{XJ}Xq%O7s(oiORf*cRn# zymzf{*G<9t_6JzsZs7WMbEf1?qugBU9o#kLT1(_9S7BI_W^KrC!DrZFUb(h81Iyd8 zs0dp!9lQW1lsF?kUcT~lGB1G4Y4l8VtjJ_uVnv2*aJF{GkoEgq7&L~4hry+-?}mCb z6U-|eHS?9z%MHtxjV;J8A&Fx_&Q-&f+RUroVqVY(B6Shw)nv(C1~*CeKP$izpw&bI3)IK)`PK6IllpTKOXPd)>}cx? zu_6;>NCuZ919H&?MHUy$2b0PLA&sqQlq2Z8)fRm|n;o*3m1DlnF=DPxmkceooE%4f zf0z7T1><53ldb&Hs`Q37>X=|WH>E+7g*Mpg!&lh+oe?%f?q4w|&q)g&wgw%(%M zqy{5U1AboT{(OBLpTF@Rc1RC?ZUeSgShVdYF5ZISdcq}G^xu!QSakD-a2JQ7y@&ow z5^&*r*+;XXCxJV$ca_bT*1|#{{@ma4{NvhQ-k?Oh^~5z_PyoHRy8I7F(= zy5)?=&i6fe3)fyJiMOV!mBOc1=jh#F>8daXX*WT{(GIrH@dc1IT|GJgyR-7y9-wWy z%FpyB)KpvP3>CIANK<1VsMI{}WKihj{L^#Twtt87;wz zGo8AW3_@K#;;rIO%29X&D~BWi zvPw@WodXwGGh0BRcsyIJGZ@;*0toAV2{JUocQOYgnF@qauc5ZE4vZKD>p;kgbE1Dj zW$Q7wAr5k*HQb{%$X7F12w;OnswG{hh+3IX=}ZI)6Ss(l<>?v?lNp%>Q67MA^xdpz zxUEaVqFcHoyoo;4}6^82~g{Tl0DS-;*} z^>>Hhm+4NielND3-)8+jYCUJ(L#(`*o_{QNiItAm?_1YDTEF|?o8$2}9)EmaZv8%v z-^KV_W8Hs`U&6lF_jUZJu*5~=-g;}(n%?eVaTJ_4pMj1=Kd$6bK3MLOlyhtL#xT0L zht99DzxiXS1u)iP>9c|p$xK|az~&^+c;7B|ab zHEZNj7rnSy%<76g3;R3bv1dir$4>v0xD+Qcc zQ^DdROQuu5>g{Y9iM3>U7ShDMWP0;p_mb&k+%;V?9Vbs?FPTn;depjsEJ~_p+j0nz zxsHa>U6xF{TWTUbb|Fq$J7KtFiaCqg_5IsMtz*2J#U)dQABz~sm;_6v7a_?4ot!%P z$FPHo&XbLmT-no-7gZY&L>=Vu9Dwgyb^9wAQfCp>8Cgvq{>}02eM3LAe;sO zFj$TeJ-}K^O>=qNuSMB&(6ni_7+x%*ezc&S9{1`V3VZtu)UslmO*{|F=N}%eKhJlI zni#8AW$%mS^I7`y_88R;kqpj71{Ag*y(r44)}A%kH}7VT^t7_fwX<~AV3XX9tc#0wN9jJA<^H@pj?ah5=hyM`mc()4ZeT!N57i84JrQx*5(1;!QsxF!;&ZgUC`IGx z292lJJZIx68K3xzV(s83+h4RUd*G)-%O9-3I|{wB`l^nb1>*IaH}k1~(9Nuur}PBo zXRTX+rhWKo7GB6#vvHvk_!S7c7%R@mi65)GX&I9h(l8TaC36OU^ex}zmWzi#Q z31rR;sm1dwK4?BKmEqd$Gq|rVn}z>Nz_v2Uh097(gxazfMTc0d>@mbT@vljJS(Z$HJo4mid4<5;f$HkbPeb0JJ=yuZK@f{ zAtBVT<7i_;-QBiRm;`dfjK&wZski$t0O!ttxglr{#~zOGbA0RUXmI@F;@rPc#?LiA z0q{bxl?PoC*r-<9nlelZj!|sx&*fZmFnX}Y`$gi>z395Z;i$2qwtRpIir5-%O zD!FAXvpCs(NaAoZLnS|JbFw)WC##HF>H#OSxCu8OFVhae!D3hrfKHYvujiycp>jP% zbb=+Xz~Qq6;+g~@7d_bbY^!z?pgvU(>4`@WNvzs23HaG|fG&TfxcAez=r36p~o3NV1(CZmPDKh^y| z=^4##A*n{}U#MZL4Daf{les)OKzKoWSF(I!pfgm-<1A#2LJ z-j}Db^{?-sU+h5rt0&tB3JsuIG4!vR4_sW!r_O)e=2~&-Uw!6bNPk8B>lv)(K(L6` zzc3S0Y;H-VYp;{UA))PnIk|#(^6-HgPudJe$H?awTc78<;V35#IQrohmOem#-X5jv zS;^qbR1Me1o&75)UFS)bcUoC~a+Z~4`;{)QWH<~Nf?tenv(ok2boNnKejbm~b=zK; zl!#A4ZOi5R>T4V{p(Q-c(R$Y$>Pco|$JsWX&TfjQaO4MVrb8H;1v6E?<>G4FvC^pu zWasPE$=OH{<)kmxiN=2VF8RrC#%a%rSfJojQSzFG)CW=7X7IW7_$OujQfmXn>R8Fm zgy?M|l!)7y_2@eqOp7c{0CRL)v8@RdLld|a3F1c5myUEJ>BG2diln#8)9hmS{@adT zj`Uxw9_3~xz29oPT>s;=V=Z}G<7j78Dh7_;k0g%t?^AouwsCZsCH=#A#;I4W=91ZCVyb zjTVR4rY-wOo7%%MZjub(4=^e6tiT_aMI53g z(tkJZ{gm04X*gf6Ca%=Xfg5O>tal*4xYj%Pv1AA@Bek342zeU-MMH&axg+#n%U)E> z55!)?WUyI4OtPYfz!@nqAL-g;GOB>~77@Fz!(CHmF;SkvThhRGggnQ)%4Qg>`ql7_ zZk=N^YcI-)Ui)zDMLBGrk2LSBeOUIQ+Yo1slJ~l_h`q?(EN0n@u0RqO$58j%fNVK? z1>uYo31|ZEDxf4ImcdAcXn%J-hQVzn#7S5NY;c=>#!2ceRGdCl8>^ zN=K2%;xKlu0bq7H0ZAMORG)eUhBS`^Jd7n&I|6I)SJ+Q`&=L)P@JZ0#q0sN#QmbW^ zaQ4&gp4v{y_5B+;+xzs@le5i2;=S_ue|MA5+k;=@B!knWa+cA z{F|MnV^*ki1K8|10BrsZ?4z&y=sud|{v4|%t#X)a#W}Jh40gx;kor`8kmT>5&jeC9${-=)Gl~BAMc=9{~ z;_0JNK*!F}Xvu2y0a)eKpBQErD=HA8+)^Zk(h3)SzZ{A-OC9Tl3kMJB%JBveh}v&1 zGX|`Hbk}WCh7lf&2|o;KS=9y=nc^)#=n_TYhcmz@8a*w2b(=xm;_WAFH5|xWYyG>f@h30Nj3NqYrXe(Y#pnC_RNn!hFk0BVoQ19xY-1JA9BZ z_mmdK@{O&Bm($rc0>LN>8D*4dW7tVX74hgxal9N7QB8jp`Eq;F*-Eu?Ix)#--_14h zJ~rPnoW=J00DYN&&obcpWN7rM6m_EXJ_4R$z$;~inuBFUC&26OV&xA7IFZm5!}Y;( zUUhm!1R7Hpo?TTZvhz!J?_#@Pb_bj6@V2rF*=1x>=TR?_1cx3ITMQhiL9ZuFV?2y9 z2JJHZ_mZ~Zy5$)%K1S0vFM+q=PNK5o z+vyA4*eoZ}&iD=!B{_*Ebe!m5C(%d8b(qu7$J^a@)h={f6S}P-WZz~5V?~Jgn`1l7 z;u$B48+SqoI%MDGeg`_DW9aK0=(l#D0!6Gq$iB^RCyQgmI&8Zmbb^zp^ym(2xjWu& z%I2dwOjPG2y5-Iehw*hLl9~4CcGQ^LYD37r&1@%&#v|J;2Tzhy|3-OdvUty%#8pY5 zrPGZsUY$r^`*ShbDf-D~6kWlhL-uWsbYk;heNmg;3)#2X1x>|zESKKXZrgCQuQO>1 z)sqFRSkxB~Zs7iu2>%_AXg~IKR`?#KXup~dF&pWjvD;8h#cGD^+uY&A`nMuB3CPm6 zZ}Y+8?h&WLT?|M6^>EY8m;UGB{tMUT9UXTHzD(yczi-2r@DH2cZ<*iq=DWv)pZKm$ zH`sjtf-m!*YQE2!aOS-Zj&aPFj{cP<9sL`Pzju|6I}6{-;2to)Uo_uU`2Gqv5NMNd zqwzJQqI~{G`+F}YBx~Z5%Cm53l@aWKxZDKc>$>y-zkp~I(gQ>zv<(Y8C%xY1zZsNW zD^YAiK>GYIg$T%|t~LSr@RIfk$V2-&1f(|*ojzctrXed~*&a`EAP1+7>XxhDqewqC z??pfMzI_1b$KEjgjcuXErXTU@l=Ne7%qZ}fRzlqx8EVsTN~#{#JHn8TjKx85E@Br+ zN@z8G@&V3Pyits%>XSm3dlYHMQlI};5RSvOZv1HQY>n{LHg2dCrdiY8$ceSS%*rzjj0`LYO zv5x>A%MSys_ArJ7r8FZB+y#)3iX>zuHEBr4D6-FgOL7%I6Ee_S?#=Z z@TX%kU0R{yvc1G+v!)JHTI(a}?D`T|k~q0yr0Z_jCWp{cxaU_g9nMf`Nb9e)z%GeeZ|F$6|kDZ<|t=+-KH$dLmS+ zh)P1N^7J{>MQH2s_xY#9cw1{!t(CpcHY#ON`;ic6IaIR(;Rp*0^Aqr0OO*) zR%VMjfxl4Tf8D9!E5a$mPVxT*d>+8L5_Z8#IJZ8dvWc%jC@N%As#YiJ z(@!!Suj>=y8irAP5nLmhpH(A&+Yz^D<&uMxO_>Mqf5IT*$jwE8`R%V<75g z=rgp$*lBY+`x%szhu(MbgqMji1rnU;FuW zdtXCt&P74CI{9GP*9g-7InTUz`ke_J<#Wz?>b*|NiwU^Udx`29h|yube1Vl%uI6uR zepHL(Oii=?Bk;m#dsF6S`-7v$MHqsE73VV(#XJg zXDOB*2gZFOHC+^?MrW4EbJ^`;Z z;QPM;4;A=A1Ha!Ja905z1aP9Ak~3Owz@G5dBzB@TZ~TRwu^uaxNVHbK_v1WUAmDQW zF7*HDt@dv%yb&VVv%^XDb`YH9znUaFF%n7kgMO7QoEU5GBdtxZo9#PH#N%&w+1oe7 zsW)kRqCPpvVh86**3H?8$CuaR`n46WDqL*<_G`W!YqNu6gc9EGQPFuXYgDuV=cc_;QD4M5sOZzX!%FQ-O+V z)zlf`sEC3PT3~#y~F%eUOH(jz^ibhBi3jB~2TAe#ZgQ2LHX9 z)4KN-J*`#vs;KS6s(4bsKgA}?RZ%41_Ew(T3HYl8{vQUuB79Yqb^`o30nY+BSJl5x zZADt_|1E6oICe&NU7G`;OdgaB-uq3uqn(B8^G_gUBC5kjH_ED|q=T$lbI`VmHvk>U za-*K6_p(tXva^bpCt58zZunDUtp1VK!nrT#e_}4g^~#cE`iw63pJSmNM79?gTMcY? z&5y(*?(T!T6y!G^TOBD6xMwBI1NKn&{)MxAy8OT<9s>>moUs;uhHHLTY77P)0)@fV zUBNva76YgVQ5a0Bs**n-WQNc9Wxl|&wqXs2Lg%IGC%bwr?=#}nhS8YW`jwvl1*}H7 z{A^JWzoWz@$P=xL&Lcc?H7z{je?*jkk?THmw%$qsOKc&(N%qDs@{H{VU z^1-vG5s5OMQqoE%g1HS2cQyqLa)qmGhi7BiddT(zIfyoA)Tu#iGD5)&q|!zI%}F*R z#+agaxPdnpF3dyrY8&T@-ihf4b4yS;_OHAoYd5NK}k~KKK`hu}1 zov)NHMfm!#B`JsD+x9h4F$YcfUB)?!Y zK8+{&Fb(B*Nd#JAVjE+9DT`x5zfB_7>?)`rpS}u&5c7^h#(%rV&e$8g+|$?#WKLtx zjFJ|YXtVPM{)-h+rJ^fiI43`$cD=x&7&NXKwx}S*g3<{{V#VVdhi_6~c)b52Tpf+Yz3xa4=6HT@Utp*^l&yLoo1Ht>LVQkp z@wXt}7aX2z1s^EF7<*GzFWXF zhprF*QTVvMH5bW_;0=7r*ildlk1TXf^K0ABVtvEDvgnB{P^T4uMV;#LLBp6+=?tQ1 z{P;+IG~h2#PGY%gwE4fZbxNs*o2jE@x-WKvN&KFO8p2AW--*n2V;|u+ui~LVv`4O zCO>OWI7|-CWOeEUt`b=aX0bFLZWYU{b~pC$w$wn;JlBb{gk}-1;59{3!xGW4kGB+7 z@x3|FD8r^>BdOvvj1QD>?y>DP>Fh3S&*|)_h=on~qh9|Bjqu|??P{d2z^*{HOC1ui zA5lOM*PV#QJyjrRX>YR?n4Ls#|JjNBEZNajwrb$xF_E-*P!fk=Oh9x&mD+^&o4`Iv zKq~zN?Vu`xbE<%dRPQrHB)1k*J5imyjhhp6sxgz{HR1G{CfCi(~Fe+sE5`$=v^+qq_>S8x$QhtykTb;0;RqdM$m)FVofJVjZ3IabY?;Z6K4mvThEUA` z`GQ27hKWvrB6XjT)4|yC+X~7Ye^97Uv7a7>A!eA@ghdoQf z-sQmd0PF`ibDZ~0_Xsy!JRJQUxwYSSkGK)>x5DM`!$o}8J>tvy?h#wz=xDD}~?OgqTdtZhQ254tE_;#@K%mWq@}KMr(-OR;dFt4jwn_MlvJUeT(k};h3#gw zx^=K7rRIc_Qi%COQtISONTOWzvnHjQc-?16smgFt3SB`P72yol%ueLKB9poA0Rll? zjII@%fXeFxe5t^{qv7>fxZ5M3<`B_MTh6HwzTRxoNxqyYt;oT#8phSMF*q;&>|nBSgU>(nZ(w zLv32geOe>X52(1UB$rw=HI|COB2dTwO|X;z7o2L8> zIZASqRb#VV#_^1>mE+EY z-0#T1R+5{n3Y`ot{J2%W^k)XPlH6pK>10s71sT{%a+B40P6ok`kU^1CgY`fij*{GD z<#ICkX)`jgmEjWrXy` zL$#<&xl@;`S(oqlQ#PhzCxf+{kb&S=UZSPkNYaHT=(93(r9A2s}KcaPW! zM}LoX-6M{HF|O0GM|y=_ayUu(1b5A z-&zySymL)n%$JVv4JIA^T^e-QQRX`g->cwC&F`1Y_hWn&+!ph@FY*pYknQcaMgQ0G zH!dG4o8W%%H~M^~cVO&@*u|sNV`dv}!{3NN#twhuL|Dn&Cx7E63eJ+h;m#ZT~%2kylk;QT)1 zJ|u#(5tub&-tVLUR+F(&QprRqB|H`4p?u0>GB#iVE#(P0{^@wb!x)aLGM7GqSr6CQ zS$Kna!ot`F>(3=$xk}EGDs1zSJw%IK$^3&0n|xRil;fVz&3Kki!vWX=lGGXF4niZE zV5hDXb7Qso?EBWtjoCCEfDUOw6;OYjUO6ZGGb(U$b~Cj9>==HW zlXHTGWwrSV~)aeP*1>*mBE#4PW1F5mLK)*7oiiq1l%Oq2ZQWm_0UGihaIcl+aM=; z;ufChw|>M8=JAAbeWE8W3O`|>4W;T*0q0P}p%M+lDc8>ipKrqRR23+fhBNK(6P$3B zits*mcn>E${uhL|aLO^C-+r+>t{jzXSZ9ZS>4du(zQzt;>V%gzB7A`z{sP0Luj5ys zubV(8H9TlX1|6Vhz?o~f&kiqefKqC3zPQ2;ALpe11T3$HOYQJ zc*%~O>i|VEvkDzvtFFa~1^qlnT_IEg2J{l~a6pH{*D%S>;YKI>HOrBG1+#~}4&64N z6Z!NqL(DduWk;Url>NJfvJ)hn1x$K!XG=q@oh-)5WA!o=KuWd&Q$ZKd*l0H{l9BQb zr&c0k3n8MQ@$%=%pays#O)^}iU=tRu8YLGzvE^rxv801e2Gx)4E_QGZVfBVpuAxh~ zH#xkeB-KkpUm?)M{_8s z`TZHbg#X3-j@qn$A7j4f<4d?p&F`Dc_dXN;l=&_&;mrG9lNa-)Bm5eZj{bGV-(tQ; zZ|NR!4&2pnjKAA_%kiBD_pbT4{8Ayj3MUP7~mQZVjtbX(SyEEZGAYALy#og zOq-hY@K+{LR=oP*Qpn*Tb+)Lc7u(qZ$mzn9ix3coRHzrsjA!aX_3yM@V7;wCLC{}- z8%ka|3+t_xcy3)RD$t7c_ThQ0X`K}yi8QT~O*;QS_X;_|s|R((V4|v^Vn!q32RXq^ z4LLzC@g!sO)`Z9j2{;O5f{;n97))E;8YNu2ExW_GcG;R*$|l$Dc;Pa_Xqze^_v=$UiMyc%caNG{+WZr%MZU|UKOybUPQ;gtz;2hLYOAmzkalWVY+?)5+XgIK-Isz* z>=g&>87IGfBaq+2PQ?9AMCKqw(7d#+!EH{&%pVbPofDDmMC`$BTf+z^Vu%w_z=*S* zh?AX&4c{Z8uM=?yBcw6K@1ik6oHPlMO^Wf?AMHMfBG~s%#OI6W zhJH@OF^rIkcV!KPREcn6TYj+HoAnLAenb60qEx8`SwgFntCt7q1cmBZc<2?-)XI}i>=RDx=0!HSQsl%=b;?iofL1R+;kD`}354DIv!uwVn;;&+ zb({mvOZO|aA1jrs)P)p{L-gz!;FPp|5$Zvrrm?S%igTjQU=&Fja_(}}`yUE{!FS8~ zY%(bDIL)gg&JkYS$5>lW?7)5vM}HN*pTO};w*jul&h8N>!twWDe3>rG{JsTW!p}6n zE6neO=KF;SZ!*6R-KEo?f-mz+H{YvGIP*T-z%XArrkiZi(O+i#&zo-zzV&bioBH=N z-{JUp&jHDRY)kunFmcG5t~D=C^&s%BVn48AqMaz#TZ z0}veRRz8e9HcE(kU4>h&V%V(OyFDG39~_mbj{F}=U;X{QOQ(ETn54PwleZkyF$ltlCUT4YnZWg5BKUz!9BbwyS=WVyTw*1B;-{#cOVFoVNoS}i+^tNbp?lIr1U}(_d#$>L_DJD zBmTAzOzsgF~BH=2zIVGXn3ix)9QT?ED=qUWkK1#x8WGzH*sb zDwENsH=HLG#T$|`0?HRazi&!+&5yS#Pdf30=|4XH+xxx&_141I(dR^<;17KVc?wS? zLT!JSFn`xDf44AyRG7bem_OS1@g_LQd*TOHSE%v4EDp1F6}s~xJdFpt>e~X0!nfYQ zuZ>f=yokv8mONb77-_(MnNaG(IWR_;HYZ+-U_G znX$F7m;M)N4I1e#I22SxFC4d8Vy``m6b+_GJa4fR+4p)i_E=8xxtUR5sigxq4@b|B zic`1!UG6b2!`Ls41Rg1j-fX!}UD}9Ntg=38z;meL`bg{G6%1Xn*_BrSkK55j`K=I3d7RtFN%c+ICtRIxTQ@ z4Cm9qPVF1}S%Je>;j-Or4YJ(%aoWBxFV<6*=8v=}UW4$0jaC5I1(&$!ARk$AR$z3D z)p8MdcS9`ySfHizE&tufeL0|34oG=zm?E`8W+y$}O>-RNR z^AlT5&_04M|K$03h)lx1GCvy^|IxI(*qN5juFd(0ogzOW&JY2YyJ-YCFe2GC|2O9_ zn)1GD_Rl@*0(qPobG<@-f zy*#wMj#GXT2oTKy&wtmM1@XuuV+uzfI~Ik(A>|mHER{}#Iyk8iDr~W~JuS$p2R^6B z4J042ZGud|yvWC?5hxS10`j`CRef5uKUDsfcUqO7g^QIxtNiC*4)2c+%Fl0Ie#t$5 zV)-x}6B>^W%HOiMRr{%5?oVs~i=8MxzjgV)|7qpx_D)Q|rT|LFO!`N8aCGMV`VQwk z_Qe>rJs5)p@Cz1zK6$KBqXlKj0ua4_xB#9adS3;LdC?M>S_A^}y|kJiSc(ULAI_;_TROxKeOt{(!4KXJ`X{tL z$Gp{Qex~2`=gm+5UgI@9^$+W_d{L|V9CGKMRiD5?9H$9dm#3!Vrx!$g*Ef{-T5WhSo!x)K{o@?w7kK{aN!5{kKw%-#un1Vf=}Ns`IRCOPBi{E26B;kn8hA*?+2|0RIya5QQjum$6+6 zj;<^NcAYRN-R=6@G5|>yR&jHeg2PIWwRnyd%LqWPFj9{5*`2>Ow*;n7^Bo?o6>VC9 z?qKMOW~I_&bp^UKf|6OSrhYO%zvRwZB+IB@1}8u>nH=X=t?uzVX%0SiO2zSoXVKQTN$ z+K#{4jxT`ZUMPQkH;w!+wBvvJFg(6SZgvrWtR0`#D*ib;e$Q&t?)N?jho5Q3f5Uh- zJ?nWiy@^dfO?b)3d#Me(_Wf|!5jO18Htdaa>~3q~F3SF%VZ-iT6%OmNVJFzIi=P8* z5zBqUhP~K^J-!tzL{D{}o@&QGv@$&J*X{Toc6?;3_`lon>pwJoGVSDW_&eBLk!uKZb>wfvwRcamL^4Y+3u<@>T+WREOVQ93?beQ*LR5*3w3d;@k! zFzRXTjYApn>Lo;nz_qqYj9>K!rVoP8qFN-F8v96{Ua}*WKZ6KO?_pV81MC*cCK0tb zAFKE8?&yf;;pl%G-;dz&b5n%{nW1>XE#X?{1DZ`5HL?j(Gf zF4cVhV#24G?-M4RdG|JXF+Cm2U2M|P|6k+ZZN7bbM@I~Ty9ti*GtBpCe3!ySnsyzD zuf1a#`p{=HkptURzg@)T!KXA5y$UBn5UQVgT@lsAM37+Y&Lq0zKXXD0W8{YDO|m!R zvqY2fPPsRnN8HO7#quCAQEl2G<-DWI5zfvUHIe1a)aCe}WI4P|OrJ*`9v~EgR*vfX zDz+wDxXR<6P~(Y9@FG-Ue;j)+u8UC15C^^WLy#%|KTL3WemBc0s@ z<>(8-B;FyOVD1o;)LCESj;Ob}Lv)h38zM{!yg!2t7*-)!WdXM|tTWecmU@^GxFkwe zv$$Yn4|&JLW~xF1mZUBOS=2Dk0UPh+_tP23?-3{BA}6BfF^IU=i8$Sf7zPZ~aJ>_8 zxD&Cc1`$3dV&@9G&Sx=VfD`e(6EUY65l1=^D;Xh;8Nx*_yTT^HfE=s24%m|S0QQ3u z@izx7`)Rum7CEu`4%qtT0DIAixY7Z8^52x6B@L`!|*L^V8t zD2>`V)n@=bl;J2$+mb{%uof2Q4cviCl)FJA{xEJ?Ss$#e?~aI$_#KY^Zhi2D#an|-&uZzGuhioAg>xZdfXTD%)l%ie3>^93)6|FO9x zH86c<@(I{)yVkVSBdjOGm?jZv@LqOijzq3$`3~a@mda6$eKFAROohX4(CB&x4M5{$ zAG;^PDtcS05}E4y$I`S?pl(;m$4KA{Je$CKq>Mm90^i)>32=S_u6MqsD*lMnqI>&B z6nLqR1yqPH@E7o@?~D^$83$zqmV1kLb@RD~S3%(RsP29^M$sa_)FBBQVL`_#)Fy z>WT`cx#pu4b{B^_)ECr4&`zfZK1EkYrt-~kiuc+oc4MjCjS_m&Fa*uBgJ9YOor&vv z=<$Jv4v!TZUBs5?Sw39Ej%Q`0taX)4KzGUb#0?M3dZi9oWOQAV+VY*1QrCzJpzV!a zt(4!4koqQURGcuJ8dO)1jaQP`s__>>KpccT+~~O}#y&(p^Pd@UB4+{yn}MgI-j5{O zAzp690UYWfNYID{&tI1O%xye~BtRZ(n?C(x*Yww<+S6sceE}eaaTw^|Q{N#`BO{X* zvX{*eY8uXZqi6g$vM3zv!0@q$A>{-!L$>5MakU@ ze2BO@JmM0Gh%A7LzSt?@5y=wKwctqC{C~*eWnM&{>J}GB`gxI!=k66VhB0SXH6FcJ z%=sp!%h^>{V3uq=6v4maY3NzNzQL^ts6825xF^hv(|B-RVkZw|JGkk8b}+IhVQoLF zpOsLB(N`JZgCOC<-6#QV!cKe>qR3m0!g=m!oU!2O@5r5icsm{a9l1-6iH^7q?q)dp zJ977grK7(i_Zs5nz`X=Ve@AW`;to0%^a&jO9l4VcZ>OWbBX`PiI77k>hoiqEcUf3E z`a5#3Bkn!8PvGe9$bBD{j{c6^y7=gb?Qqe@M@P`#kvjtMb~^eya-@ga+KbI2w`1Cd zGC5jBz0lu&c~-SdGh(+%*Et| z$P93INs@Sj^SDgVN$wD$zz;!F1ZGzkDh6uflmlyD=@5k!>Gxacr>##lG z;G##PGdSj^M|(VC_o#qP63;~oBr6Be8?Hy zS<=@Y`W31HSwNEvX$eSezg5@V5~lAIkL3st)otwWqwuD#9<7!ah%kHXX*?3$%ceE< zLI?AZfDUev4t^iSU5MgTUzA0)FFfAav_UwXa!*30A?q&CZyaMhrUdSC{qSNj$qv}B zO%6S9FP{66MtSH^Ic&Ik$+E*j^q{5~7YiTZ??^bJN#r0pM@MtH>S%@|I!{Lz>F81? zn&F5p)6o?=dX5v#a4S%d=bGOg&kZ>lpund{J_UvB*JIIFL%#r{XV!h$(pG4$!pTBj zXRhJvOemNt;5-SeM#`#-(W}e)a0Ja9nQ=7Zu-GE_kQ~}*EERKz&LO$6$FDJzO?smOi_+08$)KR^j=K_{`<+5J=Q7>pXsiKyZ zWZ**zC|abqGg(MlX?{X-YVijiYM#t1O77|s6+lqO4ZazV|B&^HYpv8uSLzK^Dz*5> zcL5tuSa8^a>{d0mC)>xV)ld50<;KwiP2?c7E*rYQlT8yR0SKLy#BnKJ%vs=u+2`=d zQO!n`%tMunk|SLuL(o+r^b!x)Ov0kJN4BkPkTI$o>I;B8plTc0r_3(IuY8xXZo%`F z;+Gg#)OZLQk_(@@?&?&w&Zh3V5Kr%mi5hNyPm~lE_kq z9vI~OzKJt1SlF)NSU~H08+2Jxi<~sVEU6PO)dmIY;l(DU7@|+Zm+I4SNuFIZ;>`bWQP34!&8ga}u2V}_+`(#ZC^Te1?TZaAtzm58-{jQ|S&JThsp2kDL&A{1^ z$Y}_WKv7CW!4cJ6BVUWe)QeEJ%L+&bTW?rQQ3}@3N;mP|wK2j@u`xvILLSoi@Rz0~T!^(i1iYEk5_nh#r@jhO=~Gr@ z;AjjsO|mEX?!E<+(*xg4AQ!(%&U_kGwmG=_Qr2a-hAvm@U*L(a0Eg{ecSKj>cC)21 zW)H(^CABr6d>pDL!cjxy#(=Z`*8oLaB*~73~$IAye!@dT!DkWqx6s1 zH6ySDGTJ`Z&}FK?6e>MnrM!PfR4}!Fsq72P3J<9CZ7CL^fpsE+l#5-EpBn&ewH^l z7Q%Yfwu$(@AjD3w0+X7p{*dmjYQ~lMajuzfAH=!8TK)P@-r9_7j|2;0A480}=J)25 z?t^&_Vzh59*?_Z3lsy>{7KJb->Caj39_lQAh!>Ivr0FvL*e6}a1*a|^sh59OuzzHh zmQ-Q1ff#G~sVS+$hZD6_!m;bu>*yvO-Rwj&9MKU#?tpglQ&U1~MH-snh>q9MNjf^& ziDo!31FHls4(Ns_xH^F{>gBVT7=c@~tjlD(#lGNVtV>^DE7v7dI`lq-%*qQR3i_m0 zch@U3M%5j}y(t~y%@@TW5=-+DysFXa7}B7K)@`QLV0c zPOnEFm|vmwh+p>7$j2g-vV{4`ALwi#gpD?LHUD8CT=tRaG2NKdqA6gsUIKj;@xH+A zZPzB}G#6+_$|hiiYW3-Vq!xXoA7Dh53v{PO46E&mxTe2=LI_zHzEFo_oestuCD`KM*&r}otL3NQ$K7S5Gopah*s_f*@QcWwpE+ILsG{<9>>M=1`su;T}ufIEo z56(Ry-9I6YC1ACJ3QDii%5||?*QnhffH53IPnps@u#DZeACduDD-t%o)G^(6K${6( zk%Z%iv{Lkg%!2ehtiU4nqCUfL7NnI<$xB0iNg&0#2^oi8^?;Duft3x76S%fX&m(2j zr!8d!g8Y}RLdNX`EHpvS=4udia$5C$P}WLFU7f)oUSNw zEF`xawm|oBo$X!e>hwHdJ5=DFF6|p zWA7V+O*$O}q^5G)>mrth7P>=3?o|NSL~h4@^AV~B68Bd?#@Hk-v4C0;NfKAu%HJ-h ztwb98XlohZK*W||(1eJ623svUy`1A&ycA1Nqpo&|SRyYq1T_k$g3r(yRE9FBLbCR$ zV8*CDQUjX`)`@K@c<8n5QNj0sNGJonDGgsE3<{YQYMJ&+y%uP{6fqZmB1q!G;oKHV zLqixO0#MuCY=zKqHW8+YGDCPZ90_frR&ll4@(Xfp{8(#$A--*d1g&(SYrbIHfh=KO zSPAS*^$1FkCDE{(Dg}#6DiG?{A&m@aDVc*19q=Ura4u?$#@rjZvKb`29Id%?mDGjh z+zbeH0dj7L`BgHFK##f`c5amXV(_EkSNaXVWZ7fFI{08PSqJ3ltWdQx*l>pz^Dm@u zPK?)Wbod4$;5`SzrQ=zY;!}{eF zR@U@OZxC%fr8Gh&tr71E3ySPo^pzYmTW^XDp_yvm^w2=(LtxknOmU-j9&`*JeO&v3 zh)QZ66o_=&-6T_dL$@^-GA^j z5sdxshFJEc1pW01c^w=(&4#Q;e}_YIps&(!{}wm~3^Y(9Y^WF7Kxs}~f`+?Um)FFJ zz4LKhUN0LmuU*LX!dr+P5C*x#KrSHnjcq*Ffn0-}5mc&P*I>IE*+Bdb3JliX`M6!t zld4u~@f#Znb{g~nOLqEbJ{=n?gBP74Lza=OuJK5ZUHOY-n5+hyN?dxRsl=<2Q>dd+ z=oz{alkG~x7?@*im??Y1>=2ej>@XYVQxNu;;<4-dnsU5*!&GY+mkm>4VCLH}v3tY( zO~ZV(-gMAJ19P7Z^WCP_!;kh{tzn+CVUi8ZNP*#Wcu@m^s5R3KP>CAqHXEvofr@jW zCba|g8`c(@onk|M@R;t0rQnLmpr<(eG@n%t%{OIA79jl<_imAddksq=Yy9I8~DDgTT()|vUtl6>SMO>3D( z|HSATTw>SY`$y4Ia)Z?al;#lxm8>oe)!(G&_QL) zQ59974b%gFo}DdgwBuK&W!w5NU%g<9?X1tzI7?8()jI33VObAk))=P|0?Q1amkh(2 zsOxZoY+SK_RqSUSv>oT{GS%=DD!?m@3b|oHhhs%w7pm1?oSc8fb%!)JyiThIOLLb= z@9BL1#e7kx1xJ{va)ho@8yr|Bn^Wvss5h}|bc2DMVncq7EjAnn>H;p)kWYm{o^BwA z*^p1S3wgALygm$aGf3|b4m&wIV%JHyL&TTcjR6}+~aW1!_nW7+ljbCPm7K?3XcAc+-Zon)6w6Ndn*O~jQFW=kM6@o zosPR^xKrWi@5r4WmToxw9l2jo?hS~)8SeIdxSeN4M;wwA9dRTa{T;dfh_}Ds1_6!`%|gVe-Q}{8Bk7IJ1Nc*4l9_f zu&Q1=`B1z}Ol-(!&hRW#tA5`eri29d?xlY#Z~d3AsI}ek86hMy((VS zHwf;7N`ysvho$0}D?u0`)wACdX)@rPzXN?a|Kz^kqW&+@^FgzA(rq_FrNa)ZKMYZ9 zvX<Q_klCjUtAmucl?je75Elv4a_kyYGSgqQ+FQ{#d6w4x67 zOO6$o2tjiwI1#!R*0~z6Pf>#durK#w8lgE0(H!*iGK@JhhH8*g4(H)dlRCMoVI7BEDB>BoOs8BA=Z3ni zS%({vm@@by2g+m^ZYD#LI_078$sqM_rSBz2+c7k66yinc%dfuv(BNV#eTnwI!}|jK zi}a>cyQWhclrIRqBfPx`X@0>|cWQp2&JUyc#TPuMM@C8$IE~;2LSO_Ian#kPk~>w; zt8&X*{8Q1$;NV1W@WCQ9hk}eAdDtd5B$#*P@14%Jdu17qj#tN-Us%SYJ*t=ag=IWC zM|G86!tzf9OCAdtoli{~DSHY|_6BxgTDhj*#bWe){(Wtm`P_IV1ahsEZ}X3l6sy%I zl47Ho@!u9G$&%bl6p)R1x-fT_fC3+@NMgHFQ< zs2i>a>)B!9DsA&wk*)&)>NHdk1JbP z(+g%)s*Sj?$7$e@b3fnNvM3H6kQN*Y_2?L|_Pq+p6^a>>6Ho=@KnNxLo z1@74}lSSxT&oJI{F-fZ_mV>pCD@i?aRjQ{M)(ewjp52+E@1Z@IXt%#gTa!)?K*?3N`W_XzM>Q0yA{hHV8F}6!HYTp{*Hie0qQ~ZN5~k8NrSffXu<@2 zBj9X%n)OqL022^FtG>Jl2?F9 zruryhLx6h3n{RHT-B*xd$t|%2EY*#i8W=O+4hG>#AW&N=c%=l!>M2v7gL7Mk`;&PL z;5dt*)0>Jv&BE!;g#%ej1aU(tVI24Q+=YdhSn4`VKyDfY#`~w62VrVZA5KP*<)_Wm zj8c5vAkgE0F3Z&Q!YY0+8K5RpbxlwVSO7cg2ZWj+*w9SNXn~+q1?v}bHg+|_EIH|# zvL(CjJ~X27BGga65;Tq0?LlSj)_{gYHh5RUwqTi=UAbgQalD2rCsPfA=TEW<~^DxlCj5yVm>@f)NxaMah zmd2E3foigFx=2qF4SoKMBp`9jjEp4J4|5!#?PLur3@|3x*JS0az!U?43X0_dt0Q~d;QV{H{oICL zNjr5@YEgAkdg)nI-3N;0b8N#G2*tujf+dNvB7tnJ05B#{iMM}Mdhp(ZeZhf)&@M0Z zDc)Ctp7#bl2eY!-R*+ZL#oH;kM_(}NXtqD4X3~)t2fIc4Qko|B!rPh2-Eh@*uoc+m z?Z34VZ)dh)NgeEMsUi&;F_U-k)gZiyl{fIr6YP1Oum2v%?i_4&{Tu=b>T?MN4H#-J zY;BN?=3)l&_=20JrG7kzceJv5;vPA=m^Z0>k<;}vlRE6JoIcirdq=}=nwQ}t^#X=NMZj?>>m09 z(R~_l6~Rke?KXLx!1t@aCww;z4;95>`vp3!6Bz_0gJqL7k>h$rh#ZVQ_FW5&%c>2_ zF{82*84i{VZ%2k$Az47KSi38}#wxHUz8jd%oARM1c)XBS0WS6sS^ajaMposT;32{Y z9ZVcEz0Up=hF@xdU&xNO0#P^bwDC(~Mxa3}Eb#@t^Z7I8V73UELrTR@O_E}?JKxxJ z4ySQ|f5{IZ#SH2X6b|VY%&n8W@7RZk@cG3v=eBii)}!at?Vh3H0eWe4RKijOw8DZ-&lk3srtVa*l<1D1(dOV8j(ZYH>45!V> zQM~&;*caI5^eE}8GdNxYR?3M4)EKqTTX8NouD5YS9tD)n5D;ZG!v&$2x|o{=*!g0cM4<3Mk4d&fLWuY@0!9oJ-&VFryD4mLyXc2hg1zRL!q-L~Nq$hili z|6C5qx{9)6O-x9HR(-Sx;qe)P53tjc%;j->ZVg!kfvh>ZWMXv<*$*F158^dL-};$ngq%)T3wiAhHnqrB4j$fyUR8 zW{FoG94fT^(jKktm)29l?&&uuBT|cVng_&oL3B%O>F20Fy41E`T1Rmgv9g>Cf?oaQ z7|Is~J@m(ZMdoy{nHe1fzYk{D;WtJU=tZm))Bl!`5d{hO9Q&*&Kq-?p9CGTjq5x&^ z_-I?57Uqm*X~k0k%87C&VtbMvfr5*}<%|%P#N7~SQY5RFr<4EdgXz;T(~(vVN%)zp zW-|hlB2fj#LwiIn=19Z4Jk252qb3`$cy+;-+glo5H4(|`YA3%R8(_hw+=)ncA`Y%Y z#8fBZG$&$cF={ZuiRkS_EW8g98BWBGV!O^sj5x=Mz@vB5nCGS;;wUF#1tX*}7ha9V zaK<ab#JF$Zu zu)_#8$%#18iSXZxh;dFt4<{mm5ou1uru*#n&io2}+TV$&V}!K#ohwm;a@L@W6T8R( zb5B8jTM!GXuTg|_{0*igCH2=qW-ZG7=+41C7uDd$IlQ^Z$Spoj_<@s#Am*s)IR zOPAXUP^LMtgPaPqd;@c(lTdoON-%+iYW){1J?g~my?}l-H{f042g>C1TY(f>14^>m zFwJi3YnP)U3Z-Z>3d!mtCu&_bqBOCS>11($1nPs5k#9y7mR$CvOQnBPB{-+RpW=y5uqf%r1r zX!D(D!tXcVXG}QrzTD)+^mMGp+a?|TpBeu~^X++cbi_$;m%uUpR`U(w`wZNd=J)UT z+Iw`H{rSa<qY4s->7eZMNuUj%eV`2+k~jL8TR#O(9I1eJwk6DK?lgvr`vxr_Sb1 zohzJ26P%50(1YE%3OhCMa7LZF@k4zGZ|3l0s~nfqX47t#LwFKm3K!;~66%x*defHl z!KmC*%+B4$-l-cIqlt2pO>rqAx?O4^U#M@>HQoH zvG?-7|0a_y z}c*#uP>~cq)@)VB&x&U0nrUox_ z1Kki@O`M9eQCjJnnV=P_OR7)H2J^B3>GL?FMMLxb#ctH_S0|gre)s9H%BYQE^93l zr<5ckhsNHp%gW-xdrJ8)s367}bvND748B?7!-IzkZTPlES%;7c!fDxGQ0nt%ffGGW z3*DxdBWMor%{*ZNq?cpB(<>3iTasEGR>`nBgeelfI;;-N%YtT%X*&9FCB7NB_nVp? zPhV1XdJdy=;czutP>83{MHpjzO7*8qf4IdWumT@Ug*o`}Urot8{6(uU(r++;2YH&V zJY`@HK6>FA#nEeNOxT+^V2S4^YFn{jj{%vG%bbT1=VVoTr140<1R8ukR}X$G2kodE zB8l***C1-cZf={<*5`UBJqK?@BJ*RdVigIa8^z6$`3IqRk1DMt9t5X!>TlfgGu&!I zqj;Lt6L*oO01~-Qr>Rs|YEQYk6dqWV#f+HqsD2^BCzaDG?14fZIhg7(uxIhSAZ((T zx#gIY<>awV$}*YEHrk!XVr;-OT7cucO1rX&R`I<#5w7W4UQpjE;iSaAKyxu7m;(i6 zddZ%U6Sib=J`@c=W>y4jld|(H$D}MbEFy%xOv;w4n!8CCOVVVEgE`(K$9{ZZeYiS!7gkc_G}G%w*z}HU_W^5y6A{$a1X)J-;t}! zjgDA?_!_tm_Te6z0DYuzK{)z5ayES?{8Zk+v~Pb(Hm|sGVJm@hY9r!0ZGY+mj3$VO zecGQwZib%}-wr>CtfU#$VXP$oRh$LTFLxlUBoWgp4w=DX`+44X?yLSkXa8tfQcwPe zEhXFj(Y9W+f3$+w2IOZvsp~{;HySVYkVV+cD7^IQ77|LyfH&UV@VrQ(U`PEXiTg zr1sk97hC*6Bf|CPV?DsM4Xlm|X%Kbv_l7Q>o=__x&?mednkVBZ1~`wT?WrrU!Uueu zTA7Sr#JzY^27=uR{+%>U(IV;=?%^sq-HGk@DF7&n2J&Zm0$*xDfD#PkQEs(I9yX1~ zeBwdfo_sl+d{*GWJhln<()ML}qP{H8A(qEg?mwhHZ1j0I%58bnQ_cF!4|*r+#NX+k zo>0WRT<=UzAZinW2Cra2(DW992HHYqB_tt6y}%V`aF8BP;C6(4ja@%} znK}!Mnlgi*&3y3C-igRJOdm^-Cf!HDs30Gdv}11}fVJrtl#Mgl~i))!RZJFHk zW2lqDY@FELt8D`9!^TOg`4ceqHdw2MyMPp7%JZ9U?QeViM zpzr@T`%7pKvcUL@E^Fxbo|y1FnbMe5j*wS0cpiN~rMq||UNEYS_*NfbZ;X-?TlzXA z*oMh0OVgjP zPJaOlon_0(g1KWU;@YnU)a-M-_1}dou>WVh8_uFY%pYDiY+lBrf4|FxMUnMwICxDb zz~2z?_1PL6;@Y@1Gjdq#IsslF;Bz&&7Nm0XvcnOi^522m&Bqfs4A7Pcv5q@%HEI+d zw^|<p^2B=E%|#dlxu8lbooH^T zd=RP6;m#~KR1D9=Kwy%zzM_I4O%sj95N)=;qC$+hq8c=sQ@0MY))i|QU2W`vkIilO ziYm1dG&;sVcERC*qqNgI;OYX+i41E;cT?9TB(`G@{P33!@LKBqC7dUbK!=!S`dUgZ zeJD|5UrXs;IFKu;n(8zDBdOzxy3#rHN47-qWOm^c! zYLmH$$yQI@gA0f6`4iNHlf>Py#-zwo$K1s2nU@gDZbaJoPDD3GfM1fMcBFxspNp<) z2%6YJ_4ADyEL*+!F77Gp>!m#Pp^3;*qu1b$#J*n2Q*SsCcR|0TbG?+O{^>-#nu{9P z*GqZoJ|`lP5%%>G^u;?7Pu+lsE>4{@orohC!3Qpy-a3yF(wLWqp)o{C4MJB5HP+Vw zJ97fSUUR@A9I)!4b|3hi*za@guFJk2V0SwaD;XiB9Y?StmUgKVJJ$i5b{)X%>!m#P zHz%U`T142_OL^)}C*oE{9Oh(|<3wz&LZ5C&LAt%e86h<|Jry+|x2!=hr?j`912z@R zjfSNHhR3nrttH)tyP-M|3(Tlctv0@FwH&^NN1PIVy1_1Cga;*5AfoX$UHB>|DjwEc z7FA&iH(sWrUSX8Xwu0rji5fwFw%Xno{vkR=&;cGj1oQ59_erl*Qk4EGNUHqkn?&Pc`2s@SP9$ zo%y}XeET4;)8Pi0c8$T;-eY-w8Pb+stJ(2~^jey)6}=XFD0jZ-|D9fIbKf;FVGcI? zY)aGD2OKVClh0(j^o*9+hXXOzjinMxw*9MAwwv>Od(t;ZYqP?hvMgwF{e zcS7L;2#TgP%YJzvB1Vrc;*Pmylol~MYG!K@BO?c!Q=OiuO~EAbK@z#Uy{^|Hw%;8r zyM3IhAfu~Oa|Z(xiC?dju&O`Rw z&G*%Ma!!Ih2S74U>`_wS4qC7zlshzdQ@Np*QtB?Br(nG8pa?AxfJgoJpmxMy+lt+x z*C=`?qOb?hU%-%;?Ft*OjwN7+^hAGv2NV67mbTmPd&om8ITh0~4wSrFy@2rDH2i_A zg`i}x49I}ucCP8I*Fpe_r^5~o&7C0l21|ywBf~KH*H_V-_Jk+-=S?x>pVvP%8C0v5 ze@(;en6{j_B18g)NhWEGw->(>Z#3NcO1(*AnVV|uo6LI5X2`$+%ZLbUdgg$y^dYbu zce~EjR_VBM-lP{ItQ6-A=XxE_FN%->P88X=O2;<~oL>sPacTI+S>D#q`rLBLv|!t> z5>N}X@kf1o5s@rU7Qe(0zf$-OADoGy9S>i(u#$sWZuR?>JYfi^puMa*V!a0w4iR`3 zsZl}jGgc`ihFd1{ySj7upoG9i1UFmVzTKdNT%v?Lj4ecP9hBfZs2!A$YXxcF%0>y< zXxM2;w_hls5hs-pO8A0ooV`%O5(%Xo03{|v&20xIWUEzCwjge$5yV}wmmsdj2-10b z%i}_&}bxBn4cmOVJ0Q{4LDkh3^3Ugz;~6{ zA9HXGU4@^N0bcT?Y>~5B8Ck~3R?AW=5M+EOR`Tty6SvHh8)S@yvdW~abEW%1c6Xw%-(O|(`=hWj zz|RZsz4A_g&lm6wKtKD!yP}wv_llE;5KldxVDYF0nXOhRI3ycN3=H~iEN$%7YT3{v zkqrfk#l%{Rjf)&@7*b9`W(M=rcbYsmt7SUG5tY~xM<7ji8!!*#$N#^-rcZVM^~y*(2a{W&rw?; z2H5bD9h}TyNHnW62jbu)NBNmLu1X!PK`PV_ui$`pmkknS=QIly2=i|fx*Yx!Oz>l^s|rK1tt&klaW4j%C;dQP9=(Sj!!%+^gm3+0xx+zmv( zY~3^)r0!DW^sNq#QRlCcV|u+h>t#+q9NZJNr$QYEPs4m0KGn{9P7?C2KyX8u9e0u) zch8yj8GW)8+S4xdlQ(cGzZqe1su`9d;AvLxzQhuvnpg9xD18pRv)72XQtDBG=*IIU zoA(I9cFj5yWh)d*1E^@!i+04aGZ4X>Bp}B*>MujN9)yIyUrOU?K9j{wTTUD@9)w=m zV62YeGa#1oaqaD9$HNrQ94X0;E+5n-iI#h-21&ye?cMLfL|Q?x0a(&Q&Nu)iC%b# z5FGj!5_F`0nF{nTerXEE*n`bK&(hX_NB~#;T@%2pjZjdA0G9gxF$H{2@ubBmVO z2{PDmPLlzEBp-VVVC%~JYV+Bsu;P&l}O#@?@{2>keie&K9U`+#`m2YTZDx$~) zsyG0;be!b)cjQPO~o z;We1Iwi)u)R+KrC<}E&_70pZJ8DcwxXx=}dcRiqYPx=$+-Bioax~W1F1GN}h*Vob$ z2*9RwNB(smwC*KSZCcm9ggWnE`=oWC%3!vx{A85dn%13d zgKQX%oE%zrBu*db?0S{{jG=W0Yfpt508fb4&9d`;`y}LD!8VoQkC2>$?6@-6f7bU= zn%0fC3tjiTL+kd`Va@83r-jz-x!j?3pVwYZ>%M_#L+h^fnRZnqplog?hSsgJBfdBh z5e}_ea30r#(7I1Dh1^_S$Kt|h-9)U80S`fMBOLvs@x2a?U%I>D9)Ww={C*E#ru*9b z-i+@6xE_Dg>5s>kzmv^(j0yj%`90HopETi%%=aS`&b%v3-pq$?G@LT&=x;IpBmS=A z&c@dZcf0xhfcZX$?^|#i&F^UBOoa#6iJu;vfRpD3F*2vbk#Jz$Ci z$w)47^L%CVsY@uTX9Z{Lz#u28nsN@skAk!L1I&sQ47+pGLEOD10n97;Q{Em}K7p94M?D7h#PGzchu|?{>}ymJwo@_6lE2twEm0~L z;kdXvt^SORgG6Q_S^i0IK=VaR5^IO2WiY`*L@@{ zd_gfR2|IH2$i?k*4U^w;XMuSHCS*owMzA3IEup=kC8N-nvU$=J*v_(w-*;IlYbQbZ zKsLO&(NlQ@62W@5xoEf+V%)H zlzAQj4W6f1DN9^49tOX;adAuRB~OsL00r1XZ9SbG(%jgEoOjlMXEnSe3Pe2)IT(L5 zX#GdvncyGZ4TSy!@RkmTVYyM!8Ps9=g{lPua%gq8^LRwrjq?8w_TB|9>MH#o#}vg< zXRJ`ntSM=uG^5PK=rW|}OoGvtN~;!?8I>9-C|yhx(V506x>(fLHoCa6mBnspXj+)} zET!5CyJFkr5VmPIu`>Se_jAtYGcyQs*>-=ozb}W+`JDSXpXWT!bDr}&&k1=el=TMx zgpK|EG`XLXqT-~mTHQylMl$E}d9f*}N5y7;5`~pw?N4sqqxUC-^+0qk-uy)*&FJ%u zc)|XJCcWtPm3Z?N{e%~{Z^b@5xC6m1RRr{Ur@{@21~IJE3w1UHb^MAM&I-U`}l*|UDH8SnHr1*wJUA*mL>M>G&fhpf+j^820 zQ+4rla;?^G0{%T;*Di7ZMs8qSTz30Ky<0cn`tJ=o^-2AkkSD_v+lP z{NrS|9rusx>YbX zg5x0imvxDIJ5kWc(o3lT_Dk5y7wbo=X<$*|tfoi%m;jmJ@n6nT&w}U3$Lq7kE)9SnWV9Kl-$-vc?^@&0&tdlWej{M z$tCw!r>y1N=mS(segqN$C~0)6M|Fy3>P`=|U#VOJV%iu@dU z-u2yv7s>^00f#9ANFwL0b=Rfl^O56pZ*E>C=d z*=Eu26KD|5rE=*W^SqH+xL?}-rc@_S&{GLCt>+SJFb(Ia@VzOsd4ZYD&#k%RZ1Ohf z2fHmZ-`}3iwD`ojxX^T>CR~mO{ZnqE0HbjF0e)wX`Xf|&c%hDF&tji>5u5{bM<$e# zcin6fqxKiT<`509~qujuASfSL+o6`K9AvI1s0`mXoVfja#s| z+?;iXdmA=jPr$`1Yx)$R#@ZpgZWcVP3&_VCxB{f*L&t(MNn?YlNhHdyKv4lo`0=(m z)r}7Y%$(}sa}_t1D*hy*Z2YG(6d86|cp1o)#Z2IF%TXNj4nc9SLI*L^OG+6Wu%v{K zbw786wK|5Ip*G^O9ISmGqP+ny*tkFE#OKBQm8XsXZysD?BBACKEJuu5Fil+Q9VK_% z(b8*MN<$T;EWtA1NR2I%=m}@^dx999S}FRUdnDNQfit zRVI)JVD-#Jr#q=h>f3jDZ#*I^Xn-o7cs#gTR=tmS)Z}6~pxdm*$kbfjW+lR=O$L#Z z5B1m|LTyS!nzR`Va*yEN@f=!18d2Z3^h(>^SnPjKFi zW-?j$oI61Y0qcCRO;;1t3nEyE{dGPKU+J}E@nDWP82dPuosNmpCBd<+{s+G?SMBY( z*hVRa_i?7w)UXz}_?v7oMHju(Zt)nDeFM6xXZ#uacKnXPkKyKi(Lg@eApLs$rXS+> zG}6}Kw-rBzoBO>VmXG1)e)W%{f2Huxf*-@p{Z2-@m5<@(e)m0wJ1Fq;DC?UCNEYrc@vBCETXls#cEU3lOjO|L}L%n*E67F@2BfOcx^9+Z3UO zNct)J8`RgbKfoduHm6lt>cw|hBNRG;bhJtdw6{hCZ{ulIF}!NZY1KlOFsD^OyAz>9 zVd-vVd4kb7$j8$vI#86;DmYO5#CD+A)REPoGsBOpj=|f(M^>E>OJb50n!6^>tFqLQ z*q|8_2lUE)EcQckfCbX2Pp}X{i>?SCryOnumES>LUXyz}>$}VthRtagqV)`p(oIGk zw2PsRJ4XaZ!agka2{`5?6}u68CAV)TqR>p;@g&qPx*UOwq5xS|i~A7~-pzZO!WbT? zp?|k=&5|mg zHC5JUnksW3TFL?xK@&7oBW$i(9^^?<;RIAzjN+x?#eJj z1|0(8Z2flllO;Nw_em4z5Nq~!A`0W**$s4f74o&tpR87Ie_tIBv6pp%ze62?w~#+s z>jeMDff^mU4~Y)lsw2D@YHaf#_a~eGrbaDb&IPqV%xvQp?(l$HEPt|-KGwM9q`$Ni zw+!?Xa<4wFoq+!h_`x?+e_gyi$l+P3;In=jISd-x2sw-`kfmtJg}}_Wh_C)6H5Q}B z=GJ1!pX_nHH0PR6mIbFjcvuV2Tx8MI`U~?H|Hxz3`ojX=DgK=0FeDp1PB}l7e_AF-OAB1>W6u3#+ZaU=Fevn)GpSV2>s+>=?KbO=5%{n;VlB9Ma(fgMa2>k}P&ClZ=YT zX2(3hKf87k{}|;V`j_wSrSgy`@QZiAZ?vr8?%T4gc@lf4G&sViE9-5l7;jLcPfi=q z0N?U4o{sO+xBRUVOW*SL01YP=>093So`rgf4Wmnz6aw%_9zw~c*zvV=hu>DrgM=Uhds{Ph$Pldkm@37yx zhQ^#t@3#z3WbL=SaO%nZR?kP;$rHsDa6ylW)fh^JW2mZDV5psQS=?cYXNMQhXhrdd zrFhlR(t3MXs>`K5D^_SQ$ntVN z)(Wogx7nz@Zk%XXXcy^O>TAt;#eP>7s%{~U+jMoXnJIuz5ZP*f|XpWmGX68vxUz$)}!6w`TR0hU*eEI?UBQ9aI_dnlE5q8Mtj3Y>#r z7pdp3NKSFk2exf=7{Ww{Zbu~6jTv(-4l|z|Ca{C-a2X0l&!sho#bMHZ8|vww8ufJ8Zp&pUHivm3HeIs0 zg=7D1Y7pLR+B4qT+{Pi6v{F8l@E$i}h_>96PLBBg351`x875(yYh_?0D4;*iLc^0E>{q--c=;i$oy@w!2wAwgqpRMBcFA9aY&G9y8o%biKB&poU%#u^=&u*$ z68vDRdAkmjs+kCc^w*bIb^rPk>Mmv7g0eZQw^(UaKjIc$@u#Hq*R!lfPrl98Ur*C< z_39{TC^~Hk`4+L&tkuB^>BkQSBKW*pD)kkKtEM_&xLd4$rPA zcc$t881uXi&)e{O&b)8N)6%EI{qu#pU7q0OaX2<2o-((DZZq17t+Cgv(X2kt@xbb@ z4p^){^|ztZPR~ftdB?r7P%kNfURnX-q2WS+f!4cblbtv+g~m_1%V@d(VDS|hS4gHS^;sW$K}$(K!xYal#jn@JGt{r(+;s~%I!mws&1yaQ9IYoW zF^yE^!2t>42SaRIjAoJukVCFV4eER7l>n-i@C9+zjQiH5HPIPIP4v{H>3#ApGAigM zBOhu?rwA4F-Zyi#K?S`B0=5eJ0Z_z{3OdVa74$C<4`EREt0qONpgYxV9SG@xv6^)< ztcGd@{T>IEzBkljRIKM}3$|m`*tFE>P0JQ;TCkCs7O{~DV-B%Dnd8KqVJ9eR$;g^v z>wy}9b(|Q~W?*ZBEza^P3`Z-U-x+1?S*l*M_AHotTlqXrmBotkc_t!J{1Fz_-NZg> zTBM3YU^(%D=V0aY9*+4#Aoqasc{MW>uHA!&D4+A4%I8_up?wat&wJR~=UJ`OKHty) z7r^b&K3`_E&)=C&-axd^^I2C&`#g)%?Hsb-`Sic?8D}rq=MeqUe*hpu2$)P6iGdzkFHe5zuWr}f+qBU$;lC35OkU# z`};LqW^zBmT!HA%@#Zh0b~w8IAzrW_>BP5{(L3pIC)O!;4M|fIeF)KZ8c}H=Rk@eNZmvAjg4MrKAOR^P}lu9M<5r6m}k#)aWTRNclrXp4XNzuTPSP)6r6j0^WyFmHDO+Hsu1B`TMvi)|Or zn}&J(x5NZ5&QfK+uzF>yU%H)BaK~|n4qh0NBy^nOaon+fieqMV%oMNVjt$=Aj~oj& zvg>P~*8dLUg0OCIQwml9WgqiyDu(n)DXL$P>KOr4C$$H?RL}uYXny ze$FW=n@7e$J||`|2^@7IWh&@SBD?bn{aF^ScXJR$mq5LZwq=-DLD>nMqInw%(5Hym z-P#jvSo{dMktBNG;eJcqjjWykK%){Wy&IBje-X{!Z&8dAD(Pp;x25YUbOdxsz6QPs z4dN0-DGIDj46<(q0xq~94W7M&R_w#;<$l^!DH2=~$T-=(H{^d1OppcaQ(vb#O7uiLP6lmb@{q zv&3}s47+SyOkOlr`8urB^HVmBjOkE&3OI9XW$7ndcJiuUGPp4&3rt)`CplKaFG(}o3HO4Za=Wk2l&`l# z9c@<*^9Fb1qJxxo*w=BPO9*%qaqYfs_OK$`2NK(>xyrMCBGgrDfDA_GRT$P179+x1 z-Ub$v_eX6Wm4sd(>lkrXqwh+1pRDSrBusyX@SGYQc<9hG1Kmr!GK3Q%+XvFT9248h z@n>1%C%zJV)8zPXQ3s8Gck|=lsZsn{KiaDfor>-!;}7}64Zv3;?|BIf2P}??^8{yu z2+%v}=8G^n%^Dz?h0c1`skFa?_-4A^g-ao>Z4G*F3@#GH?-=iPgYRd7% zfBt)5kZt@P3j|{|ea8yMdws-s36D>$Y5sfc*WcsG?<2-PcBL8rCP*U4lOLl^@u5*Y5`%&xD+BLcS=Ei9~}Se^#o4QM~}H@ zK@J+j*gVWox|5pdh3j1Ewn{N;TCkYBVIb8>h3$?|uy)q=2V3Y3Wc_!PosPjc@(*tKENLGLqAMcbRe7O7?@`|WY0?yo!6gDYWV6h}IaAHgoy zgVIP$?)PNlcn{!HIBH{ODx@=`oQ{>AJ^&tebOG*>;1HAjGh=E;MU10139sU*c#KO; zHdVwjOW+RY2*=8~eNq=RUwwr-;x_ar_t*RSSa^RcT!#-c=QR5mHGp^ek{KM_u|R{Vp$X^W?^P|0#kXENWQmlgPTlm z809eZ*t&0ri?8-@V95||VGh^|hRAU3*T5o;(gE+nj}p$|$1>8UWKg~(iz`6&THP`& zus6-0T9OJLK9~xuPa^}lT9+rpsil?0C3>FOy9UoPivX98}EAz5bdTubnZI-J*tB z7WOF%%a8~9dU@W}me=q``Z2Gy&fjfno|v0JBs}slY&oyXg76RrX~k&>;kulu5LLt@=u4fxDfK46=|X~+C-?vtKl|;bIs`-&dU6wq zkrFUM7lDvQ^O=xRlwp>#h)8yi5(&lFaGm~i08Wdioli{U4tnR_9wPCp4Bvp4wW9cB zDgLl7ei;E2w&0d*0+gl2_WMf(mz(yB!`g41N7#Q(VE_A|JWn^TO_1YK+(|-Dc*Mtq zdRmYZoNQ@Dv32(ify!ff-A)s)+akv0ZvK{9Lg&)>YJQJ-8;bFerH5O)Bkx~{(mr3K zaI?42grBv~S8TQy^ueYOQr%LB4AstKWsadXutjx0j&)b*GlZ(kc=}h2JOj)fDlYA+ zbq{32>fW=g<3BnApsUvWaoi$>j{lTx`Iz4s1ul6+j{l_avLWUU71j=at7GG}52{b> zGduv4)>v`Tv+GLX>N$u>U4?%FhE5y*XC)x>>On@a) zf?D}04p6eWG$B7pP&2>n5moy$r&CT*N=yYVb;X}>D74EYB%wa5=I9%661Bxnm|`ak zgha0Pc{?H9PPnEc`tpFCaF(6$!C^?4V<+^r6E0zbK1qX+M;&G-Z0Uf6(RPX2j@GcQ z`~<@iVUrANDbQGLe>>kg=EDFJ)caAW;BY&k%&uVi#}V@~ffanlX+p6iRbW@}Qv*i1 z)lRt1u3+s)sGz`}*kf41W0H^Zjw^3Mv3u>;9KIIXuk-L)hm$nsT*B~;I{a6Luhii; z8NO79cQHIlhhuXPPS)XJ44P2dFNTSia59(1Ct=ZG zadGWX^S?L&konSwU81(($M6SueuE#M{B{1QOVl9zM&ZZzEIgU-7V~~Do-F^2dEa2( zKQ_!`DGWJH*w&&6^Ff&2glT*9EpBK}}{b-e(mc$5+ z0+}RJoDWJ>Knf)qB_N0=g-mcF^^01mkCl3oF~4-HArFHfHoi{-YFM}sddR$|Bh`Vs zYM$XBd!wt7uXXlDUFABB_to>*Xoc*J{s(U%d!w$#V`vdKW3+7y4c1o5$|c)}(?H&& zao=AorL6zBy;00Vm@Mn#C2D;!d`2PiK-c6|EPJDGphQUJs1-N2Q@3`_Wh9f|fuw=< zwcXHejud}E7pHn+$j%Rw)(SFzu2e7s6_8B70uy-{wt{5@47x!b#uh{{4q$d$WE{S} zlp}JnOHJwpdHo@Kqvv*MQl3v-+-iHHFnhn#rv0C>{#L*jMRV(qeni97@ta$JpTS{h z+t%Od5E6yfUthc(y#AsoNNUCUI||+b{!8|LK6uz@YW;B=7`FCqUZ&UHLtwMGc(#NA ze|mWdA$8W5?Ob~ur1(%>ygh5L5=q1V(dMe*>8HG{sC?| zrJQ?!3fVf!_6nDuzzi+@w9q{&QzG_*t-k*x^)y5OJZi{&X8mF7W81r>yn@p;0RMS& zpWq4%-6th05PRFk7H?U|M}6dDv;%_X?~~F5@E!FWwm+fEW4Id&T^`fbqwkYiAhEQ1 zgY4BE8Z@aOC1pnVK`Q7`LHIBu6l?V*i0lV`%mSvv4($ zeYZfTu+5^xuGwsGYFe#5fl?R`U=&1PyE+CcfCSDqlZO*V^HYwm5#Y3d%MzhrwYJC! z)m+31dg%(<&f7gE#ozz5y^G^2DgU4@-{f7kvy&i+NgybmR1HKGTpCZMN_b!Z+dUH? z^-l;iEyoLHLqvFVa<}5L;BgPAf#}}^q947+f=7T-yFC?JGXpt!jm;tUlgsbRqxEg`Z(_RJoPOX5aXe}))R&ha%?WBWY{J!zi zuVD!cN$lP5AWD!r8HkV|RThr#5YZw;Z1)f%I)U;ccY8o8C>5;#xVe(pD6oEX5zz#VzL4LSF7xRM1~4xLj9oh#S=nbb!Ze@<#Q8?pG}Vy2u7Z zr3ZF_V-#@-?o(f0O&StdQNxEnPwRium*9suWhlTW_3@MXCYsyS33XZgq}e7q1K$x4 zn2Mu8u>QPv)lUWANqcbcA5PN9X8Ke2AjMp!zWZI$;A$NEzWopuw;XkpYZU@H>ZnkM z*B#(d2Q-i?0b)2+5EsU!-p!SCe+)^-g$3t!iOT!QBYMll>V^r1I^_ty03H||!*=!Z>H5H+&A4U82*O+0P5~Hwv3i`AuZJ#H$3#** ziV<7ab66me(F%}oN(&=(3+=dEy=pjn*jbm?pG7X?NZxKKqZ{Rfc^e2JAzmo#R!x3+ z>wfiC%J=tok|`1S{%M{0xvR)byVM@B?rBcG|Mz1X%lAvpNB^6b@84V$lJ9SXA%fWG z82Nr)H<9lT{HaCx{%sU3A5y-*e>e4bD93(uH}Zz$`!!4u`Tl#GBjniky&oapuP_z3 z)EyT_$oC($Yd-0Zs5vCxUuY+!xsec(?@zN63hR&%lJ8$;C;a?15<>F*WIN$zCWPes zC)x?B76~Ewepe>Qu;y-xkngVnfeMrF@2a!rWuHO?A^H9mCP)Q$ZH$43O?QtA>TiT6+FfTB~tsj<54Um-!JBCNWT9VUM>0l3Wkk*e=EaAzW)uw zM!w$xM=6$ke+a`yzJEExM!r9XVI$wahhZb%f0tn+-`|fgxEC$ozkOKK^8FY<=7Zlu zK93*6tMPmjKR)^U62Bflz-J${iv8M_wQ-U?cssM)D6`p_?h8VskUlbju`G8)FNsvbPrh?hP{s^j#)DQrn zk|SuwL#&YM1`Vpzhw``$;+C^D`&m!o0ENhDiPkBov8<>Uq6M-sEq_%Gs#imIXrjgZ zpj?&r8OoJjMVCj=@pJN2Rk=_xUJ~(AuZDkq08rqcl&|SniJ@ajS#kKV$6>Rk{hMDl&TOTMG8+3guf#Um*#u!1?US{R$2{DY(DPMnv(lxbFUJuvW!YDryNg@>i@ z4o}MB!1@&JzN_XW&TbMn$NZ|otSn}FE40Q1%uc&8&PB)&(r(siJc_zQ- zS*s3jFkd{AH`I0W6#e8Vs>IN6GYFu(T>bOc?%ae4SJ3;n?ifV1H%Lc`w`v#OQ0(2I zj(fi&ctY6};17{}HpVZLe-yreCxEXF1$6%?7oK45Mq#a8>VjHU62LZBJ43cBR8i-0 z`Yv@NJ+rCwnq*1OLVA8v>6MaxUjaU`CwO-WA5FCKFmgFo7M3E}x2OVt@j?>iTeM2Q zJT5P*@z)b5q@2*>UsTCQ@V;_++`R=4_4b$btS1UE>{}Fvzetaf$K5VInrQlX-N6K% z%WZNUEk2<`)3E;>!7tjR?$==gQtYSNBjM;%pg95riD`)5q=Py5V)^PVNrsi+79DV^ zS9M^ITB!q7YB>S`sm_48!#dVC6xPGhJY00o`-cS*_%>YCQ+Y8Dh8VEu51DWfD#ouzEQm1%A2-9`I!@Ti6P0W-3=@ zp_H1x6>HnFTEMndd+6SR4Aq`MFp=Qo$BmVNV3H0h&=?nk1D3?`VSDG^qE7xo48~&+ zt-W)Xs|^FhJ2wr)2Ws!!<6w+dfd%5Zv;e6CD}QxL`~bR%rMXETU;`B2wvgK=;cXGY&UpnAMX z>>dnqFlxwWQV&OugHn}3&ju9<8v1n* zfC=8S`C@y|PE>gw)*t)I$=Z8%q8bAM7g~>O5U;p(&TI zdYN(q!`k#U-DU?}_9DB@55RWQfA-rycZphs-&Xt>Ztj-~AU%Nej=zAnI>gU?pi7h! zzrpx1+}zJPziF($@L%R{9y(3ddulz`N2~ao@tY#}o18m|5OA$RBmTyXif#Vpnh%@f zZ{&iYVC-sm_5_@lsI8-=KadBpLvC)+GZ~^R$jtyat)}^#<6Z6KZ{9nL{7tvlTgBhh zp2hyPi@%vJ?K}xgg9_Tg-wcxSlXdyujlT)q-*P_oOPasQO}F@)u=`sQwaA#}Um&*n z%7?zcLetcQ9Z;hKlT)FYoCKWv8YYJ^ojS&B@C07Q6~y=%3@W=>LiAlbRLpGDD>-E7Vswj<|s-RHYfJ(U-uz( z8L?wp@U#=Md*adWPuKMX3GPkq#N5d;KPx5%OwQ|aCyR%flY_{s?_|LVE}5PjJ^~c? zM#-Hl`Js2KQp&V zuH7@@YCi7IH?tHYA(w~v8#)_73+f^hYy$*faG};Y@SkG-r%S>Z!j+r zHx=j3PUB4(S~WfId|N*%4eIi|mIAwxc^gPqK80R5kVJx-e=5xBIZQS=4;V)D)_1VZ zbXY&8`_IM$)`KHsK(vsligip|!#dkg&-M>jmfND-Q2!A=+0aufQV1*9mgR3cJu<@NEnd*{{grD%S zZviJzHSQNo1gEk|E(IB+xf-`#=80JQ%Gp&jHBdrNQ2pQ5OpTRhfB>!|-@6~8nO+^?BtP)|v)G%lvmb+dHF*S@=!!~H9ri3q9J5f(y2?wA? z{2hWK&Jcz!5f0=;*t#R+#Wj3g8sGdKA*(MIdR3|V{6Scp)Jp4?j~Mm91?+L`r^k`K zNsm!E5D1XFS(wf;a>0}O>?A2xl!fjX&ItZqChC&QbjeC}wkeqwRMyzX4NO%n{Qt@f8W~nw|{Oc+W&vsUU}hn$Gm=H!t)_} ziLvpCk@HsfVoP?&m)Lg5 z*7=Nm4^H83XojgY+=(05o9bBU@>HDE|HK8KFa2&?+Ta?`suw_jqVP*|JiiMYcXtQG zTH(XO!X3lHox;M=Vd2hU;VvfJcxorU4*BRvxhgLCQ);}x5bxVMuP4y$buT;-3>)su zb>I%t+|zJ78|=A{m0ST8bk@EZ@AHrNWE}FV)&*sE$|Dhy;-qm)u7et@xY+f zsB4TfuLo>9ZXQc`T>poI;Zd-|4Xc`g$CR)CYw+0XavL6#tN-tU$6$1yXB*qIzJCb& z@}1fQ?jJANU&RGM)JeB<3mUSo4$gKqwqtF|p0`PR>aEW-?$74$nz65SLw`bx{6|QC z_UMHfjGlBG`-3ZKuYmLs_GhpXMW7=XU4S>-T%2?q$yVX|1g0j!B}NhvAkG!CDO=ap zw(sy*fw$oStS5rYgdJlR?HD6$7%}$C59;sG+7|nJ|4PoE-QRvK^f#~H@7Ld2T(o5y zQHno-&AXcEZz3$h^!NUJMa1{s2xp(a&-cdseX1yA_uo@imXl<&F zse?aH^IrpT<~4Dt*j#l2k2oU*L&Fy6H4($2d)U-Xj?Wq4n+#1-G{(yl#pWVk?bv>x z0q%-@6p>^}#X;HTsg%DRrqy<9^ww_5*}ov;WS&M*qQWj90I5o9L{{8KcP?_$x!H?7 zerZU7JYBj41z>Ivm%a!t7HK8nX@@Z_OBEmu!z*Fk;z2o5ucJhc$f_uz&jLrhM?E>1e9@+N~H(3 zbA#%pBb*{I)nE(TqgeC$iIfFJRfvqHJ&Hwsso+&01UO?Iy9b@ESFy5w%$zu>_F*Yi zr1_^{iKmNb^@8#UjjlvXqYH-1DHFA(AMr&@#QD_J_)?sQl2myD(QA_}Xw8JNeVCK) zwUwA5?E0#36v|^xw}xAfhFg!yJyzh>ZQ$0G5=?igoBpmBoz~rP;b1jEK3NxdfdS0k z1mH*|$i5223m(TfAaO3Ho*6cv5MRh~s%|GsuA<~Nx$hf|rq2;a0)f&4P|7Usj7`=Ya{r4fBy|F@R=iUar9{-&?j43)mlDMJh8XrV${ zs1$p9IMK}A#%@mA0+=pE-_Rpbe2eH~x=(f2T`aN2zKD%`~N$twc3!1UZI!v)G_% zms+6LnpWE4QX7+JmRb&$ninrvYIK}@3j}28V?!#Oa-U6W^*6`b)@|dj;ar=`bg*dQ z_{CbZR0Ym4%k~X5J+|G;_Ne2zY`sKL5Uu(|AJ0;r%4vo2)H}zqd{-ygk8sx2+DMxx*T0+> zh`)iU@nMu|-B4@ogKZ|I(zk7=0a0daZv*ATmlP1GM%Ipz8opS)kUJ77hg5mNnm9cb z)TqP1x%!^O!yWUVVy6q|>LXdWPZFGr&&$Ft9A5!`x_6if?7%yEqefyrB6Wg!KT>Pq zN$Ud>F?69FMJH#r%*g8mRskisSFl_*6GT;g@1?LNLlei!`~-G|h!bN!7*!4Lrro zZHbrwn@&CrJ1A%*yJ1w3qx+q&XeID%l|#VzE8!YuSjWuP*kWj1ErsbraOsh39^xDbdUa}Avlhm z0Xe}i_dl(v$&a1F;<;pMOu|Qz32wC+2^KLy2SH5I!xeI?g>iF|al>i?HK~Jk52%SZ zFy0yF=5@g9xEKQX;8_5iSL1_p$o1if1BZ2u@WEbqTGb5Yw-ALBA%szwHsAwIUohzU zi5eYL6A2{R4in&|zZMaKH~CGir>k%8)YN77vO`iA_3NuZ3Sl%x@PoAqfmxN?o)BKRE~FNgRYGCHS%?ZO9W2bQUV&K&gr!9uWnn;D&Zr1<7C1HWx& zbTXuZg}Q3yEdk z;P48se|Y)eZ;)+|*BDvS`H?qxsaT{eh$r7;c2HS#Z`a6RNnHO5w{nme<2&dV*vRP{ zyx7Re6I>8qjC$>_ikczMKnZa|@*~zX7^xQ5^jfLl z`@cv9O)Y!kJZ(%!Fx*{56biu6E8f1C4*<8amkF@rVLxRUG} zaGM3#vxv5Yp6y{1uG5qP%MlXpJ6ymNb^D_Mku_;LPlnLEFUy=4^oVYkzYUw z!nx?1reNhZVPf>u$|g;WY}M>Vlg*0nak8NlIsB4t?o2WmO45C^RF`mmjd3F0W$R~S z#cfwt{=&oXb}YSKPJZV!(0UZtwnauiy8?O*nk&##(H^^^3I}Wd*OO9vJMaor?NR+8^=XU-rT^+~kgxbI-*`e7)lGQ)F>@5i2iB+W{-uG79?T;h-0{MQuX`$8UhRE6%UB9E)W9b z=*^2bAL}owQnZ-*&2~+HZ zb#}saOh~sA%It(sRv_UlJK=6SVJs8++6l9mAcNU`4+gUbtF87sLYE9R(=ImsMHKto zPPo7>7R_SWEcUXUdV*c-!52_$xt$PW7rUYu#R^z#ft~vGN^2r2|Bhm_?1Z=MgrQ8B zWG7VE3D5lv2_x);N9}|m4kQe)6BaT-#yjBC9_e$JE1Raz zU7kNQeg0~qq0iHCItMtA^M-cN=U2aPCw-n3LkjrpBmWut94EDp(Y3dOK38{P?|SI+ zzaxDv*Zw^-;NYXNf6oqK^snpFoyfL`rOzV>+tfMnIm^FiuSn|bCV~AsuDyz+&LxLM zQs*QnAsRag7P#4~?IajJsS8m~Fq7dv2!lGaQbU~?M5;8C{BVdmOT?G|6G@%VsS@gZ z^x$Tw^LK_Sxs-c7uL=Oc*ik#V$&xL|*vH!VOQ)Dn}*mXyjjW=YuvHcG!4%z=a)tvngr1Dtdu@{aN zA`SbW-iAoyD8&%zOluSEW&lSDlbf_}K7O~R&uzAEelLm?u-gNgKDS`sTpPvy0e`jK zzInQ|^W+j~r#<#RQhu^7e+Wvwg-EF#_RZ%%jt@Ja#)EsS`xxPB6ZXv_2NN?&Tq_63 z1Kju&x%49u4=i_dGfH*P)<7+rJgaIR%{pEQ(kxmNY_Wc>Oc8?ZW@Vi||4qz-NGo;w zl}>4x#>$?M3G^HPf>kU%!HC5n9yCfuI_(dsRdp=Vo3MkP0Gx#5wCP*+0V_pVod#pq z!RV^78T7<+X(7~RGwAN@=-RPz z5wrLT%a}yvthfX05Ih$+bf7|YM!=XUPuQf5dBjZlS?iOLqyeH-I;0_u07e_xAKFZL zH`ZtEW44)cU{V&YfpRRUmmW1XREF@g0tr!gR`R*39Dme1i?LMw_>XI?{9)$Gn^UWq z${6@Cmi_d5#7X43yhy|AX%dV*LN#7uc-5!=&7|QhQIz4cXt!i>JNAJ3l%PvcHk9 zajPr?kP1lRBJ6LjdRX@9{|)<_KTtBMEj&j*MGX6YkNr(B`meV))_=e5r)Kou-L`$f z=L?CP_VBB?z;X|P8{0$K7i|27JpJ!uUvSH9jr-gCU(NJ4(bm^LOZqEN#QvtkSL^Si zuOEy)<)Hq2^+k*Qd9sM}XZNS*qTj1O)W@X0OjG_=Pwx??p%BuS`F;GYu6B_Pcms;% z1PW1=%RGvdpL(0eBLKbL^D#^uzByj%J_4aBeh;o5>z<6D&vWD^_fb?Fh;Y#AZi{}5 z?VmM&C~+OI-ydC3~>8YZ-j~ z9V>9@3dXiw&E;t+U$aO$(BvLW)LcXzb9zC9LO<|nV;8Nm|8EX{zCGeU4nK>bO5Z&E z{5HyhpH3bdettpZ?+QOjLz;&lY$qb%XTyaWem?KsPWY+AhVTt_0?<=C;pb_opa%E^ z6|@6>Zjkb&x_k@pGw6=C!%r2YM_L#c{d`voe*Ty0>xqB|$iTMj*$gD0Rbm3s>k%gY z!Ub<@5TxhxG-&bt9bqWSjDZ&4#Y9sPT6}JJgFk)&AOo9~*6WYk`g~j91_Jo1HTrzP z*k=sDU3y+S)%tGz7Xhxk&;VR!gboe}e2Y3b!=!?nbOmi!>-+f|wx4K13g5+1PuDfpwnIMX?!@mpTN0=OeCHI$OZ!D>>pN~Ha^R7;2C>j- zfhv}GWQ#_&SFmeD zHl;3+Y!HwH>HIM@3r|q?)ND9BL72zTcMl^BKo#1J0!ga$&oRUSNbv-2i5bBgG0zeI zCOQX8be{-~!c;}k_bGSB!p*(P;Jyz(KEirtrehMWn=IU;!B2QrG| z=Jc@CqUhnpN6Lz)IJC6Abkk_(Rt$$Dfb5h*wN!+S`ctJSbZcuMI)KTu{lRQXErBza zJWrTfcVL}&z$Q;&eSgRNZV*bP1+Pu=6wb+Tra6XRnK{Q@D-h+Or1oYCn-;px1!G%9E*!;|^^&Q>8GjD$sL<%!{d4ee?dy>~V78YUfb!!`9kE;W0(_;2;wH}}c2Cwcg z%F5US{K+D9#XTI+3t>~~=-I{L?7mn+7dwG&?m=)0Tmu5z_z?7sIuULL`omqOH}DU2 zSFlIag_}BEK-`lTGJvw}RlfAB`?{lJZ zh9Gz?V7!&lvk~@<0*<-3k3n-!VH?y0nv1y4N$m65hVQ1F(gu9D_iPK_eLJ|F_^#I% zL|19Iwj1BQ`#CE(LRZjseD{D9f8!R7F58ap#!30brhJ?6U2iF#j^gdYcUx|54ZeFj zKz#S>ossyi_4w_?1HJWCoJGX5?cnE%h8g@;#&hLn@!P)$PQ-8XB-^3z+pDKX;J2## zTf}eY{V@W+eL^nH;^*GP>OKg+RUnf1Z9#Qo{5EFhe+9qIY0S@U20s_)nExwSs6+E} zv*W_?+xO(>J~=c$cfpKy;Tl>Yf;j;(g+knqbIMc#s#|wM~V6Ydu_A|XT{M$$zSHGcd z&uce6it5XPZ7{`@iP47oRPZ@@q`_HsiBVQhW}Iw+o-uPi+l8J8Tj0*}#Pd z<1-wn!XFHG5piMr(}5(UQ${evo2Go&lar$5-Mt{MAdeGH;SBgTD&EgSLhLdA=)<*u@1 zBQch(pOKA3TwvydY@`G`$5QSbH>LVOZ~z$k)MXs?FtKW~dDxN<*#spq1?JG@o-;&f zzRB$*{b?k)wCGPO?!U9;m2u)M3~R>2HYq)j5m0*IV+;TlEFAH<^}5_sC;)y1YEj|%_2NyG;yC| zT!g=+XX7*AO_6qI05fRHUG$yB*V29sUY9@wUkxb+e z(PmTL#Nu(xPhn#&^xlf;cMQ(C_KfgdTQBY@kn|pS<$6^#U%S%4oqj?3C)0I{0JMnp zTdtXwusc+NVTYVw!*jQP#U6y=@S{si*lgtpHu-K6_sdhi?miHtyQU&Z*j`DbauQ{6vwaP=L*5S4RR)FjfKN% zYAp2}%LrVqfU(42c&ObiwTpACbdSoE+Kp>0sf}a#<8>{4j_|Q`!C2~H-^{TnNP+n+ zu$=QicZ&+p0j}c=bbvBaZ=iGP;H{#ghjjp(?uLvQ>>+eMnl8dM*ZoJq0f=K|j1O)e z0v=$@^ene8(c{lSFb^W@RCnkj<}@>KCkCrVD;c;;54=DI?vrWtsVl2Etp$xf;^kO7 zhla!Ofp^2epQmLP2L5fG9yqX8UNNS*L|QAA)=Jgh9c-=Su=K!nK+MMrNSoP?Q=eap z1&c)$EXqMo&DgM>_(8q?pLjh)rZ*kJsPD>xcL9bzgQ$>$oQ!RZwu8p&R$39xeTABAoN+voB1pWs6f5=rF@no zR)*U%1VRiT7m3Y#)3BV+viT^>J?EZR;88seMRA6(+gh~mPX>NQ;yYo9Ujw8H)LN6W zs!@ttJ;4+>9&sUGg7R+1S0rzl?=7r%&gd@89{^PqyjR~qCL<0Sd*3_e!paJ#5m_LD z-KR9FvRq}D#?l(4)TpzO;#e7UVjUOOc5p1%jv-0lEGzIZhE%w}gQMsIuJxdv7OtO7 z5)^DIE1iH9B!s9XZvwU?HQKXT(y~rw+1Ov)6322dwwG7r*f0aRv(Vh4i=}Mre zKyrv$qtldB<7SD$Vm{spX%+z9{e$2neNO2zH^3#PRCHk#!C2qP{1QO^PvPn(>?Ys^ zG)UZ}df&ow)l!aJuUvtO1EiD+sJXJ_T_><4ZHcDpqGQpO`9dn^y%r@Dla>~6*OX*U zNFq1E2~^=h3uI*BlLD9fXo93RzDi3Asqq7#ZJ>jqQsfha;1GncM0z$2YyeS0^in|y zMJ33zsfbB>B#*E#hQV1-#qtseRx;JTVov7T_F@3&Tf)VPG6gKNW~)p^dYqbn3wCkg zpUL)z1ShNMew?Fv^StmQI=R6h-A4U0;m`Zq+#Q;Y2B?GvJoFDF0F1*E!OB!CnDjNKDN(HT+&}nQ6qSOTN z*a(*+Ndg<8`5%l62U490bf2SKda$r}yR#|-*Ttf+gX;C+YB-W;q^0B+Y zMNn*I@zuC`Ef~G*H+HBZ%R9ti#;j@Sgglp5Mx4Vn%C!{VcaZp zf${i?T_u;o9ynf7OaG#6NhA-PdoO)JtTQ)E3$xBlBwc_eHrT4#69@r(QIGp!eRm{Z zLE7vr&e{ecGSFaCF6ku==Qhnk-Y@NhE=+(yP?9pRvicIHeJ`^--0Xcyahu{8(0jZJss zi#$CCNov9j6nn-_c!LSj+KDVyz}5=w)aUGC3vNcSTsvWjo$yNz5+>LQx7!Ibm~f$; zaE+a?|4q#4DR#m|OpqQVjzJGf*nOi~L{F_kUcSr>aE>WM8Kf?^?s1IHzeB=0D zRhdwt+JsQ;Cdtc5`zqIJB0U{Vl(LCG+o@aa)Z^1E-w6eF>N8A5^-1dHw_ulA5xpx9H~L`}YuS3D9sK|%%l?Cm0w({;vNK^(M%sMBgD??XCn zp@-4If&>IJX*7_CNVVi~Q4d6Y7ssfw8~K7OHJS3^Y@uAb=IyuW7a83;lOibkAA&7| z#ONd#%f?|A=4~M67eX=d$}4c`HSUgEHZ>+H=lYna1^6+1AD(}~k5B$y#qVSMelqWl z8+5(|Jei(?C(HlIyw5c6i_PaNC`FQdK1}t!Hd=vT%FvzD|gwhVkMb6x1k;OOw zQ>x=7xTLKHX%u&&Ysms&TjUmZ)YGbDBUmjP!D^+}0n?{enQdncpj5n3?;4M9AX~sH zt`2_@Q#}5)1Y==+8oQ-Vz_BO=(fQ=-Vb}(!oK^!@&q`VYnWpSRDgVvl>KS`WN)2?a z!BjTDnr+F4v=&UyP0_3 zyK%oNRm#Zrj%~xpx&ql`9!s3GL;1KV;K=eZ`Sc!ce6b366)Qj6OZ9capvX!3^dJKI z0hg^PRAPLDnDM2SHvP$hBo?Zx9$uLYuaT$ne$rNHV^HqZmZ4D$b`q_}Ftp_#XizRg zC&Rp!%g8F#^RIAZ6%>P!IffXl68W|O{5XIbbkM+f6M!8o=UC2rPd-(p&YEGDD%!%B zCgC=?hXp&KAjJx|!)J$aa1P~4td{F8)AELELJ8Vc?HH4AQA7eM>RBd*{y)Nlt=~JfrwB++r8^vF2(O=acu7R0q`B_2~?lH3~0ALms2$Mc4%jI+JSnI zl!fHE^Tk@6PtpU8J!}Y?(Abk>rbE#$H(Z;8epRy4K=h0cEc#V}zIX#W&CU+eeF*Sf z$OK@@fn)U%zB!SyZ~C9ylxoSo3s5>Gc(F^JaEZZZsrgt*j0W-Y;b9T4xsW~1h2(n_ zonhbju}0G`gTVqan^OU5S&62M;9C=~E$WRMNWA7$12oF5TD1h9HQU5XTBGP-;@e!{ za}u#OYt)qkh>_=*vj9ONQR;@(?0r3vh?6tnPsKn*i>4;jfD^%{8c0&VfJ;Sw9JbAg z6eb@j^;*JYc1ULBh>X_G3h`h+xVR-AT=uS>6&%vdDMnL~lH{jWaR?=H9H56#ihP#% zRnLV?S5rgCP)T|SS(sB-Xvo=34>?$jk*H`CA^My1SK^=X{D`>h2lJf`$YjFgPy*3k zfx6fvjE+oz{L>_y8JSS7`XM2#OBhk6CGIe&%q67N`L#T7iCg zUVYOXwuaeHcmkU}`&vGaEMf)bN{1}9paaDR*eL_U;I0T@3GaZ)5y9I)hli-6jeE40OT3h)zk5PsQ;*UB^G>2Xso!L zp7>I%tYnWsLD)ZGxo;tOOJJ5E3I~vcIh?SR>xn%b^-nT!>8Lx7r@+2A4mLw$$-ry+ z7KE4?XFx9W(KxamAoUK*sAh z6zNNlj4)g@y&%3X&KGTR(_ohG}J=J#xuXfY= z=%FtN=ML)|xPk=2K~Th_3WR(B6rLidJ5|R7O;5IjYb+qCMTLVqUnV)J#Ii01HK-3S zUek)=qow#fUEHEZZBckQTqL;42mk5vw{s?^6D z7-UKKAPZVi;S{NGDOWm39v3Rst1y$hUlfv;E1<Y!l%<7$P7Ht;YoVS=1GC1#WTKKj@9A9ZDk4zQm>QS(;wmrQv|z z8g-^=Qv3;BygjRXpj2=*D&SIluCUSS2H^|0HEE68`VUreL{4_eBBzbkT}Ykj&m+jJ zERB~Fh)|)Fce7$wU+rjJYCklaDp+49N`=!>X54LB$`RbcrZ#bCj37OX^--nDoAGl~B@Qjgr?pVI={(gGWKE(&IRhdPka0I*AhsN3z- z7S08rK2do$rVqO*#?b`(1c@T99eh*4e8p)~E>BSD;Rd0eXF)09CBcX|CI z-CqCMUjHm8xXf}+N!dIy4pMK72gNx|T;IEi?PJrsL#>U*X+h!o1opZp3;S6w*=6mY z-;uyMnYW<;O@?DFwdHcav)LCAf5naS6z+C;0)22l0Umup{{I z?dpsZz=`l;-M)~ryVTo%vuz=EsC6S@3xQ&}J3Ijt^8|VrGl_|y#f2MOSJXa=9B9)z zUmdHj-h4JbUvI)GA5IVKN{3`K@N*iJ>H^E_(Qo+Lib4ub+$*4x5rd%N;qygP+-DiY z`X%1J_!vd7-c8)Ocyhl}ZqiBE$cZKx&^-!5!&h?sa@J~vFznSnmkm_Yyl?aWk ze0|yLcmd05!)HX-!~oOrtiQ4ULsX32OCt7T_3D~&!~m#5I-FW!PWQ{an=3Km1`D3R zdR$m=ZkMRMpX7WWCrzt2N%tTyWqaUcWK>!Y)GZXB64`{oAL7fo(gSZ`6NCm!com4_ ze|Wsn4*Shb&l7F@3TlVq=}r4X#8@yg%-_!E*+EE-aw2FinKaM5pQD_x+&$J)_!=yJ zz4fwXs>G(C{`gs48e*@IcJ9~hw8J0baZ>&=UA~DMLp=T~k^u1prVzyA;Kl%Zll1!8 z_)>*K{w%CAHHab`Ipm+b#gYcmT^I;=8a@Wr2yRE)58geBhgQzn@JMXJ_xHp0X;TsX z81ldxCr>!A-T@^(#&`q0kX5EKf#&IPmS>2Pf|qSFG) zs_@YJNyo}wbWnJT=bG120*mKm2b=YCxD0+QqUySMlGoNtB}H_I=U7sS9xu2QY^Uw# zu-K}@@^knR{TwzpiUv@B05(PRHTYx)XeR`tS9}JkmmgcuVD!VENDvb26$+Dx#~va8 z=q2E5s>#*Vepr!&DzKnL`vJib{uLQ`Oxav?86K?t9jU$75m2&#vLC$?7T&6FD?C!> z&(jg@i3&CT5RGPAU+_$*bHkINT;Mi3POX1=KU@Mj7bX$s^eoIENI9H$dE_;arC%3j z>eL)Oyuk;u@$du#1$d}S|F*vYQ9kqwQPf~iHESR&3M^#UU&xCh;Bs)`lX&_H*O<3u z^0pR#F(W0gjxv)ohtffa_t9BSfhrouQ(`?eJKf!x`#V?;nB23W87;Y~tifravPP^Z zYdAz%15%sx9OZnLz?7b;x@;#Lrn}X@Hc22soh0?A$Ee-UNFJsBsRLWo2M9P;b_Pr( z=7qURtgya1x+Sg>Ph3NI42L)aophDB0isWV!n(sf4VxhsC147?-iyh@I;g$I_Lf*U zHw$_-TLc&=#lt!bh&NKe4Nlx3D9x)}Mcowjd@`2r!9Eg^q1w|%|A?23=MnxAV0r)& z?9h+I{FJNbN}+|TT_m1myGZ2P7H5af1^N)$8@xC{^-tFeT~fwfF6YjuA#DOfaERE* z_u+=!^!^+yB`U}#D`0#dPDL2XR>U1m_&&Vryhgqchh0Dv4!~eNS(n*kP%jQJss@+{ z4oW$Y6Jg64;)_H1dMIazt6v9DL1dMv;vNG5;6X&VL&N(Z?!|`lqldI3#C$dNBI!!( zd_V(wM1-V1DV36q9U6|;WlK%jM3rdDjtndNc++M3>avsVvOj?NeWQ4tFD9xCzY6>q zZtnN(V%+C|^zZQ7cZlDSftaYz?u?0w#*^XZeogHMOL53Rgz>-2{YOds)Hp$i{#4Y? zz{qe}SsIIDE7Viz&D^g5z`?hSJ$*kvDQPJ#uadz~5}2+y2DG4Y1Q-^u zDm#R81=$CyGWlN3s+5IG6p+#)3(@x}vMQIHt67yjA-zEyME(0$AFcfhYyTd21bu18 z)e3W@{0q8#lQt8Auu(VMG!Ynh;_YGU4v2m?*AQiG-#w3_)UDTJn^-FwgB1cN$h1;g%NP8Y4c z-7v`ZbX?a^qg4gm)XZ~3YY#KUiMSG+oEDmYc@?@5ij2ta3`=0{OqF>ti6s@Hej5`} zPA3mzGT2#QCyZ*;G}QH8f{_F8 zV}W|^aV`;p&66hNRu41O7%o<%S*`Uw39Xf~wb^!S58A2U^tUtyFSk=~VX92=1vo;C zs2UgBPmomXD^HXjL{C^x-jKG1!RUP^j6E{@7}ZqI`r2*p>W`k0HLv~nS8E;)jJEoH z6jLc6t$h`##pUV@Dt{_4$m6=dIBvm{dDt8 z$8#!v&zSeEcv?Hmrs#hG=s))a;q;&L2=17xjEDVTH7V|}gd6%AL|eK+Eh;VE(8^er zctdo!4w7%IdQgaR8}4_Qov1kifJFwtqIe%cR?UHBQCGBh& ztl5R)2zf|;E0~!vQhtFhe+YJAi)I%HL?O9`h&2v|w{UsJ6>fZ3k!RfhQnT`mT99dx zXSkql0`6au=wE=_H1k^ryv03an*LnAS4Zn+##X z^{`feB!fZ;Pv8*>G;qy>h$L3_rYIr-5{3 z<4_Q{Gi=R+xN_(Nk<4%c=eA)Tq{x(N-GYvPEMI?PB<0{3ps@)ICxH1{8K^WuWvTs5b zaah>6m_;og#Bmu}#6O0!XIk{2E=2ty(ZjHlNqr6>dVt--5-HBnPe3PXNAb{r1D<2z zb5uw0KDDP?@z>h%10F^?I2O$FpRD|)cK%+> z|3@p{XXpQaa-^1{9rI+c_k4R~@a+)bSJgn@aO_z<+Wv{Z! z?mb)X1G)F1n5bLu^W(>GbHDE%g`5oOui&@-5WkHN$3!i`uL3`YoBQ3f6!(tecOHHW zd-1#6JQ<#j-2>m#bP*M#qo5)rVe7Xo)Y6&+0#?FE=GL;nA+4?n+RV#uK$m@>wu4<+WMgcf`A)@NU#wlPom-@ifAy8M-UcvWusAPDrgi@6cLm}@hK97 zC~;Yh6;#w%LD2`IQdA_=L=lNtz)BR6K|o>!Z2SHH=T6(%+06#g_wA1`clw>v&$;KG zt71H~FT_V^;;ZTd0s{3^^-1Tp_u@3}h0+e^)G(M$;}JM6$9PzZud1KAl7*UJ3ow~% z&Cz@^2S+grx)1}jd201`_k5QBXYtE7JLzCao`QgjdiyVT^Xb{@>H87Fd{yqRJ63uZ z$0wOX>&`8NX=ew69|D;v`F zA7i{<4I54P6FulsPY?3W8zk8ky-Ox^fZw#q7yJf7p!na+t{95>Au7M(0~-79(nzuL zE3QMmVLgdry>`hz?D-W#C8c8cg&5bSyveZVdrsMj1QCr%z`^glo`o5{#sBDZ%+#-D zeZMx)t=6}M%c~~gFW{N?1%@B<8sVtXZft8ev9+7p+R3(dGh4g4-gYkCGwiJtU#MS7 zAeiIN-CT@1FPr_r-8=lgV5_(M!6aXgKB+}47+!QD6HmBX{GGq-sNQS(LF`gsVZ~6& zwJED&u6J}#rl0?s`g)v|T6{33fZvUT;BeZO>9pMu(a2ynNERNFq`ZwgI#PV>6@hB3 zcO>zavGCuWRUA}O?I5shi~fAw>MZ*6dFFj5^v9!myRog^#MW+VYbV><&1~)FdK&^Y z+t=wGUlXLs55kuU{dqxu8LZC(`uj9L_}c-Xzbyf9YRH@7TT*aQpBr0m?G9SbSM=8g zj(<39#2wM}Cu1K69T`o3NT^EJ-rX(bXi=(T%8EwN@)Mf>;PV{6Vh6tBE#JG_eZdt| zY8&}lR`clcA3Q@V@vS*XD}uACE`4)H8e>lHYE!rYvuG3yYDuU46I_=|J(%n10P5_(%wZ7om;P4bo)+laivd<3Ws@X`ey+_qU5;`0Z zO@{zbAb1(+Z~*Ag3p(uVD?1x>h`c<~AqEIL72}mid}>$c%N>+bd?-k+ZpSf^OuJ)| zKX;>0V;w>-Jpy%#8tW`-9B5G^)H)X+?V#p#1ALZlFV=D}mAw7->WBqbCu?9w!k46=0psvb>QH5t+ z*~Z=S>q;?KX&zy#>*7+4C&%B(;nj|1BWY0{^n}V>G{($Yj9lq>0!*jpPHG6(ZFu9Hv3dL?hA6+&*_;3 zoN3=?gi3z^F{f&oT_h~1pBkJ)Q^|Ok?{wMY7Y*N)g5cP!OnyIRHKh83qmh9#J_F_V zvsg3oB3tT~NSsLf+QQ$<9U}0@^FQ6a=00&j$dq-x0}G(@MY%;MQ>81*`pojuB;viC@3eL!VUi*Ba7f=?*9 zM^t}je-Wd<7W|6RBjC3h6?qRB{IDvTiAH)m+i%zuqdyk>zG~0@nD84T{fP~~)wdid z_$mHGJz!<8j$mmY!%OQm8D3g*D8m~dzlbL=dJb(d!+TQpSVVsEl%0kC;CGVO`b{9X zoi&$y0j4N}dFLJ8L6~)!PBOM#*$PJDl7<;Rg{aQO55}pJkZb?jeKRv>(KO<9op^9 zaN0q)r(#LtD&!mEV?OYQ&PvyIPo-A)5bdGb7PRxrZb|irLX45kp*eFA>J2VwCrx2PAB9;r< zLV&SENKW6J!VbmI6WI6V`Z6ZAhV8}-JiH`nM+>A>-F2VvcgVZnC*Q0+*(T$9G zXM2tl!8nkLXTA0aX4mAy_Hh{P`Ys?pQ$9KHpNAko+N1U$0B8#8{A1tp z9XT-6{mZ}24g`PkFW;RN2!82bzB3~b{Kmh07ofAkw_F3$6B^PMNI~rPEbc(cK}I+} zGMv_Hl0`Y4&@RvOEPTgqcvbseH4J|kTW@(55=Pysjdr%)hC#O4YOb=HRaSG2-t=`_ z%iDdO)THd?Uo`b0E05&RWVtU090z4?J#G6VfIMIB_|&4b%gcSao2WEl>*GN2cUZpX z6O5<$JbgdHm7b|As22#1hYq+?h!v9HGkDa9RW9Hru$>qrn~ zjeTWjq|pAN!GKmvo^Iv~HsPsYOJ7)KxU18E4X^5*BE^Lnthp7^4v}?olONRwu>wcQ zjmW`2!XF$A>;9aKiFlGfbqD?jY+LYLkwzXUE=DoX41bTaQf?mY&#f%FJOJi^-WG4O zs3R+d%7eQ5a(ky1ca_`ya;Rw6j*R?Zl3ZAPsBQg^AUaYh{Pm*`)w<9lEj{aZ#6pD$ ztF?__ZRVOcx#XAdOO19kKKT!Gnbl1V+7n!MR z#LK>U$j&Oia3Lwk%xsKZl^jZ<$I_cHSHo#%;*Ey5{3qI&sxU;5*|lcq8ni6x(PgG}fQg8y8<Q@dN2&!ne!<7kj2Y z0steD-3JmL>^&~UGd)Ne$^E_PV44n7szBqoc1L@e*&z073Lk-YtA}7}i9ivqZ6Ae@ zc90K41s|L2_}D~z;D{?eK8nQ0qwJ@r^fClfRyv12X=r`bSgZ7yEtEB(2sx9@~+eN(pXr7<@7_oP(JdFbSu zvKrmI9&;YBgql9*;oxxERkr|s;j|q$Vnh2HkGr=m(aL)6h{c}XiW7T>Wfs8x1t>>j zUXNNd6iZKCyfP5{6cMB$ST>Ip2`BGN6%k?D6DU3n!1~JC_(OfB@hh^V_~D33e`t!2 z@g&h52yo`fCsIXE@CW^({=gdYoq4n?G2Mh7LJ2S!D0?ci8rvlW_)oh~NDx8jk7F`BDLGD^rM#MC%VY4xM z274{oJH<3kW&a$A=N8*f*{e)cJPkTlj%gV<1|xk{mhA@epXhs{2Yd%x4^cj-b8wt5 z2v-;AQ4E(A%FotXx2B-46ikuyU>Es<&HQC~S^lydf7t|hwG%Mst85fBAf&x+8i8GN z@^VJOGAdUHjWUf=c!_BleQa4q{vQ2OicWG^MkMJeD89*J$n;rFFMo=FCDV6I>jFvjQGy+{@l+P-}x**xOImY@x^KpOOf%# zToqsJ*n3TX#uw$&X)*(;j`$*CXj^=X!9n~r2NYFor#rHb!)doqkk}4wOf$BafyZe7 zY)Qseu|-5Uz!CjXOrpPx(4gn3KVS;UQE-8*@Xqq+m<^J9hgSN7*C4jD!B@IV#dbbm z7-*e@fmT~#pm%ZU22U2EJQuy?>AF?|Jf5j5&=nk6sjWSN8t4bCnsaSGtWnT)`E`f> z;2DNk(DL!EZL2c|8B*#}3Bzp(1T-Z0a-XMvwJ&%3_zo0qnA?NPLtS>^98PW@-$cyU z4@gBzc_{dfzZ0<1=p}+j{viC^$lwu#ydFHtwZ$)0+z3ak_$2@zfQ|rP3`p@y z{IaVpZbYp6J6&(Yjr_TT}O$gVo4|IbOUvP-kY-=^!S`4-edzX*#dwG8C0EpFj2 zYvM2Kld|ImKO)F9CO#b#9TNIG=jxV-|^hG1&6gCn?Z7v;;q!Y zzR*xCkGiE63U%*}cC{)6BC%r~KeAgOAKLR0=kZYWV&&2y__%j{Q@-45Ox#QdS}|L5MQ8sB z)u?hK6E|;wO<1jMK1inL|LQC2D8mcX#SG_$S{SHl`Tt zqRl`?AJ)V<0{;_|FgH+7QpHz7=cDKQ!0S1lg{WKeW|6DD&YKDlyh?k7PW?c1g*1`F z7w6%9_V`OEdC70>t$35z17N%4d+#)@;VdY9AN`7;KhFn(q<@itcQfUy?>O?evPm+; z033izb^TvQf(*d?h1oWxF**UYq09)OHU1a*eR%PA%8Y84%sz`|fd8J{dL3;kB;;L; zw-3V;&4}Mwd4z(BE1MC&em;-_`U-{Rh%YcEZ?rkw2qb3`j-obUSUY{rJoF84TJ%nkm<@Jo&UmZ0+x}4f-_wfB3 zv47?|lJTd_CT_s5R2#+Kvt2xt)fev%dG;AhyzmaFWN6#~Uo^!#2djb$qg*wxY zlGIr)Kt<+6<;hV1vUggbY;8G~SbNd7MF6|mh4u*fRBaJ-$bF)B9$RIp-EK$n@KOb7i zZU)vK&9Ti$zS@8(zKn3!$|n)yc4X@KXL@rL1}Fu=MtU=GE)?+!5XJQ7#u#S|r#*a) z`0+&?=DXQ2OM(|cYJcLHDpFQo>>CNswRnWoWF1}&?9?nN;ddPrZVeHPe{}A=)j%pH z^LaM`pPGDWFeLm^hQy$t%;SZ~-HUYQB+~5(_wU6stz_p-+T6qTF)5e1?EYXXAXBN0 z8YYR(OfEiBn92)x0)(JuDPPrJhUpYe8Rc5rJ6r>Ss?I)t1Vtp~CripQbDh1FTIczg z_RNDr!TTx!T0?I%502x;O14*y5l)-H_9C>=r$V&#L}4~@B{$kfNmc^19GD7K$`0_; zw7Km$9DP5(M+?{CN&*d#kOLP`=>|g-LDa$FUjRyYuho!M2n(4Y^bo+(z3}5K#%sM^ZBvO8#uWV4INFZ+oXq8K7fGfR=$&~t%d)|sQ z-X{QVmeuxFcl#NJMv5^M;TsF1 zrahYBvcBS^DY{bkW~tI-Q09R$?;PY3C`@w(+DskOvM!>5>1lnZ72lySEhWMkdGWn%8*)NGV^On`eG%4I^k)CKKRQSXzao zqn1lF{GEV%ey7rS>3eM&4O^bF+B^L zV)SsY-!pF?6rDe}`np|Ip&0u`$UB3nQ-}3~zk-=LS#Z~j4)&Kd&Gb&YIx}Uvtgd7P z5gPe=cvZx($-N944Y~}#4}>PBFlvy^S)4fvHoyH0NUJ;t#QQ2Sj1N0x6o#TlWqDGY zaMzPM0JUj3em+NaNFDJk38lS(aUjeT`qFxT_%e3h? z6h}wlsMN#4(V;vw0kr%V=b5PiI0DT7fSGId?PI?Ic3wnqt0eny48q*QRzr3$2ei1k zM9X)K%nx3@8ivCy8Ni1xbRJM>w>}ZfNcB&-B`fv1rVObDa`zUuVjEj9ft_Luu0LA1wbWvvTy}bqIey2Lm( z>!8Q-)9pQPwLCx9Q;ZcKPFcPKak01bW~)GtzRZ_|yjzZ2Ps!{J`#c39qE(dAGx0ja z3}Oz3QvV`xzK@YFlWpd&z5F9hAv3;^ycFWgN705^<{nxJIM|#&obo1;+Y}aE8 zM*v&atXr=gIgQN9qEMZ+Mw1&Q;bu(S#24guW|$>c__fZnymt!Luqy5nz;S=DEQQ(> zrw@XvMFs3|>W)MFh`R2drr6D`|f`dg>OZ| z@I7*3Bz#-%jsxGiCMJBhvT4BAuxD-bTlyaxd^e%wpoB5v&~MXQ4m^A}t&RuZ_h@dk z4iUbfY|!tuHy(KSF1<7pwRRRioCfL9QRK~TTv{@*vt8aWxwd3tS8xU&MERo28$Rl^HQrv3 zH&wd4(cTbzZHAoTS&Z^{H)Go#(UZ*-HZ}Jf%y61^-_1l;l`d>fiy>?vJQEf+9kp@I zOlIg$VUx5|S!t9qu+lR0q*+7Ue34|L>q9o>r{cwf3EMX<*j|5w0b7VaweW?`5%a3N zv+;Nn!eM-{2M`Wx3&@&Eq9en@8x{zEi%Ux;Hn&6g6FKAogx8?8#_KU4%ty7SgvTp% z2(NifAiNBa<=HB1mtngH6|I-S24fThOtJR?gDKi;T|mINUx#!17;tXi062%Wlw^}B zIup(_zX4MyVb0NUL{61FFA486;m#GT6 zG4!R#n~9GYpzW;PeNCeBCUJfFLK73TqAz=Hk0Wm~{xIR2#wLI6^t-Ug0B-~6cdQBF z14h3Oyq^gDYM2+TggWSV%z>w0Ut<%SRqeKUN6!K$6LOU5UP)5P^n&)+4l*0gWeeHlmJ%->_8^Jz8}K6U#RuC~~>1q>1t zO3HxN(PqNxi2$a33yz*&3$z6bBiPb@zT_*MA06lXHk=<2UsSj%tMu;FV<@?N9clloOlSwbdY(~)wsU!=mPi_a@tku2+&J@ENc_VS<^XAb8 zS`wGfqc1kmVi}Hh`COv{0S%GQlVSz}?DF{}%wIL+^9L6s%FDG0#{!NXE@(03bED1m z$>+_e{Gtb3-e(g(Q}xoFz1--pL0i1uRi9ju)*?we zW0c!l99>iX{GxPRfAU#w*PHT2yY$MK=Og-i$8oB^3rzUb+uz$y!29pH!tMEHfB6n4 zzX3Ya|A|{qyUGnT1dk;zwR=XpJ)iu^@dbzF%sRfhp7`g$b6wc-PwLk~Wevyh z=Oq5Q?j!fQg?27LUuSCmxqk$bx<({?oL~Gl`r7 z8;`5~-XwmB$Bo+*p^%*MxN~-y=;_C%{M_RiUym?g+c{q*l$a6f*zvfNhnWyQVD{KG zSSu}-J;oWqiV0FKA)Lts?X_7$2kxSr{AsInC+@=jV_c!l}_b{*Pv?3~ zGIh64seIrzG{ioA?D1HF+HRjd-ixwY#Si|`CsA1~Dg6n!4IXWIl8~uspI-8Qgg9`C zAN1O866`5#3chXrrqiC$jxuS)u$jdE65EFpQ`c%&-^{^wh7{Blru-582l9h>rzxq$K~RN8bR&u%85AkhnQEvW86g*zj<-5ze5x>1Y<_Hfg~1Qg`dc?!BTsU> zviArt(|$hlDrJv8QDk)2{z6yyEgB8@9n;6{EwTG|&lsbBT0gftWA*RjajJifUHfO+ zPm_06(B=vzKQ~-w%BeEz($8flbqh)#Ce!nqCaCP$J5Dzka%yIYJc8#rJWo!;Up#mB>(GqvL>@-B>aUIlJ&TYmI&f3 z%vI6#NXB)#F*QB21h;ERrwT)r2Ff{2mGQVW&1vbr+i2XnHWP^&mmRhmOIoIOs$hKRWRe20jL zCm*gN7fQh2DIc1<$cG>B23SNiA{F(eA<|XBW_Tc2$;y*EavHxvgsui~yOl1la zyxM%9T@*R(&Cb(s|E=-whnO+*IXd5g>n|PY*6m37r*2aA@rpYQeYdxl+nowdR{Utg zZEjbQeqG`(s|VZULmj1VJ@J=zoee6EAs@hK)Nc)u52*{{$p?wQgh~w;6!PKdMCC(X z!t!BVrf>l=9hH38^`?>!8a^f}{!;U~NvW&Z6^)4rcvU7vk_@n>ztYoyRGdB9#4pVFS4SFZt*gZKuf&H$q~iSai3#a% z*ff8U@=1&uaXCV18)l>H&^!>#2nQ(V|MRJq3{s|1Qu)Ze3b~Wcd^0f9kp3Pbn|qgLz?1r|7(?E^h$gP3;-8L{`!wh@*B;j^>gR|L9*KHLc;fU|WX7|R2n}9!H z?0!*2J?!4svnYR(73sTXrN!>oAu@8H+5Jwa-*Oe{6Lvppr8~Pf+hoG~*NqYI7J82! zuetv$1K@~MS;94TzWP&e5~I>w?EVA=Z3FFv8Y~W}lebI0x{N0*t+M=yqhWX-=zR4P zk?*PlSn}_dE|23+RD5Vc`F=L}GviHW{N$=P+2ys`0@I$f3$W5NNjV7h`=Ax#ey`~?*!zE7+Ch4J zIVVp4qxB2T8i}I>lRFMDxDEn1!hVb`=0>+Q8P5`PI0pR^VbvhmibJ$&c7PG%TQyhA zj4$S37I-HqFEr@AL8;|n{#Z-neBGWnVd&VSy_I_4<=z7bUx6)YT8i8|_6?XLAkJ|y>AkM%Kv>;td#j+)(EGhaJ_|pHu;OeUq5*b04K;_16!ETJz)HmbbGz_ z$qQ#0pzW-^i|Hr_+CB-rXM$GjlOvbJ;jg53O!)q^EJ2H!aelCDSFWlarG_TQp7@U3{;gzx=q^5-rePVHlW zH*xu}fm1=^$p;<64apx}I3p4HP(8!|a(nGxVazyBC|@B_AY*<2++kfwholX8sQw%mqR6d*bN0iKtmhXo>%&%Lk-Gd=G`$(`nK90S5@*{>m@g3hFeNv&` zcZ}=%qU}T5tf+9FK{ko!4}9_)B!rVORn$vOB(7DA*^v0+46O6%?wHx*i*26dhpPMm zFW#6KZ`LKun|J>rvd@e!9{qBC@x^epNkBiciJuESyc&-lV(6ohy=<6C#9!|FvkO}6 z@{;Pcf$}or;aF%f$KO7ak5l&EcNlw03@3gQ!RVF${vgwYG z<6l?!Xneane;V^?CASDdK-&(+ik?U-Pj|!j1*;jOS*sm$hx_wmrZJz8%} zHwNvP{Cv**`uMr)YLkF6*~BlJpMQB*;r9$zc^hAU92G?qvG_mNhRH}G3TwU&Vo!09Q|zgf7u@Zsy5%PPx3bBfLEln7A2}wrLAS{{29TqI@PXjO zNioOWT4*MzTM;Ulk!FOdK&d*26g@(<5v}+Us^SL)(6Pte^rc5tF2uH94XXEOqqmUi z6B%_YOi=6X(H242>RM02Q8VT$s%Oj%qso=|9HUUYnh1G)r3v}bY+6549;wiU%0KLk zb+@%cylz@X@q=3J0O;Co4OVS9)j(Hs$C$}oK-Ud{;7FhhIu*)7uLiLhq>GWu{LR|n zuT7NgL9B1H3|c9aZIeN(2$b!Hx=|?GZ46rRQG3>S!x*%>T_3dij~bMI41-iWI~&`_ zu!SwcEfQC_*g{4G-o_@efH199B~SyaQAW(2L8f3zI7bYl8BQP6s{*5D#gyp{j* zjFMCk(JuKfubJ>&%_e^)z1!te`^<1yI|D^Vqs?yD>pLHd>ko0g-q1ge`D4i^+whl& zef2&E?&9HZKjP_gurduKR*d;$!WyB@25WTI&iOb|{3RMn^=OYQGg(98Q71mF@CPo8 z#$W2ICjOGyW7!6j6VGoL4f&!2x}%xjfT$T%xyo0$(us#I8ETq3AgwKn7!x%3Oo7*Dt#8t3Jl`f?Axag+VOy2{3hl zhVho^$}l#TMe2k;VHQJymD()tbi8lrKV!e|oRi|cZ@lAuFFoP@J}%&6GCe*~@^2>4 znrHS7Q|PlfQanz(6}r)b!r*P1cv5|-kV&34Se?%K1?Ho&-Sq1_cPk(mvo|20)O?Kd zxLN|O<_8zb5d1GPJ0lRpimv1tRzt?tUv^;){uTq!SXQXde5RFSI|uVRD$wQx zjhW(+tk({EK!{8dg381gi%HF}4feV1+lqJEaE1&CG5 z%EqCmiNqYXY56sROy-Mwh{Mkw0}dyz!qLc~snsu={QN4L<}dd6@e@PB`h2&nc5a$c zJtFq~8!j;J*V@LuU*a8kI&b7Khhv=1Ye)oND^CY)X(LSnvL`>2ewe!O$ffs7vVtRbOrtC=E0PwGHY@tiD`< zvQ|k=9YIywu%&0w-l#7(ZYd*&YCh}x%Sk+m%x9f|jwC`n9kq;ALOe94`jdDn9*GE8 zIp?!ZUSQJD^=!&dmk-ALF)SlMDZuF~b&&QM*v-lh^-0IRrpySlra%<~tRu+$Wz0jOvz6_M!%{937in)<5 zQJ_-rf{c)vb}{b%*9P3*Irjar>G_Gy4WZ}vX%Z;=(w&}lv!@~StSSE>COwxwPGP9% zdEo1b(sQC_PDd^8l}LK7c_=PDzc|mN=V#cIUkv-*d#nN61jp-(mYVQAaO3qi)oZ{1 zE+A&a0rL-DC5R7j{o9uW#MC!pzmItk`UW;gEyP~b{DXr3ngI5)$)CxOW3FR(TX32yk)FV)FNn}*y;b0Xd~YJ*tYysGO$N`vONR8iNqljo%p{;+ieAYB@XGC zA=XSKz9S;hX3t!cuy(R(`$gmDxef|HUpgeex=F_m7W34jk8r>6jmZO#F)$RC=%a<9 z+a*{Ge+L(uX6Qzxzwwb(Lmd7ZD$(L zh6n3b=FZvM)hCs_NSYk9<7$@Ur}5~ z=(6Yuj*Ia$$k46$Us*U`qh(n*!||x$GSv))C|ZtlXKgGNvB)1h6!qJ~AF6j@Zq9HI z)+*}Ar*q;OmUb(;vE(&*Tk$w7Dzcyv3{)%*>RFg$RHW!*E+ByjRT)EYiTK=mwCRvy zd7g!&Jqg8jxl?Gb0uL}~k2+s#_axTAQENxEK=W-i?)t|Qk=!1i9_ORpXcRp*R`}1v zxV;jR=7Yp9^r6maO z(X=@XL1=`{_ZQy(#>%vSb8L8%^9;HBx5B#}%r!f_U!E2V-VZ%u!uu{Xb)K8bCVqy$ z(0gF-K}L>I4ahv3CUr3R$aV(UQ8EOppQF4w)=A<3OK@p9aEoQg`eHG#3;n0V?UQ6pzed!!$zm$kIRK2 z17$Qk!O=PR%fqT`zHnO4pFFsDz|h{IL5;&{9@z_$$iivIW2f)5xim!jmd*VUo6E7? z%iU>nk(!(oD4R?13$Cc{J8evjqLK79-c9gS`(UB?k=22+k=W0mr<&0icd(zAuv@GR z74qWa7|ur=W)!}vg2QH`0>S3K;Grz1|o0y9Tdnl+ESP@Hj3i-#>+`hGCnEEyB(HQMl~v46HVrp|xoA zOPD>R%ljIZbPWer*7f!*$2whH0}5Vqer+H)nV-t#;adBHK*PIO0v*dhwZwu@ui`{f zI2Ft0=2z#JzUi5&%#WI+qJw*vEMW)H!*}t2?pWnaV#hIrl$>7FyzX0_%DBNIPD@{kI+DlC)JyxR{F+C4723V(H3-3 z%d~~^tF^%|p^cZTyE1T>{LBI(?VBjk5N?Cp}tz}`s{8AG2tjrR8 zG2(;d5{kFp!6Zk!Jm_dB0Z!+A=( z^6|kYCCm20;!gFH!jQy%x~$QA0otC0zLcqN79CacnvO3NB}~GB*5(1!)(|AMnW|!$ z;2B@pbZMiynMO>8)2hDnaLKt8&_>!^wDmKMN?zN?3p}M;@V_s3dpS3#sE6iE)yzP% zLN&24-R2kjJgpW^A!3 z`D|_ROQPi4Y*$J?Tf6%KtYWEfb@NP0$0oQ@yH=Wl!OPJk_H=s`_MageX#&ib*CaRc z7_w10p>=Qq7)vu`;cf^C7#I1wwT-P!okZ6YK`IQksX4)WB!;Hj0Q??K6ZVv{AO+L) zRLzOuc+_xNY6zV4u`&gz`}qd?`tz{ernZm^M#>(20&V*BhE>=c&u9*FpgnqzXM1Q4 zc&6Tp9m6EJ5r~QF8o$c1;fsN&K^7TYLRL&?1L&9H2>e&2R|ZHz-}MhR|4QqUPVTA z*kk{>--P;DGj1Fk!|4dR;UahE{@Uk?+!S|W4Zi1%a|J-X)cwGPI0~i0NiSmE$gY0ng zf7H^zRy^kB&uyYHM|x!Me)1DMtuk6X+a15s3la!`7%G|d=*^^>_is?5p+Vm@i=~wJD{rtm8b1_Um z9u7j7zoT7nM~dNaz~(Ea?Wfy)KYOOm$IHDr&#-5n(kHRw4>qIK_l~mq{E*OB{qdWd zIoB`3nq%+x!g&iH% zT;)!&<{EY4$poyqa$X<9n)~V)%bJ^Z28h74=FY`kF|0YkaRaQmNjHg5G_5#2zg(2j zh;m^{@sA`wlSZ5(*yQHTb<&@jNhlhFofxU55!V810?~*&Mou;NgDWSHNZppx4{)?i91GoM3=JrxEl1N27MolYPWyG6Wy@_wTR#I^ zj&WqXhE&J$x2v{WH*On$AYNlP1s)8P}$2j2rF0MS&TamzfiAkI%_)BtPscDYzq7V{W2Vt&FDmArY)1Ta z`9k-Z`3poJ)XtjU406Z#G0Npa<(MOg*7$M7uLjIPg2wnUxIkh=R4gfARFoxHT^NB~9satb0`YbFA5)XC_DXN719{&vSnAd_WmAdGap? zO?ph4G$tnNQbCgSwjrdsQELi}>1q!?gPs^Bpvczx{6_igN8lFdgevn>dX5o7B?x64!0tgFeXB{VhoY$yYfCn*Uz9&EcW-(kZMn^~x(;t{# zLQIITp3G)E{>)q9!k_87f2h91DK92I=#Uq!)<*E>i4O~Z-d1DCi)OdP@wV=J7#cIxj1%d?fLd*gZDY~ik9gbsAy&NYs}^RwtwkASNTTt!ws^OQRDld4AB>M{DEaEMBXvvih{in7Clv$# z%p@r5lYzf1CJltsu6S2;P2Q_ax(TP{$ZoJ)cFx1jnknpIQn$*oDW76{dD)a&Y^F{5 z694=ULv{ z91coHau2__zTqHTfaIR9aAnEF6qVeg_n-#HklaI1!USBwy^%eho<9xj~5bK`KXR{Jo;&`wF($IwoEx4Nk> zZo+5~Kh~MsBVRs^0vjFoNZ%o+ffLiC(|3}6i=Pbs^HuGM;6EjOCv*W+gsGZp zd0*`Goe6lQs3w5~RFkJrK{$h-Z>I0~@6^>&g*_h?rNo$vb7Be ziRr^YON&gkv_P67GH0Vn;fNpclj@$o(|d;@8|%y8X^&Wtu9N0y2Ml{?3crOcf>hJLg=auqS*qdDVPiOND-oytnM}rl$G_n!2Vsj7{_B7=Ky1 z-DH=UcwWNeFC*6)7;$>J5#uj<$-w;^f4N(X2O0l%8}*7Y{_@(I#9iDG%mhP^-Dj_bGVE#os+x`MdX3$!9tJ-OwEl zlk$kyZM>VK^_(ue`@nL;q&yUnJ$skp^`~-yOMg14{`7^~f^2d2=XbH4ZS#+&zZTJ- z7lP8CW@dkGyC%9n=?;6!=7hK2X2=XU;VK{c3qrFnZay?kb8W+Lvd<>yNy&%iG1^OE zy6B%8}>;RA>W57(OJH#KG{s>?>kLWq%j6NAP;%Z)l{&A@-rD0sn84#GbNhR7)KfUK}xi!o>(c-6Ok7)(U}*sr#GkBj*XhIu-z36%z8&Vt1d?VhZkeBb9@}Kn7>zeq2hiEswMUuRIJ})U_{ip!OA3_$K5XMJ>#Jv|h83U(mONW>6r9BrV8 zqj1GhmHIbVPyMUKtPf3S!kfLuTPF@;AUK9n3Hv$p4YPIM@X?;^jkg3oA-@2g2-;v> zAAG}5KAHjgg2=TF1P{)qv)CRJIkcKzO>wsu58VqtFdH3$ADDz$AiF$ME77gqB}>^^ z2$2QY^9Q|26ng9QSs?HPK|<@br~fNK%529R53ecT_CmfTk`!2Lo8qAK?iNZWZw+VEzzf8o{2I(F0G&e??)-%(i&N+Y z(z(l^7g(TsfkWx(;lKRUaN140Ue2X@GdRU#6i*i5WTm$L7el_)YU5Ft0&XDm0`KaH zyCC2AwN5uMp`<`HdpeI37_T}{@nHqN81jvb5bXwfN7?0@GhVsvb5qEX5*_)0+n-fJ z&MiOi@V_ix`N=X%)-6MOKjM`&c~-pgl%EtTK&$5$QAC+?ua1ObI)y@P_WZyRc(=$s zfehgN%Q>;)mDwc@<8s-HHrbb>)lL@K*JF`kTrNQnO?M2Ry4;j~4@y&H-<@b$vX3oi zengkgOw`T9hZrNFhL(z%5N6e%ayldt`4PH9vVZvzdpj$`E89H{58}%RXxbCPj(_zp zaY)9$PBce2B-sVv9DR;~EkB~eNB~`VBnPt@@pFtv+f3~zJ~32J;^SS{oJ-y{ZEQow zJbbC>n3SWVbWHwPhK||tI^`5~jO3TUEW5grS&y9qKi+k8V&h#8{bp(vsH%qNm;dtO z|I_iV?H?&s0&?!|{Z!P0F5m`3HT6e_YZ{_II^o?B`s39BvGhmXjSl@WX>Nr6sJKb=$G-W7 z{futu~;uq~y{NfbUfx%}u;}<=hU4Hwyh%WE? zk94`8+2u8eD%gAEo^LkzLqnFv%QwqLqMjb+?D(hi&Dx4|i!McE=9@_x&(fq8%1!hB zt@&mjZZJcel5cjsUl_Fl8b2c6?4pazh~{}{>Jd#JoBGetU*_cbYB*0hV)P}~zHdOC z!J_;iY67BZkE8NwiMBiZt+KrAgW=-i)q9|i5O zWS=|FP|<440P~l5lY)IxdY5@q{BQ~oFiO>WuH6^*EbNojdz#lRUgVfFPh<7(4j66O zU}?c#A5dYLSs#r)-q35o=iXs9?$DzXu(@{Sz7SqBkfvnCkW=x1&mf3 z0izE6gt^ERmLtUqdLmMPy})87@RT!NH0xbc6)MNVu*5Ssp7!W0r3w{u=<%XsJf$qA zV#JG1zVW?xyoiMK?~Gf|ZeIiiC65C(UXM$rewa)V^~7^~sZ{jsa$Oe;dplB}9NR}op6H0sCkGET^+^*nb$zmTh{Xb=|5R!Sm+_hT54zYBDf;-# zELVGC*Eoj>bTe#{a%+CfBi9LK{5;z*fvz7EX-~xKPlj86TB!c~hyv#>_RVl-e|A0| z(Vy0;KbM>R`Fdbve++#)xc3m|)U(F^d?EVe>(&`G+1@^5hwCaC(a6mppxp=^-{8&DhaaOz=c&Up!Pfy5g(wbBjPPK&7WgDeau^?x}@$&csxD% z2?Ha}@KwZk`UG$Ycwzs>)0cEq79mX128^d)_=pISgr@gQqgJeMC`(P7ed;l4%82mQ zwLOI==HL@;KYXh&Z2^Ak#>u z0B)Qqya`rVX39R}r4IOim+J=qPYO)<*RbjMsrW6FfjPJ8s;USSL`84|!PjN#ysi|Y zruIIEK|iG$oUG8C`r+ox3HGwrnBZ)iP>o3eGzv?wi95CT;HA^Juv5>svOu068@S(H@FzA-1FNH_p?h&je)1h~TT5QVveg@8VIa zS8T{1*idO8ph6uUPMi4@UKt8jVn>ZwU!e|gI3k>OD|Rq8Jrp|_sUC(6N309EJ8kZz z*x+%auuBOiyu(a6VPzdWT+r zPeOFE-mDw;eLsRId@o+Ck4h6P*weFa2psIi&boPYIVeldy7`6a0ag&@b&L$d7N!}39TEtlY<-$faW6dB<5Me$G6rS0tf7S2xGP2wMKD~Ssbb5zdH)oV5IKN^ zOAuwD-;fB-_{p$JQybO+h>oG?i-IbCLMA1_&K0QT40aDtVka*;O8&Xmpd31*7WP>-X5YnWKGnsdV#H zy_-4OLT{uzj;9|A-TITH#}jUL?aw2H4*k$2vOoE%KhMlC^uw`^{uuf}_up;fy$hDw zv_pdR#BL#1SgL^nma1VcqhzQjCJu+88c0prXWfkP-X9*N1Te>YSIMp}z&B&(z>oKS z^c!VJjJ!z^(Na(Bm*j(t&_wP2jQ3tOXP=vp{@>RV+xMC!qzB2+tQqNUkED=jAw8~w zDC+s5guxRK(s{f-hLFDRLrX~KU=p__q#NU|7(zOQ^i;o)#z2NjjqKW0gmgA;i;AkW z?JFW$VIdS4vZ4`bB8kty|^`Az2d6rWky|Y`t}D}C1VT33Cx?tBNy41+~vi;qvdP)O#(a)V?B|2tB@I_P27!u_L%)ngK( z2MVP9riW+$Q2M8V@wd^5(?fdV^e}L66g_-*oEtrS@^6zKYS?uA;?YA%i3>d(ujt`2 z^;uE=?+^z)1YjfC=wS@#1tV!|?lkD3-@hX1LHa`xfx(F-R#57Lmvy@E#;k9(fJ+gI z?d<*Y^{t9!_J}M<apiFm^TYR79)FayKl1qS5sC9(D!Ny% zy`tptWh0~b@7iPC`0v78lm80Xbo}D+U(!Su{yRbO-;e6Eocz~wpo9P3hVf(Lzg>fb z|M~?D{#%2{nY~M~{fl#7G*~e4eA1(`NSsmmqyreP3nf>k5}^_PMbE4LfP7%R;(PC* z@oM@Pm&vZ~UrfTzf%h+7lp-PZ`xpK{Z0l4sJfHOA8UIiHiwEZc!Fmwrrx&T~O#fmL z@+hMHi`4swqMqlx#ghs67q$2DLiZrhDQ{W+#is4xExa5f%~-SI3EXvn{EPL+2#31* z7cZSA%t?MsclsAY{%cA_7ysh?8)N$yUH&rvV!&ONf6*1~{qQepI$Qq5Q>#q>;>|vk zA&L4I@7?L}FRnT|mVZ%kwnI2|og5*Y3eFMX^z3bha5@g*3EjVFcdF@Mw2-Fw7k_kj zN>srg=VL_&NbY{#6krlK|4tGKz1_lnL6eMc+g9LVBt$FhD5v0@6YKV;V#y&eL7f#90Cn%5>E zxH|Lt7=r7j)t2DuxYaJWwu3YNoZwnx1V#=$ij+7ja~$zv%^9^)9ez4lX9QRIHRIWM z^6SB(*z)V2f0_IW-eJkFv1spy{7P+P$*-@LnewYeuZGC4ws?0$eB`+!V#%-CGad44 z?9CDKt2`j`Yx`tFeqD)pmM*^ro@B}|zcfXD{TofY^;J*&`#KkU@K9wBwi_g7uG1bo z(b?tKZ;I&hX9J|mr{7 z)5x=?JvdNyb&)z2I|tq#>>)m&t4IyV8fI$!idT#Nq&;|Lv{c0!TmO5pTK2RhR=3V3 zYD}>@dk%MkA}$8l~Wz^ z^n&)WYg_%`?;khhDbg)fO>32_pZ}P% zjPN$_-X3^I+q9+Zrm_$*#H+8ywF5Ssu{x@Z2Y5<1$sw+e%9H?WbyQgf)hHueC#wSAE z`BEbIury&(4&d4cg&0ZF{x}Z!R>AHc*i`y6#Zix;5^=;lv1pS+6$X%Vtok#-r4@J> zGH47RfC@@eW%`DJdQ}9Y&R(Ujj8V5x^3O79$cSJd=S7y^gqq3@r)`)_X*eKHrLa6D zdwNa2W!OQo3Xy`;l~1u@3QH|_r_KEm8>Fyk*dVUB2}Kub6@s&9tE;6pCvJl6j{R(| zE^?#P4d}}sA z0_Aw7^3zKu)-peE344OBtjGTmrS{B9dy&~J>CCG^w~3XSN0s8r!o=7vNN0fJ!Uteg z%uw>Tvg@s0$h1sux9+Kv6E5LG>=VQM54R}wpk(h1&l#sRYR8VfmeqwrsT3hDy! zdMK`JETfrD(D-;V8z&cQqn8+pYm+v%RumVW&AUFj6?dsmE&3-)5~@`+GZO)uN@U4l z=6TCQNRYEKOGwa@SCOu*gcc+3?dxL=IVk>st-jv$M@-eF1`Z?U1Kl}FsV&@m>pTi;SmEtTXKAJ`-`$vY*?@u5Lef#m<4ZpRbev zNxk;-FHiqD`}ug^|5N+f|Bw*fbA}YvHfFK(P113RES~78?%oZp_LM5yL4v=$!3{PnjwAOex>$3!K2UhUq^fKB$g?vi^1mX=6P~d?O zuMklrr?KL1P%VnRNV@=Q-odc-CV4#z+huZe5BH;LF|W^tU4}||eW#&pu`CO0DX)+0w*zgP;_)%x8A>z4_k35+ZP6v5NU5VU^xP~9JKkkVGv^I$cCJwn}! z8NBBxpiP;QeNG=3l5##$`Ut^Hm z<%p))y5m}JoAgv8YBzb;eFub|76OR6TV&A_GjJXB)YPP>-FUw{Jtg<}L4@^Piio^3 zu)Pc9hA0AQc@gQxB%XYn0qtB)+UYyZARUmGnnEXYCZ1hj(a!JP4^3wxdIJNI z1siO$6QqEH5622n)L|%CdBm_aeJ+BC7*Ghiun2dC28`1yIy9AC$+ixsb;J(rA-b%n z=zs;U>7PAG<%Oe%V1xB=C09rMvysvM*+}?jBgH?n6~${I=9!zHraNr#I{F4Zf#4c{ za3hwu)l!czGg;xRjjY3D*DL@NbV{e~E6>!W=n6|a=xI&=#jZbSFYSO?2kW#BnR}Sf z>a2xltKC4?jo(w>w1Z8yVtDY<4o2B?{nh%k1A+>|nK1^OBfzj1?WpDO1Q6NzZcqg9X0QLM6A$!O@Pbx<($8gkqx}yfcuj<{w<+_H~!$R^Ij#?p4 z!dru*wqmYfA#KtIgE#0U;sox>#$B+G__fYrc!Kr%Gg?`@LAMj4aA`VF67piHGY!jrWXZSxP3J*Dr-VKx5%HJWVm4|KGJ zae zM#hm*AP~?Ybk<{~QOC%kQwk48!D7@Q6QWhvMVUhI1XopC;;|~Qzu~f|X z(W)*Ek#ycg5hAGwP9O~9bt4Rsl;6e_NjYszk#wRoMI;@AX8iHs+JP?idoyLfU)IUh zem~Oa=6n)8=0iO{+}6z;ZQY5|&13a$=4j6#T4py1V~<~)TxN(zbNm7Yk0-+WvkHiC zb;4~>vRMBRF+JPB#YXY?sG}U~A4)pEtba(_h_U|Rvaf_cX_-f?e@J5pZ<|4Vsp<{G zR#%p|r0{M&(n#Um4LSL@ErK|+)J)-(5ssYSKv7l!i-=*!BifKQgdp0Wsb}yuV^e;y z@$tm%4Z%mzZ7%p|8;uWYV6`44F%ttH>pyqLM{mzU8$#e7!Kt>PqweVc2|8L#jYP+@ zzr;pI$YY}8Ry1{V+`y*##jzjS+-4x8e*1x@vsO#Gh|ZpE&8Qpl&pslMjj<=VGO60K zJ=A2(o*i@rPMY~=on=oC_MU;A1D}8P{#N!TzU46PAN5-fdqqpT=bzPH8y)F&S`M^h z_rr4FYc0!xNqLs#K$4GZITTI>V)5;?9A3YTa4-YCx7^NMr{%D56tUAY{V|?Qz;c+) z>th6Ze|^-l93Ep)5HrwwCGLu0IS@+qhNJvJ({gxVkJ5SLc%K#Uweru3Tj?Ai^zY1{ zZ9he){Hd7)rX$|l;Vfk|xXsTy`7ew2w!F-;7<^gh3x6_>sIU>c=`3)O0rmd`IXw~&&jWvlm36ouZl^Q{Q8Y~3YPqO zgJafF@~b^~2l8vE#NiTj25G55KQRe!bE>p8Ohe zOFa2?zCX77^897;Yrw^p{OXGKevDV8erw6Er|vW5*PCq{BER0d$RWS3`Yx9Is_5vD zUtQ0MkY5Eyi~M?aupz&WL-b5He%m!Ok-Vl*+kt;sPV|mDtHBY zL^`U9)zoyu9(GP>qaR{cu^NRP*arKz9zppkvW3_UF$%i5tw->2Tk-4?nqWME+P1z3 zftt|P=};=>hzZ6OyTLWl>k*VS1<;jCatoUgKkENj<4xK9T>RA|mA`sQ8~G~dc+;38 z9VGJ`jD>Qm{^pS&DY(_w4>U;T=SB{HHFCar=sywU;16#12kWe1%b4U)d~hssh?s9) zsK{ae=9}NRp+0i(1wVkT5ymJIMjjObXlq*}P7Y$eB}NYIT1An=-MdV3u+2BWsj*27 zu+8qF;|R8hfrHp73iI(!X!8b>0tWEGI;pgaKlIb z+v{(Bftm|?(KV^RIeCXts!X}Eg)c0ppfJgFmItA!JIiOXY5t7(gGp~`!rWyiMaDqs|_k7-?012VOs%v)ibV~{}EG4?A~*|AOMMBAO1 zVPK_h)+V?ZmP^Q;@5PJtkb46i=g!4Iuu_2Cr`$lin2xh|0(YH`^P}ezBRw}uJU#)# z^BP_s!*O15mt}ZfJ`WUN8lKs>>(3dU=3;-tHIbPd@U({B&GLl3e&1_j1>p%-|9Rth zQ){{S&ma9ew*7hZUuJ)<9cbB~^U&T8`?GMpWq)SgVcMVm77ejK&%?VT{O51Jj%9yl zq&bwwJQyT4W1{9zQ69$y4CV3czE+0)dEc+NSJf;llcw08x1ec?GKIe>I}zP$L8Gf% zWFkBhed~=*`KGMOT4{fx(8Cbll%09LVDkEFbvo$FRqj;gF7u9qn8I0Ey)=B zSu8wRd^+vAjBwhe=aFZSz{GI>#OFn=t`Db;=V2_4F2mFdw^C#dL*~VTdO&jU!zLOQ^OXN$aT5v&fU^+Nk?9!IA9l|)7{Qd(54$LG0Jg&uoU-xMy$ zDu=(Cl~mM{-vfz|f!o>4COy9PMdYV(xKw-QXG%K}aSx+u6G-*QgA>Q-7>Fqk^silk z*GyS_89T2sgi03czI04^u_jdEn)>Zt`H( z?WR1q7Cqxjl{{#PJL1TL`YBnL2f4NN$^-b*kiR6d3?%<7p;ND|0!4P)AjVVg#p31% zt6}tNb%=CT^`V}@w-an*)cLR-igLe&9^9TcZM+Z1M&Z~5U)7ZVqwP!JqbRcfha(U`oBp@i1 zARa+Hf)Sk%kRF*x5D*ZRcp-?c2#J8ABn*+v_Ktvx;>C~Wp&9y=8(F75J*LkAFMUe=A=hD= zu1~W+u@6l)9y|P$WIReG^z1lmBY%`i=yU23rG%LD{z`mcMkpZ>v5Hc0B?PN7u!I>C zG9&1h?H8LGXcfYwfpVdNXa&Sqc83xUnd()tQPuC#={ zV&8)i<0k-ljhUZPG1zvBHdsHWyolDk;u-Un(2%gr5<7n_AEntBCiV_2S%Ix6z-0qF z71P8oa8e&-X!fd&McF(t7WJXZswk}-YOyFIL#%7nfXu1^;4JJXI4o&v%~{5P{cw})A>4KhX-Fr?U7y41pk=oZI1mPU%g z&F2G`-GCNY>_6^wyXOP9vT@nxrRj7ro&Be@p7wvbvj2-0P>(44j~prNe|jcM`@ijA z?SDCNGS-2S%KlRfc9t^x|BcoDe?^}yWcI%n*uvn)GiW~>EO-{v@`X7FsvYw%@Hl7t z>L25&$o>~2DjOL;WKo4B@Ce4lCb6CLe~C8`TT%nrVA)^AArX9}ALNVcM1STQjOXXs zXd?UsoFFA}h`9#DAGij@97Io~=-3jbyqe$|G(jJw-G`cbKGOA?Cg~%#*HO*aUn(R3 zZ7$3E%i~G_w9q0c?LgxBlHpX7d_|e@vGB~PqFcmk593Mme1G44q9^Lh&-^r+>bsKQ**Z=V^2?&G>wZ(t3^019zzLIha04q{ioXQI!7BL!On?H`d!iIA`BVRn2Y(hD z>G@M6B}%H_nJ{v_M?4S0`9pqJD*fJt%I5sJ?P}_7HNVTF{U0v=%w+?m&(^7QF%5sN zr?g)Dd3CDEA56(j{`5eO6#Plwvw}aPwx;F}y>C#u?%!YO=`{@yssZLaqm zO)qp!v)+@7?8@KUxXIo$=I<^0Liu~oA=q?(ug@sa14;FPcyd>)_wc53eK3}vB(*2) zsBE$RdnFBDr4Mqj=ftfKDlSAU)_?KzR$6^9jM94Pga4K(eQ@g|R()_3a-`4)>6t9_ z!N9lE>Vtr})B}i&?I5Fa^`;<3xOy41au?6I5k8(;@xdZstd%kA$+ozn*ML%q;Klg_ zi%$F!6V@yqlZB%293)P9)z(K@KgFWgA#zMCN_|rmy^$)5McKp4!l5!}t$dv&^?I%W zt~O(Qe>$Q`<9i!wvDm-!sJ+7eefO{&-%*N|Nc;B@ zNhaqvJNZdczIUOrh5fsn=&AUgH;PW3{?pv^siA$gPNa+J>>s7|;`^%;72oR~vhuwL za-`sU`ks~cZ(~}%D}DO?Wsd%ChW%qpFfRLdWe8gm-1j@kX*u}yx$-wWSTz3AB>Gbt z`S!L({)Ovvz0Wl*#xV#V)cV}gE#~^%{F?+PHW{lLe@(wWxA`29OAf8^8#pNL^|`^H zC?j(bg51a?Tc7&^wDDS>3w(t5c*ZaE{V~V-+_Q3hZUo6=uFrL6r(%7sA5Q+V^|=d& z{&jpUW=_0oJsCR5gRdq3C%$fO@Zjspk7QRgVLnXtHbbBLhdA)^_SZNR(qDVxEb2|6 z&x;%}`~5?E|MC5o$?n(32MYv}+Aq;s?yn6c z;idf=!B3LfuaQ)?nEww!3rzbp1$#8y_G`=8h{gOLk87s2Ur$k5FZ*?1ys}?C@3-2o z@yLXgxqjWzTB0!7lp-^Cv={gv?owa0dU;m2()0f$cT zCW7;N5;p9vop9Q&rXrHvWiTCl+xqn_ zgVgxo`%9W(e|;^{5SRV!c!sAwvwnD^>GMzDT8~lR_qITH_1EemRey4Q#%j0fGZEp?XN;iqUJ0?^ zpz(B5pKU@|>a%vNUzI+K&~wdc=AVm@UFoxdb@rw)eRj_KN}u&W(4=R&{YR@J0)eFZ zOthBkv(_ZM)MuIeB&j}&QQ2IdeRT<1VCu7lw1L9qkGEhWv=2RBnO2{@m&+2l_aB{l zgVJXU=2-RFBgm0LpQUHA&}SQ0r`Km{{+R`cjFBLtntxJ^n15DcWecv@@e5t^&m({8 zK-!D+Q6l)psc33kCw>W4HlN4Tu**wuLi117Pq8TV5L6lUO;xl#RThgf?T~E#X4RR_Eo}J<8cH@EF z?9%v+t$t%@;NgZ=jP7+!%Ec`#+U%lXlM6O{`EVO)Qr?(`LQppm3{X?>iYRs;>htc5 z#yu^+;AeO*?lNl=f-`g01k+zH$>q+6eC5t`%pH0{`~;ezs=_FP6*-VZ&BQn zzk5jHgTCKizS7>ijKAYI+qyLM`ViII4EwwKA_rdH_LoB;?eC>I)RFT3$Umk1y_TY- z{r%4hkCx5dgqGR*>q4`B>v**9_hYqN?XQS%*k6s2#4To0>YBec(&(R4A*de|^Z>ouSF?`UOzuZG5?O2z(P%Tl^KD*otCuDzFKgFWdL$JTpH&xMZ@IUM?(+*9szh@LW#$z+)4n{$4)L-|WK>aE7*B@0n~QjRey;HhyL<0u9*7kx#La!H5*~6zZS55Rr>3|pXR%mc$?h& zl_wy((qA1MO=J3N?*^s68WC)|{<<@iPJfBka{cuv2`}|mH9twJzrs{D*I)nXix!yr zYb?7P?bKg&-Kb;xv}B9@Y4q1TO6#S+zP()OuU&YhkEy>#Ax8@Rm7d8$f9Xro>o5Cy z$Rglm9L~m?xgJ81v>pa^^nmQIL2o)^qKelh*kTr|J6O8$RwE$TA%G% z>@n(h)F&Aa@_xkaeXNcA3-3ofbF8TW;s}!lX!3sH*3X#tBQl2yPH!?!d#4HaBSNT5 zslpwLI4JJ>5p}OCrLhb_t~7+dV_nY+pfil2puN}qh;mwkif5FuO-wfap1Bx($et=) ze+-dV?H7KCor?PrOL5Yy`w=Pa(^!b!4Er=X-%5?7&zp@vE$02#ACIQi3j6d}RNALj z)M{y;E_%^}sXf;T`;=n;+FR!diIV!8Oc;6p^$Lgy7Il2l(mL}hb*y_elCRrglK$p%$dN){r|(&zuXjA3R$r_2 zgy7wS77n&x_Hv9V4LWj3JA`HR$d|H!j8@-NhP%e$ER?lFW9O5Y7# zWa_)DK}z5CdAkYvt{9c6q1E^t2gR-Lw$v(pSC3$7eRtgpRE%k_NePm@o?nBfRbNW4r!Bz7{|0!PorN zvMZAC^~1BRjrK_@hvYH&x<5##g0F|;TC@2o-iOB@;%A7>2H(&oTGn2R@C`eFXn0Lv0nd7`U*z*@?37%@bWak${+8I=-8l*XG!sr z5Ih$bo1DeI;nkLZ!D|p=CIqyG5XK^&3Zz`cxrjp98Wu$-;3=$7b~rX6TZ;|AZxG^! z=Z5tV7D@-;vuU9ajv*ZJbie=&$6_3daU6l;2pmgrEWvRsj`+mave1O80TbL#ZirOM zK|8q}o|c0M&wq`@{(JSj`VT8XlGN*sRAn>#p+RRly3TvP&iX^`$NuavqLc84-nv8j zLqAcp^oP#*k8G5sJ;$;3SoPheo~nNI6{zF&e6e7Ix!+VoIOgl~i7l4J~G7f3;ZOx|3_sD|L;t+z?`qw(1r}R|Ht%1pGybQ#dQAP;VhB+e&6{6mH)SR zD)or+|Bxev|CgT0(*Juht^WsgV7=d>0Vm@+Fj6f#QjA!1oP&A1T5ZgDpHF+BEwK)T z=Zl!m!2?9GN!href)#akLxs+B@q_-D6v7XBgPtnFlf|(~CHO&4Oqzh-6x=&0N0vnJ zfdJsbyYF$rZoZ7+=LWl2ffJ;pj%GJssFQK?B@YKgpGVQLB}}=byZHjfrPdeZ6f{F$ zbUj^-SAIXoTVGJK%=yzxermhW7avcN`eH3bOMTJi3HzX8E0;ekBmI|V|IcaZ#t#!l z&Y!*|$>jWrR$_3nkpB04{)fuu<7XLdW-!Oklw3M>u6J$eL=ElJnJwn089z@^TCe%j zfdS_D!CSe^@iQJdQjDMUJuAk~Bh_igkD5Q7ajK)gn=yZy0v@~9zl(C9INheSib#LZ zrnL5P4;DSQ)UJsPh@ed@{S@83;8c4bdH zIGV=Szh6@Jv=PCk+tWL{r_%?bwcMUgBjKe!DCZ|h^+A}*7VF6t9ozaLGj4`A=C_H+(#G7iUB zQ}&c%ggp&mCCs#^V{V~l(fc|!18BB|A)h^|f^VOaJ71UuGns?=%*S*Gp`j3Zm04Jd zc3Ic@!jcwA{>DV9 zPlr&n)Ta+Tv|seycvkd$cV3lUVKkN^Im7`;$aOC8Z*gqdPGh zhr?*zOuVX%sZ9GKER`v}cFBscYE4sGag>CXx_{`#!BfG(!d zpTj7vm;U_k1*ZO-K!a4yM~*^{6#6qgbA|pK_+WbdsrDc41VYAkkWZ;jiV>fAVqT0~pFXzCF_GQ9673!3QS*0=yZiTj2}u~WSq*Au~Wa8l0{8VYS_h_e2{6=*ru zJGi(Nr=$m|f%K<|Nk#pDOke$gfKR@-Mc7=MzUq3sV>~v)A6(QDmAm#+uiA|DHn-}k zMdE`}UF@do1wqH&vxMD?GJJ&r2d-GlKNNZucBL|{<@E% zrT%*Vevg*bJtOp&vM;xo^;`9qeLokg-RcjD2!}t&Hp*I5*dr}W6*e7Vslt}CepUY9 zw_DS%uaqFW(qq5hXKxzQV_z*)dTa-RP4@?H?wU@YiPo+G8>2N#NqDKxYWT@Qit?Ht z_NKDAK6~Iew7}G7BWQz%OP?)nh1htXAA8fqH2SQP(t7E$k9sS8*7If>y;7eIM2-~t zEIpHjKD*=I^!kiUS*B8I>w%NenvJz>>its`N%vQBX}JvVpSp?KW4pid((v}UqSMak zM6fJzD4h_=gkCG;F=N@~t8h{uWnD%4A*h?MAA&llDoW|$`Y{!8kozG99pf0E&Cq9= z@crES?9QV+=eJqpC?53ucIO=X&|s@18=rEG2Xp)%t=eZD|DO}1)vME(;MP~Ci3rQ9 z)3RZ2u%Ko7FaP@EP#@mV%3j_$17SJ%`TpuVG<`rOHYMX-e8ce@h&BH=N)L6fR+`?~7}AOq!vJ{sg_?iafKXLoF;20RR){-&{PUVz2fFu9<)TKVFE-A$gTnO1 zvVSXm@f?Dl`ango*S`-v4t} z+`J#2nJaWS_W!)tg!_vjRHjV-j(>7cFiITn3#?n9NWTn0PI}?*TlIB-_&$^k8&h9X zB~ty_4^rfON6F=h@Hy)KR9Xj{YAO8;l(4ZU1{E0{J*>} z*qg79;geS${w5oG2d$q&x(8o-RLid5{-&CL$wt0$gtd`>Az%0ZYV!4Cgb#|Z?@l-Q zI^s0N*FVkyUZ#Hbe!t}$RHpda;~&ZR+Uaq{*ER^I=Ig&1?cIFcjO8ov_2cVY{zXgL z?#}kBWsyAQ{qWs;=~VEwHLm?-d`%o~?aJoybq@xlTfhF%#?znhkq>mxe4SI}!Ph$; zlU>32nsU9I>TSmSXwzX1yu9Z}911xSXx=8z3zpDAsshR25%R|Vn{GAZkGfFVe13Er zyIri-%k$_?vul1dmyOFlTiIfIn)%W7l-6s0^y;ZJd3V>VX{4T*=;dpPtEL zel)5w{rpI|mNdCBc7u${wWJu~S_Wyw4$qrj>U!Q~_(1l)BMks2f|vhDd}j}z3WJ-& zV-~W@g*c(-U06TGqSQl}8d2X=MSsKpm>Mzd(3Iz0E(|!vV>A52&8XY0zpkWjvANfG zc9Nh6t-m%$?L&e2hb!mX`JYmMQN7L3Uw*#>FK_+Dp^*CPi9OVxLVtZXTI#PQ6fO1F z-WeV(+x4JRf6YEr)t_8{vD&TrOGG&IS03YvImKJ~y{W$*M_B5w?W|vw{`#nMdi_<7 z>`H$faGOrqN$dQCctkb>L*BzqVXy)nDV0BZdA-&t##$9w|Qv z{bc|mqdSI~(q9xK^w%(2sl)r)N?iKugCm&!%0b#h@Zs+W7WVL-&|hPDOclEv#R=&z z)=#l0^$_$I^-WduL;Mf@#k50H^w;zbYCJT1e!Go`=~|yI`oVL3+Cbui*I$9@9;5vC z`|SKrslTY+X6Ua$?Hzb|>n{$4)L)-9Qh!SS>k6sAexhipzs|YKqh-fY%WVGFrgp0S z-TR={q-rrQh)7Y{i^iWw4c+jPuC*5(qE(Qv^R~4GcLMU z>92eQo9=(Tl_?NNs=q{Qx&HcyYLohFCqGH5zaFBpx&GSQ-lo55Xaj~ze|2KRvd^U_ zG(mrT`7I#v(qHGFp!C<^%c)1C|MeVlq|jgKnJo0zjyn!Qf9(N8#yF5s=`V^A`fJ`j zOn>zq>C#^fS?qlu^y=tD@I!<6t`on6{#wXm=CI3aaYFiw^;0ZLJp}zleNz?v4F5xa zG40S4{k6J{8V}9ZU*78-H^2H9u6GpQZXXKF|H_}8g#U8ALlE+-{*#9LX@FJ*=MDTE2Yu0*4N_(^(bu_~st!`zd2G&o! z?NJSCG542V%9~YCk>SSspTh0?N1jfTg?Ay zlY;3#=Vf@=pSg^-eYVo`mg)TG>nW|5{drZ6-Hk@4VOIOo136OIpY+U?^Z&Agus^iv z!q^S+Df>e)a{f=tZ}E&Z{hanE5ghXw4cUR&!r+|CPbc6ze+ZGaVZ9QIQh&hO)Z$PT zr7nWCp_a%^9nQBKJMIS!@;Sy^Gv@nq;H$g+<dx;b5Om_&`(_xL7&!Z9o^*S_SsuMaVVs}{L)V9OQD~hA0qYBT8ftXsf}05ewZcn zle(Y#_@AnNtA4VtSF+lz{<4U0_{;kkP0acJ#!pQZ^&-MjMLop&Rr$+r_DMhApM&g5 zQT3Q;?=+^UjzH7Ie7^&=()>%KuO9nDAdpmFiPmy`bw3F&{pI=mB&og{M`d$;Rge7! z7JXHP9iwi4dDkxL*gnV8FbL2;PH}`Y7uv+Rs7V1T{t-R26-gYT_@ufEqJ3nDwh-cD|_bG5vQnKK?)X&wuIj z-ho@}LxcIxzekgd2kE3d{F}9rf1&@pVTY*!o=2E8K$Gupmku@k=bTQ;e=eHS1pm1N zl_^#D`^_8_xBt9rhEf{uBgi?B%zrKg?Y;cxYAk<&zpt|w*x32IQ2NitheTfWev9So zRNOCo7bnf}pX)2=^MWlR@z?=Uz!i1mmTUT&{xfS!v#>9w2;anOKooX+hBAFx;>0DW zu%Ll`lMrWb;mjmILZ-eXeiUoi|FBQ-BjjI3PPFh!bG2w)2@UmJbZj0*;kNB&hrfz2 zb$DKj(9A?>$MTglbfG%&(htI-I1y}*s%O^vE6E$?2(-v!p8zZi*0W;^IIv{sV45~2 zinF6DsfE6>qcol3iI`qa}&XVh}7b=2|9w0VB*8B zpN;3l7)u);CSaRt@#wW$d`L0-EVS|OhiDyVz40xMZ?Zjz#^Q3apDM)+k>U+Xq5c?t za%f%ntAY-Vkho<_+~lidtGAiB%|uw5O8Oq6&xuC12O8N5jW3a1p<(~3?ZvpHtmv0F z%2C1GeI@>z^%Z2GiBF_N!6#C%srYm)iZ%IkCy8(UbMxtxy$Td3pDOC47a=KC`GE<| zID~DK5~jHhC@Dj+6p4scuOO0J1h9%s0O3eS7ps^}FFW4fwH#T{R8B5#R~|rV(UmL( zkxLk(VpfNPUybiO_%&mk7r*W!d&VhN@F1sH3`aq+OYUM6vm`oNB)X0g;m^jePk&ZW z+W2MSC@Izl(#Z{W#~~~!Mu@neQ556QumMLD!q1cSEUKFdZpzb1m z(Od%~VL~c$wLx7bxw3KQ=F^8iDG;1|iq>UY^-~_ilOP<8u#HSL5C{5cB}s*EMJIwc zA_XyNDPs5p2}~k4keEbA7n7((zOobjT|>Sx{;o8CM_HUt12NYMqrm7&mZ;R=b+lo1 zIGD8HUB)EL--V{iyTOY|Ljs&ezunJi)OVhuQQK);Q;8JYM2c)m;rO%hY4(o_N*kX9 zj*?7!-Z61}7hy>z0>y=nA`?dkHi@P#*r%8X=Aoeq5Id6|L$OL(<&E)T5^qR-1uei6 zpJ=5N`ifRjQ&DOON;WC=7Kv~DbMx!=9~3A~epS@Ty982Sy|>kbW;wz(iixFn8UPqg zd^NZ=1Tgg#r2xxlotIcfM;FW3n!QV3@x|k>P-S!_OTqLNucI2VE_;}dNSi&}dYu=` z?xP|&(dOREiMAa_p|AcmmFp`r(M=-JQc8qB8^6xjqoB0$%fwMqEWX9W@m7Q-#Rw4> zG>T#z8l|r|CR>qRVPa?5xwxcQw)I*smep6#4Qk@oyEuYhRdh(TDp1_~8bP&L_!UIy5|{mNIry~) ziA{cKI7;N&$ZTh6C}7jxK&tJKg-EW+#Ftp|t2qmV)t%*Rd0Vxb)W@h_vai z&Ly7wq9QoIw!}HVy4<7q^+_q`mzn6lBGJz{y7+ZVqk_`GFNve%*IRFzI4(w5@{160 zL8JJ^p;7$em~=)%6()9mO-9K|e{~-1%`bX}g7`)6U^TU!v@EfEcX7TwUT?Vu0)$znEI=Yy}zNTu< z52>Yz;5#TLx{_TYN)1HGb6Cj^ebobzHa@Mn(u+?+N;sKj>YPk(;wY5W+=<-l5-F|` zDW0Vi>d$5myY5!d+4v-IlVmD?!^G`6ge92>1Q!~LOcpe<;cjp=UPpF?hMi2O;F2QK z>sNS@39W#?g-V&fg(LY}bV#AE3Q?@drz=T(>z|uX?F|Krn@=GtpT=%5afu*oFrQT3jJM(L;FP6Fs1picdeGSd&j3Nqp;{ zn@=mgRG>KdR8c3NLY4k|5T#3K_SZWoB_8dp14;mZcHYANA%kiEC_-$x<-;$LrV$LEQEakv4tRd88M=?xP}v{kvP(zgdc6pWMvtpPA^t zBGJz{60SCW-SUNk(#9_nM@g}_UN>=EjIg8_TfBEdqbSCqQTC5x(isg^nAj;c86_)~ z)p>*$#p)~Q9SFoPdUjol?k-P7t_M({Nv=gyyxK1+*F$goT!G-^Q?!n~l|hne{W=qb z{~~PDPjp+=)KA%o;BQD_>LdNB5nNHdYKo0hGcW{+&`0(=OY}2ep)b|>nD+7qDZlVQm8*0f6n+!L1*KSz)g~8 z&RP?|Z(UgSY5>MMRA=)s?FafE)V zrb7yQHw49+6uOzjxBj{L^tW9K6gQvnY^S-tK4p!G%M}RQ_(bc9CZ9ry;Il|!@`)~k zPe0;72-4BTCu*U^-c{o)5xft@L|3v)j87=Jn3e3{Q)8WjPcw#k@+rjm)Ncmo(?4+( zd>TBC^GT#QUZl8@Qm8*0pFaImLFeET!%gxj1kt2Y?}o7C6M^7DL-EOi2JwlbQHksd z4LhH{skQK_a!67>(F?AKPxQtg@F|xLDfrY1HJW@nhQzo2x%u?QCkhlNpDOBhqQzE9 zod}^NH0=^L3V!7-cH5>02L21#I zECsW7n^9FFxM#J8z0(nC(^tn|>cy}7s0dE6UDG+mx|b`8{cjAncV?njMWWV}2!A$y zP5)RyY2%lPqoml!ubDX3AuK6Ih`69p6ywk+d&e<39t~BP*eNy(B`cM6{9rGN)mQYU zP5{5o!V&zUfuD+BPohkdU#m!V>z|unH-4l*ar0|F)n-vyudgz3c?Mw{zo@+?zp8MO z2>y&jCch{J_;nr*#4kF!_(kn>uP0Em6T$aUT685#!T81Nn8WID=&v4#wDD`rAWwc# z5u9HYcXEDhz)`5Md#>aBG80`P68)PJIr-Ifhl0|=mi!__T+k?facC63I40L1yTZiIuZHCo zeq9ss=GOx11n}!o9Ko+*I;7y&=P1+U*B>~u(u?Dv-Zxl`{S423pg?i+%SW|Y_?3b3 zBrdya9Q>M(#3sM?;3N?|3mHs)Q3~+u2^@%Dbae5H+Ue#OH9HYJ0;NS)vJ{M8ypGKf z#5Errk4T&TYB|u8UsMF=SKSm&opw_dzuq3r`DG@0R3!QWM;E_FzptQl@Jr$-`L*g5 z6UPMzOMVd|E@%|LI5di19Fvx4sKUg~uNzRZ(qAnv_U0FTAdvV)UvdM#sEbnZD~d8r zemzFATmRhp>*DtmC~khSg=P!Co?2$&5<}RgzjhKh%Kys4St9r@5}Ev>6yO(qhmQC~ zM;E`?Hw9h(7d1N(T!zx3D_IK0FJ8w4R)<4>bwH$zUr%VB{GuW_zplQG^XnNLh5q{c zm7HH@qVq+fnUn~BHvN@&M?vY}m&8%>>&ll+919SZ{31kL&?tU!XcWIVCQl%{!o<$6 zwz#DD^~3;ge$fY@iC?X0;iaOkhVV$CzfM4zCcpZS?AAXwzrNY3KymYHEY)V=SO29Z zF5MBf@r$10Hu*IISrfrhBr^F$DZnrK&M@(djxK&tJKg$=nw_dyyxM2P5;^(x_!b4FgI^Ly$*(_N zGI896u;dpZ;(|u;i$kOM#WCrNhAK?#{CXNCD}MFu@6E4~0D$;4lz^zH%cMgJeyv5B zCci!=*{y$We*I&!0>#a*8Z_6+uP+yyxNJb!#xK&>CchTq1kVdW0Fz&o0{prh2jUkU zUHqbUy7@)TP6YR&%IHd#g7J&ju?Vp)`#2DhHvRQkp(nqn2+pqsw{q(2#!>L=g%O-z zW};~#(K<@xn_s8Atw3?}Yd!WXTlrP_qKV5mgl+sP zfoLYbYLGP%T#7^{zbFOxbt4YMFFLyTMeTI+i<*t^ETFXLN|u80i`P-i>Tu|<#ups? zno;1%FDiobtKb&SuNaPkUzc3Q`DG?LS|qxT5;^(x>6;2l2frkal3#rwo%CamLs;^Q z5OG1H_{E`7{Nk9*Kz4 z^NX5|^)Hl$xj3a@{Ni=&`LBom(h+IXU&mkQ$uBB`^J~{loL}8=*o_zS%G zbt@SW@arZV!LMvOq|jeaqD+%tt4Mb1pPOGdZcw1O`L!9%wesurXH8t5LDv{#HgI^Ly$*((~F>$;aVaYE-#08Dw z7l%gii(|3|*%c;sew~aIp>q?T{`se0X`vwJy zn_ue*eT)9OexZp=7-1W~N(dY^et9G@@{3ZCeZ+y;M>=)xf}nP~`9;mf`WH%r zEua+KKC(J;Ssf03ZG76nuWQcp zU#nkNP&)V}ag_Wz2GU78&;nt}FG9uzjp7%FM)8Ydat*R8Oziw>_>YBO*Yx({7x95T ze>MS2Rf%;}Lp8J~h*4dA4SkKm}V;;#5-{&s)*6r6KXa&IsE6 zMC=)X2Xji$eJ3N8Y;^~OsnsPd_%k=u1&LsPQBF3Mqm{2@&kdDLKtaXq8Pr7Z_ot{$ z@&&ti$_mfw~nxYiLaDxXUA)5*CIW;3@QC|S<^Qqf*Di~_PdXzCv&ts zLgvwKbErMhbrVLfT~21i$SqP2Y@LW88%8#~HmyyL*KZcQ#K8F4#Oq3Gg$G``B#MOW z=YN}!Z9~`%S!Yp{gpBlsuWSWL(feO^NvoN8yiIpNy z>wK;^YQGIssC|#1Rr!eVqWCs@P1EobhRcHAF(io>eo~Q3{FXjx;x`{*H-1|YOGQci z$ewfjYFU3V{31)aHvgtdT<@qZue7hM^d5%{(ag>m?MnVah@wgXc$BUvQWVC)D^c|b(GSuEf z)}*Lq5=3?@@fgxezU^jV;@hXJ6oK0DXL_U7et<$PaZzf%J-#YAepbG1LyPQuJB=jq z(02nvR{PrUFB81y5O(wJOT=209Z}lH>}#&Dua8iQWPE!Y7aho5OHpE^zR1Fa+*7O+ zft-=+jojw`3c1%2bo1?&SCivq<(pXev+(VY$Gq|4Hqqje+>eBkZ&MI9;dhHVr?q zFmJ(c)uT!9BU5ap+)yNx_~jw&#&4o1O5#WND>!~5s4TAKPNYQ1@Ed`P4*b4*#Kf;R zU1nPD3|5N3Z{q3R_+4J8@Ee3+D*V1*-ZcDn5+!WtycUFM?#6;zK6Z= zJ5v-T@uT~R9KSphzb}zBDSlZ5mR;XHkMxp%`&pRy_dP2`;CJR}-uV5kufordU@H7x ztZ5p4^IiD$AxS*+o$jMHTgLCZ51IJYAnfMfkBGIZJi6b{@!Nxd;NMe}C>j5@;i3b- zn<+|+-{mY!_`S$V5%~Ss!yCU3Lkho52&TgCmRFjF9}Ofs|NfYt1ixBpvjxBVkx=q) z3c_yuUJ^w~{?UFMj^83Gi;v&yDN!=~=HsFRztbp6>OU4{`j3?&_1`Jp_&t1~!f!T$ zsqi~vS<~>#b>X+_!6f+2ci=Y^2_=4c2)pr{D2kH!(SA9OUzLg9iIgZAej{+vf!}uz znE3Uk%Uu7lQl$Rt?v3B&^h&GcaFu+1_g6xKd5y@I6uDywCcEZag7lJk2^J>i{lZES$mQjDBbSYL zM+xMD2r}es{_*N1$?>xKD^py2E28?n^xaOh*9zGe_nVNdN7&7`mZB&LS%u;on;Y}- z`ZBU6Ma{rP2Wodxlo+oYSeQ^-%}NodwLIAywQuqjYM&yQif_|jN{*kEZ?s5a=UYdT z!~;M6*-AONc=|pQJRM;-c&{VYYAons4$il1!M8goMY56l0xmj`E2Joa+-w#m5?TDakMH%yi+#b&%C}M^ltXj`!fwd!6-7zD z@ekQIy1QzZ$O^mBq(v1|>>{Umh+x@Ox{HiC-7G z%&TiEzkRsqz%Ncwf`8jtnE1Del_K!#e7rY)zn!D-`yRnm_|1O4Y50j3 zd058pF(iqHzGJU>w&J(+9uvR$2)psyidd`4<1ZMe@k`5wf`65iC>j51aM6KZ5k(37 z9%5m_Z#FAM;I}o~8^0B2EBszWFcp4-{+k>>tG%FwaJ#+uIPQ%fK2~e-PbMRk9K53t zc7r!hlq1Pkr|d;QAUBXwBtz~lTy!9J7)1%>Mzb&>H;k1ckelDt8@ckc6mn$rR)MzU#_L5vW~rtT$>G_fn``h@c1G_^Tz$m$REuc=?|86NHPkzzs5ed+A}( zJrft~uA{gJ)jf(Q7)Ut2`{pw~$y zf{R#P`W$v5v4S{JL$!nz_0wBU(wi=E$jsP zVeHN}5@F`zQ~!GkBjj=R|DII(^8{X{=zm@%^?xPFNaOQj9*6!vTl9aGU-bVT0t&Z~Cz8w-BXG-Lu-|6`w z2^za2h)#S&fQA?5GNW?{>qJtjP^JHy$$GFB?N0=6gvB)OiS13S$VMr2awi!~eEry%g4odBda_U1sFlcfH8ZBA^crzH z1Bri9bcyFetNwA0_g-9d-rviVz&}T+MbzJy^SB)2xL%^ajYC9#kAGM=aoI<(^TSF`%>=CvYvT?OL{dgc@!mu1x5 zt#l^4YXCu>J<17#wLc_ZtM=OKw~v2TksSZLt`fYLh1U;Bp5-Bo|6DQt4SdtlIsRRO zSnQ>=M^c__2Oc(gekx}a;N#~uUN_`f%A#rf{7uTU>kJ`JO%InmbN}W9#zUS8QaR|K z;;$_DfUnb-Dk8q_WW7?tMIvjA_k-{ge&twxvY92T;3wqy7{SWD+!sCs0fE&VkKk`E#R76jr}g zU-uRu4HQle^!5HyfOM7uX+EnupH(xPyWX$y6Mkj?T_oY`DwgaDc4bhmaRQ{#;)4Rl zH&LaH$u5(oekY3%qN#%3KyR0}I5}2)6raAZ<74B~ldN{Z?~^zd;L~+1nvi;fhjNU$ zrwKk~;lpSSeitx_?52S+%1fSoR)5QB9}ct1^8l|K^1OQ|fkg70C*^4&$^T?xS^389aA=c#wji_ zto5^_o`Jue>&u;W2_;IgSewFcwZ$c#zvfHf6zK zO~6C)W#O-OJZyZK#H-{(elI&A6wcxy=% z`4k2LmuHNU=ie-v_}gB}v*l#SL-XevpYW&2{up<6cKOqj5Y+^KdL&>c|Dfh)i+t$6 zp%l;fT!R4KU&uwwWWBVOpYSVxPG-WBOOOa&%|#wz?3>2Mf1dF@4`dl%As`T>j;9{o z)Je%`^>D5HlKolxsYO1gy?K(0!0|hYi-7*TjzzQa&qEmhCrN#ZZ$>)$v%p&#?yore zv*zm*@*HNB=K)?fQdFZPX%=)c;<@D!df90m~SAHrZ zAf)}{wE~}|ESm878;^ti>n6vayT9i86(V+t7=Nt(9oudSP@-beCjC49>>?RK+R~Z` zj$#7L=Fc#G!cX{>F8qW)+c}M$Wb}EFARd54qS^D=F4l~ro?|iD#wkqf*;BxCv&~5$x&9WV}8sZ z<0GhPw>sY6HHnF6u#-t#UVh~Tex-_C>BL127?~j@k|x$K=XOlh|6+c8E4qNjgKa(r z{l*{rB6&75luCH5)LhJe_zAyqEI;93RuO!(f5y_KdR9j#K@mp&U7tHl< zoBix%m2VlB1@irTD~V0=T`uK2j^v~JCF{Go^zD`oN+S38b>gM%NFmRYtYSI;QSw}; z{`;G&|2n0TCqOqCxlmaA?3IZ1)?!mL@e3@^MSBb_1C5E{UkH(fG-t@t z%rsg zU%rR+e={UFa7=0hNI#|EKWQ3ceT)A)0@IpTe*l)<(3(;Ifuoz%{yZoXW4*5#?QdTF zA*TPDQU8IX(zHLGu{>~uPi{YW6N~VfyI=7q;D~A`F6jVI{)%E z*6|e2sCYef`VE=Z^i~J*`MamlZ{uwJLHR$}YRx}&ed_+%?X&hz zJmZ;k_S-i8;~Bfs*uxFB@qqqF!wX?RL z@SD8eT3?s<)8J>zkMWSk-n++N!#Znyb62OXueYtgNZwy-t@#JPn>zn;8@|xLY5JpG zOD8_RuC~@Ut~Paj_WbdTk!j@X;_?sMzGkg&c^ZG=A)CD>d|p{@&A&g5eI1Ff_*wb0 zVPop{b+?V*c*g!Td|BSwiYLZT8hg;rk$!g?`??(;q&4NI_MiJ7Yx_H;;b#|D{#g~) z{LiG(*Iiut^uZUb`D1UT#&e|2e|( zV_X`3Y;f4GsVh^r-_C!`Z_@PlZd-q0e5KKk%MV!bA$)Im#)@x?`qc9E##dBLe#JA| zvE|9+_PCwR-=q4zzSmmct!eUy@c~I|eHE)x%lD8CZ>n$d0&9J-H2fWj5AIs)yE=`2 z?C!#|;bCiiJ=5re?k;(so@dS9eMRc_K7+6LS>+v<#@_9BjE`6v|6+qfA1+8UK1SN? zFX8`+Zf#GCH2Qm_&ECW_u1;fLy4%Jh)%V~`YkiArQsdX%=Fd?6hH`8EU1{<^v-eNB@wXgbNi_SD+H>v% zYkQ`q(f7-3{R@9HO@D51;n()>*7^$4jQ_ArUaU{7OO5w-2YXhg;j9Zv4eu`n~P7*8E-4@I7YJ4^;oJw)!`u!DoZR{>9St_jY_G z(d1V=V@sOxwc9Zs={^0a)^B^e?A6Jmta$WHV;`0~>}!`a`qiob3ew=!#peH`{b|bI z?MT01aq9Lv_4nX3_}bS$F<#U7FJ1m;@4w!!rk1C>jbG5e>GUD>PeVZfw`$POSfr0< z{GGYfc=c+XA`ZJ7jrIEIw;DZtnr*B}ByhVu_*|qjZp2eWk9{3{Z-$1@vjVsci)DT- z-to#whx+igPc1$KYyTazxR&Yf)DquqABHO98EsiLt?2eDo?#qCbs=|-riU}N$_=H* zV3%j2IH2Kq(asUww*vPvaC3S+(&mH{*>qU@X0NR%=iDiTNDHbcHkjmpn?)1^&;Wm@ z0^IE#oP!qT`cXjDU^>miFBBWBjfoA8)E8XR0;%xkk-;TMHI}EM(+T)Z(PDGU88UNe z$2HF8@WXt5sOAUSl7?$^n;QqZ?Nv3m7XQ2ObKWoe5c|K4lUnY@UDo)ZVgOZajNtcN zuvPmC>sD>YegI8pSsPpIP4w?o%U-EEpg0m6P=eoBf1t3~-)TUxKQOSw-)Ruy3emPg z*0z3Cg~gg)I6>3zD~E*G$uT7oi&7A&5X6<(0Q?4_=@0T0QQq`f?4Uy&arFJTsg+Zthcb;r$CHqQa#oCm zw8pgEY_}EeXvu!see=-0^3IhhF9=uKEt@t8h3Kuh`VVx!I9qQC#xCpIx~iZx-89pp zYch=&1~ML8mD8(Mi?w2#6~LDqYD8{a8*AM41!|N#8A5?E4WXU%EUlq$ zHX9|ln->F0u>vOD&d)ui8vxO;=PNb{ze0ou<$`^=;23^*{|Y^lAn{wv_jhTro9L!; zDSz`YkV0R_ppEtuUIdiHEdPzt!?ft_S%HY&H!u;3q_eSO2=QS&x^8lgmj6pBDmYft z-`DiFX-kI@0YX}A6#DEvErvHGzm1cC)^JfKI@D(zi+)x7(Ql&1*GjvEtVCpdV*CBH z*tBk01(%V!(_2R36LY*IG|tyZoXI)i{Jo_Gc2Vl6G7<%HScC}cZ8ZH*E!HNiUz8b+ z9jfVgzS!HUFn3fD&& zH03KeLVg-VyX$^U@OTK!$T@;B;HoPDGi7da`}knWVuK0fhXD%o#ULuk!eGk5U_xA9 z7^c45FkxIp>#+Z8O`dVYfrCV#Y(P>3ZpYJp2Z_MfwMh}+_Pu;L>kxX>^axUpM#dK) zkiL;{8nt`uAP6H2y5wFvjh@)h5+#`?SBWzWn>=6>!cW7m7(cwVTRI-5KM}198UGtd z<8xphc?XAUdJ8RoqkrC-L~%B4-a>cN>$$lfVdY~Ms911W0nxDpZ!zyZHt5rOt)n-H z7i;=ALLZ|qpp<*<&|)Jo>Mv$h;2q(h!21c1^`g8;{H{#Jn^cBVv`steg#m!pfR{zZVNthZIx58+tY{U)UNS1b5x9qUq zHKLbkntrEzBRYT}RfzvWltK&V|576$O8f3Ls2rkedJz&_0)$~CA^-sIHy^tLdK>RIucq>& z>q-hn7hE+OY&T{XqXLN}KT_eD=6>g1d&vyPZUtofjXgKezVgCQL?2iTWsBaNgx;J) z#}HRmu>ok;04)-Or=u4_2vTRU0SHKI&&n5ygWjKEbcpOrMB)QN7}TL~{`%76!g|2O zo2+uA$C_~6zE%3HgSTKcdzf5QQoe>m<)mI$$B2$ zYav%`JlY541lIM`@;8-rW4w5Wo3cuYYEg zAcl5FNtbK-WtqnLSM!J!ib48C0j)=!h8BTLYqas3M`#tl`2s%Q#4NZZ`=B3A4)<8E z#VNS2>*Pzr`g-HXon(1W*J6K%M1K#2$$lIfW`^UEOdLVrO9J88>0u7(E|8n9*A>$Kb zlG{IlK?7mmHXa{M?nxZt(ALVi`Rwef9IB&4ACN;H&v=wLKCpZaa5CmtOOyLHMXlq| z2G-3GXg~??hT#~H!`XmjroQ0Uy@`lEAeRV(5isLsUiny5KGyi+g1rgmF8@roZ74F@}?j}iajd{1RyV*hK-fiseYIcozTO)v8E)5#{aAEes#y7|dm9wAN zc1=X@8P;#hEWfLZuk2h5@qSPY)cu6kCZnK)YW_si&mn_m^u5UETM=S4V*mH29ek9n zbW>66w#=f~IXJ+L8IXzV$n+lN?|Bu9i}wfEg938oSjLN1bJ&Li$DXlZ)l4>WT3yCc z!*GsC?JR zh;`~G9M7=6#b}AA1VHAbzWUZ}o?`({DpTG|t|U5gR~_T86#lxyRafH={K5Qz4MI~h z{s1Q`#C7=w3|ly!aB83@A9(g*n+Qf5ep&dz_}&E# zcISirV&_I;lQZ!X>TApUmdpb(F*1;zm5uUgu!?Qx1NgRc>_Mk(=L1mlWdUO*m^uf= zkHv2SepC8YEh~q_k=Sdz^Zvz{Te+hwE3D7vkAol&l`p^8rKXV82zVrS`&x?^J&o_8@Ej~A9G_iF9dSm8M$I<( z5TB9-gA#yGJ?v@dGU0{A{>27tJYyBRN8nlC3a%KHd)|Lzr2_=KFMx27z9vl58-0EG6sYsu zh%VIC;OubzmPs&y;Xvcz1$42rZ6yDVh`(=LMBk$6?aHSj>H~JAtW{X|vHV>%kw0I{ zo|GBUYc<^mpF$4>SP4d0$HJFR6&v0ALP8->cL=2EeC8C_>3K4v4VQ5eQ9 zE+fmIQbwxSs4QSIGJz^LlZ=ESybcU#s7FD_SBch*g{wJ1%P*W#is{{Y zbTowl3Jn_qM{{VwFs^$3+ik=jST?Qrb|Ewv<|5CJ5_6HtIW38_7`y$tO)1j%MD))h z@DkuyO~BYJkLb?_kfYZIMC59*qA5`HWBk)ANfa$6Y$r3CFijZ1A>$pqJ6zK%v#6d} zCF`a*Prh8bn&JHV(yn3sh$1XBm`-$^7H4MK_+bz%R9JtPR(JD^!+P&cG~feH7!K$P z_6~_@-HHPfJ5yI;aA2CQwSu$qXQN+>Q@^&NnD{h=@_#QqTI=yE^KbmG`4hn-`yT46 zYJIMjXu!3yZzFh7C3rAwPdGj($5?SOA(Mr346}i`Mtf>V93M^*;={SfiRhJl6wf07 zgzV<5fH^d0LVN(gS{`Eyn0PX18qm|}t5wn80u#^H5^HD@1nKLfk9{=x*BGn&$On(s zG9UZ4ws@W~1drJG$9pv1;R+O#ucn%zACAG&N;tZjw6U-3*s$;-^(v;4D>wLOE~fcLX8wX@>hI>f)JnVdqU`9tHj_^%(EmBJ+ky7JaH}^HyI#s@?EF&e z#zS9f)7bu{%*Hk^wQX$qQv33|y7~O~*GA%(c#IkO+DcwJ&AMf)0u zVhK5$6aAEP_9iH@MdO7~9B_$H0G+pNJj1`NFdK5P(^ieyw#%&>13zNbJ^M$0Cy^op zWom-kMRSZF--pEItMX_7`739z@gL72(evXps!B1EHXEnX_b;QB6kpPK7}NV0&+%-W z8-XzyaI*FOJIS%e_}GbozSB5w%f7^l5^AcBGh-_#<$taJHfm&vY$Oua7+d;~k}aBV ztfzop$Sui92xT&pb0jS^X!#=ocod(Ee27JtVtTx-5tKj-H%(X-k>S#x8Q?P?_!CM^ zugnHrwfxE)95CYJ^QxIt>x~;Gpivd9sW2UbawXL!m*Lm~i zQINWunm%l^Y9x>Fp`A!R$4pK^B&UOMk|jBd*uv~$d<3O|=W>yz&toqJ=m7()#(o!% zvG1StA2h<4OGY&IJmnXfw}e+0qUuh@XTDK&HidUk*#BB(7EY)SrkQ;Z-$zAVd_HwU zd^3eF;Ne9SK9j=HdaT;)^;f=kfC0+1cV(@A=7}h+NN*d~wal=-nLLKFZcLwQy$iA@ zp}*ir|RF#4Yy!JQ`^PPEXH-yi`r^TTLg|6U29FT?sWZdpn5^?wB_3~o@-YU7LU z15W`86_{%J&gWeL#FSgOkqs6ux{~nSigtbZ9IDA?};$YCW}rcnibV! z+{gLSD5ex3Ar|tiQwo|Iu=Qo-;@#8@_g&cRQqwcu8Z6PrQZKD%!Uk&k8^(J_A4uS{ zr!&uBW}pz3t(vNj=&bCA_FGL`oF&zoC{I$0ob#c6PD=mNDAE^<|^&hop=F8e7@;X*+o}hxCf{K$_v_XszBa((8?nS#1AT8jpxz zbpSJFwgCPxnBxPiy+H7ip6L`Dy!FO*|JXqF6t~lrw(igXG>(a~_0WR8RwqAy6<#?ZR5sNJvs& z*a}hoA8b5UgHxMLDI)QXKfQFQZv{_X^q_I;rBbR7gj8R1sXp*?sX!!~RN?sW61ow| z?ntt`k!alq#&Y;_JR=UQIete*bX{Tvrb$rCZyM+Q!JfDrcBI8eErNAbW-6JBy7+AJ zzrM!HBCxJB?0c5|Eau`CpZj-gRSDH}VyJu13+M_u1eODTqFRh{Qqul~zmMYfO0zT6c zsC8J(|1x*C?WtyoY`j|6|3jKSa%_ZdQjWtU@niqYf1x0v$)(R`fYj?r^=HFOhUp&i z9^+NSYSBBgu=eo|bun%~Poarph)o=Q5g5y|PGlv&#_CUHZCOU>l@^VyLT91_$@?Y{ zPp3IYHtQJGDR{dorW`c&AUgAD$K+Fuziq&q8D=KRy5qi1Hc3}W7VXShGL;i(1#}86 z8j3~x#k~MgSidR|j^7o4z|p(1AXE{SkMlnX#}8?v`TJteNhhrs#izO-94j!h(xz@!$lBJzwdSgMVk?~wAys66m9jB)vd%e#=q zu13s`p-g!%LaMw(@cPs64)=o9D9zUonxq^3mxEq{S6oBoB!UAe1uRmvcCFSL`LDf< z^7rdlE#u;I#{$dP(2kEn5!8^IUxJ)9iQwQ|_OAGhTZge4YczdTE^#dWGD)vRnF~+q zg`F2b?^U3n#B`b_o{hY3((7_BgEBNWjUq>T8(U@od)6DQi@_Wh z?ZKf3?$Q-y#z37ST*yy z2jQ4{WbvqG9$jak&N>%f8OwvI38`P)fh)x%SZ8@7@t0XjeH9gLW69;fhUQi*Hx0|;Nc^G}Y?!S#UL+cDflyZt*U4CCh|ppK&A^Mp zkTdKr+#88s*DbHeU-%UbFfG#RGq(C5u6`2E|ETmdt;bLP*E%GE)jerG+)GQWMReJ> zqI^~w&&&#^2_t1knf2l2C!TQp%r74Oaby2pUli!**{!$%xnc=$VsLl$_4O}n-6GO! zeUbmgH?%|@9NLL;J!5FM3E_BAj`5KHcd%drZfwyaf92k?c455?i#Rx2Nd=+lIaJ}q zd>9Y_06y{ieN53~BE2u%qh2ZnBH8*g*g${V_$s?m zzw!m73G<}^|EvzAQR2br`+iR7|D3Vza5S^k8;M<<_O-waRnY`WYp5h&p3|Pd~kH8^mAD4qnOBNHgmi_m$VQbhDsELxAVY|;I#{deCB@H9R%4oCk8`0rZ- zf;W`so$s%lY+jnVHSF)-P(G!_N&d4CNO5spU6d z`0b0tpQ5T~ZY}b|FSiWweg0WXC@E+$3H)5;Kp1K)j3uO&TAZO}big`p{meeKD9hJ4 zT+@HmqHklc@1eoIr?De+!x1%1Tlo9#!M>grM(t%x9cnQqsjMLOGD)fmhn9S46AEsf z?}L%+7TuVM@zIUOh^%)zn=C-9vcAVsZD69GIijrRjfc;mS~eO#ZsoOs@8=^cb$|IP zVqQzUnhq;16aUdJ?IUqf;oyFC-^HXn?#Q-?V3!F zYD(HfdVKrVLDFLZ_D<5YE*(AYqk>y^74!%=>9GQXjLioI|a4zk*f&gJi?jGl&gLJ%pKhxRjPY zxO#vFBPBu_tN>~P`m35w{e^W*TbyI2>_2lW-4cYl2>C0IMSM}bAgQ`QJx~`7Kp+ft z5zep0O{!X?efVk>*br`>6$RhZ}RR5=Bi zumverS%rZAmBPrFSmi${xUBG!s>*v13hTH_a@uBAKPF&Uh!~0u1@S5aNE*XFr1<;x z5URZcr6=8*iSe9dvq|B%J1XIhsX2kcmL>ffccrFnBuEs~U= z8;tvqyfJKilxuA))Nx#JQ?BG z%Orso&sY&Aceb*a%RopPt0{rtj>#zhjDJE)?*8At1XggK60-0EIoAI;;ZUJSGs>{~ z$AyhC(RU9)Mk#U2Y=mu>xu_YtPeUp!lfUdL`dn3X+p-{5(^=U_$qV1x(k%R`u2h6Q z0WZGo?zfSy37!Icq-;XD)T&g{(o3$aMx3zdIIy7>f4P<-_2J z;k`2T>N1bZ!8=-f4z1|m^9PvP@^@mI*&mokHTyfw+l)g$`1sulqF?`RPVWFyEv{g7 zV$B%;q-~jF!v4D&$Z-z&@2el9`S02Y1-Ov{9{}f8Ww?8SwXNXs3l8-eBO7QoUV4cr zBQ$d_v?8{vCR)g3iE1P}lP5dbm8^AH7B6jV0g`oK$@ttp!@mqGS=_T|gWc#{0~oE3 zk>k2esA?6BYt%^?k)yrVhLNU^!rewZ0wZ0BN6|{MK1VO7Wi@uo@-a4<&VP*jYwSUc zJ+>2R*j#C&G4&`mx2A2N^O%#X4IwADqLT8EhuHYH2$u@$aNNfsZ{1i>NXdk}Lysm_ z*N?zF2QGW*8AKg6U)X&SX8*YViJ>_s5iH_|i|8P;c0pFUBUwU|s1Y)@a0lJNfHm(2 zt*T!#7R&x+n7iD6EKQJgtXk4-1Cj$$lS;*dK2Z1@jr=X7`QvOtVf?)_6|Lr_6Z1SL zDif2fh&_HhDl^`D1^$AV6r0mzjO%?2=l*hqpx~kuD+IWIR&Xt;)}q=(@P=cMlC47w zLx|=RdH;{OFM*G;Ncv7l0>e225)I-pNW=)PMnMf5j~Phd8JW>|pm7zAqHOS3BV-_~ z2ZKoZ7{4y1J^mx|$84aR-aqoQ~am{%M=r4xBQ&!Bp(WE8oN1Rv!JzNWU{rQAf-opg&UT$W*>|9~ zG*B4A)kAp`*CJe(<6462O7bMEzyBSc0tx^5#%c$o50F)FS*_Rx-+mbA!q;NDzt(}A zQd#lp3Zzjk4#fSvnF|3WoMNzKIR8QTrlWbq$P9nLYat72AWOxaOl^lzqq_oNp*=6# zg(6&P@!xb2@bkOYjUTjJ-Mos`xrAYH4@J0Hgd0V;)t!IUMZn;4Z7zObl7g6;)y*v7 zj2=qJWeK?`Ay+;0086;G20sse1`6;1gUeQP_E3F$D8R!4JSf1UR^2ZJEJNlZ{4fbf zSFDh2BC7eZ?$J=h0*X*Tk=nFe3Rr>6CHO%Omp-i10ZbS5P(TR_C_w=w>ec(CfV$B9 z?3D7Mp&Q&O!9n)$^hK=t*)V8-K`9;Zb@C8LReumy@lHNX>ZAMx^^uq-Olgl*IVE*D)UeIO?<~ zzlO{gnPUA z1VE!|m*vnbaR~r!bDbtOYWkZ$M4rgl}Ok2Fq)1b)XQ0I5YzB15jK?(8~_!i1?Xv8 zgcMfuR6E2j>%FFtjOf+Ko#w3WhuqFpR_@+GM~!5T2JD=xkW;_Y8GA=hK*kJb^-HJ& zc7UPrMSmEm5_9hm)F+v5BWk9>J^^nX2cv;1%=`qem;4 z)DHcSi-%m5f2DkJas0 zjc5`JHd3+Zq}d$x5;{bUkiXwPM=d84_b(`?{O!xX(P8~lrXSotWyJ9QDLe5y;_&_{ zcj8xqpXECv7wvz|&7YA+vmM&^x&w^gFf)!n)>dFzL4H1SpO0G&-hk)QN_Z}<0AjJ9 za44KH{N|H2XbqNHn}y1ILpFl<(Iglr3tQlWnv>$JdJqY43$K-`zwj0^c`3POE_akp zTW;?W#BOeEnSh~@drAwJ>($ccf%NN)oVo)FC>PE0AS`=;Qj`Mj4`%^GJ)K23B9k!X zSOvTNTxrD~Lb$taQ@7s^S1QRX>FHyKMUGSnnSrX1v`BezdUU- z`>8(cU*O}=75#9BS4)N8SvwygLu0q3we!&kUkb1y#3{Ae{`aHL7i=WX*~j9fm()QV zhq5xt{W<5elU%x!+I1%_KBjXgp@+VqA6s}TI*HnVwJU?bwV&D#D9bqBAhRm02dmNj z6{(lb*_S%&NX*!xE^2oteXp17z#vj)G^LDAiDtnQ$h!odKzs$NW(KuXjMja0&rh~` zem;BtF)4gLd;S63`b@pM3ivA{0hAg|g)9LShaFAm7n=migakll{_I?}slSlGiLVuq z1j@5>sV_k)iIadw{p&y>fyqJwQnZjjF1AYm|6A1`|0E=Uyd(inHzZ)F(~iek_R^8( z{are8yW0A^$Tb=^y{CGcy{CFoo(4SLnWx>S-Qn0daEEil9S$yW@1t97hZ_&JJHY+T zg~d_B%-A;C>buqKfriw1?Y%;s1Q(QP?eEXJfct{Q zRdSzE{g$(8Av*%S0=mB50fQ%{@+ofRW($D%3KzKCf(@K3XbpYeFr7xye%{G0?XM5d zo`#ML+0;9;MH2tmzFy$ASsnaf|CF&HWY8UHjwNy0s^rGISZ2Kwns%3e_I^h=lDwfV z9Z3NDCv9@v{I|~R@rAZ1Y$8czut$JvJM@N*-aruGBZTdG+^T2(#$k*(*l73```+y> zq-Yh?mAA?#8+BEChHzgg7{ZRZQ>d-9jUo1Q6J~DRL0qOaBOC~-ff>MW!hf`$d!ex} zTCK&zDsAOl3yTUdXSG+Q4gue{;Jb$V3t?7aPZbG}aQhsOEsOw>O!rf0<;c9eOiu;H1vwytDJ-eSy;&DX>aj?l?hr5@V!aU{w_TRHm{7du?vFDa8>_y_fw$Ct+ z*OL+v@G^{XK)|-VqG7?Y0kd~^?Uxk$w;x%`cjTRIwca^vay#4=6{SU`_>3?VCE|P8CKPSKY`=S5D8VhK^S;g~&ljxwCbny1wUFaYe zGtx8I?*y{Q!EHJiJZ|%_K;?A~_IN-cMZP9aF)fnbMvn&{OG~`r(o#HJ!-q25RN!Vs z2q|!>VM6ENP_2Gk&P!8>GmI`mJ}}`*ouE!%>gDn?C~^3uT|1)-CI0$JyDyUH@qfKP z*gB)`PW{j7kEi)gW)vBh%kilEcP00Sg>{b2JYd~pVLgY4Ht;LLuNc1){7UgF!>^(< z?(sy_dmBT`a6!hOfzzgGKY`Pap0IIhjqm?;d_IJ>7)-iC9_vJUh-J#j2oJY4=?4UU#GBh=SH5_xRdi^lg%qVra z7j00@127R;|5!qD%m?Bt%ML99alsWBql*+C{f5u%z$RsEnjAA8W^=nrGc}5sAKxaw z+29-V1)S*f;8qVf`udSLR@f8IMU?Heg*hXGFTKugH8bvgq|#UW}ndn zl?@7CY(wajgHwW7v&LROOw$OcBx2)Uc+yMTvBG$vi!2(F)o9e&n0^@eJEmkw#(7yp z5Wl&F8nH~&e9`thcLFmSLDv3i9N{cWWZ2Rg8MvYaZhch?UN{boNo$C;VxE@r+K%f3 zG)u{b*@yd*^m_xr{vv0Uu_@4(pFkSMdh5l+k&OHtO8b5A3W9OQYx1P!q+DI-o4xnM zX4GDf%J{nizq!_Lk@e30Mu-JpBLC?41yse!+-$6D?R`pbXVq(8y8<@r$WV9^ zTu@qIZu3^Yn_hsu$p=Esgj@ul;>mgR97fknE(*JF5NNO9MCb{nxC6~&oxBhoH`y&t z#*;lp*ui~plZ(TyLMSNAj#7{ir8EHqZ~>H45KgJwmKt>+a6u{Gh38_97AegjT@(@9 zqTwYE2f=42fAY#*$d>W+VU}V*1&IMs-rxW&61NTPwe&|WbI_x;m>VJr{|Ewvs)xm= ze1i@SVQiAQ0XCA886i#NJuEX7P@IFZT0n_!Y*M@=NJGZ>3is^(lEQ$eepi8yS;}88 zpupG9$e-tSR^Gxk*Uh>7DE{x|gUo|{ym&_q+szf9oYlmE`fRDlJ%l002v>ki%W&ng zQ}}mzu*HZHgZ+{K-Hsv^9_xolgkO&$5#1whzW^2xHoo{a+0LO$(wpL5gnGtJaaboo z9q0i+a0p%Iek2v^3W2ZOSk}p;QuPSTC>DKp(QnG<6J!*nbsG>-8pqyN=v)gn>|kL~ zYS2YcYU1KPHp;Wp^SE8Xj#M$CR3AuTDyht{f1178y?`@>Uzh?LP5g!x9bW)jMY4(h47TnEIx5ysZtrim_~RX>~9cZ{=C zg^bldpVACaLZJ!+g?Z8qk#z5D0>aL~RlwG%FF{)Wn^ zI@zoZdV@?$Z_=)ke_(L54pK1^p@_$JFs;dYu$4IJ$8)EaRtIRJKA;&W&GP& z)y5l)2?L2>D+3zMR|@kghLxWo4My;w0z3t?oQ!YOX+Iy|bAK_^tQ`e;^M(bdaYI+W z*A+ZZ+Tugbc}Nj0^qJWAs?!|OIUX9v7Ko!+%K8H7q@ba3eTU!m$FFG0`tI*M%iJh2 zOeKRAovB9^jUIYb-JB=kJq`0k^_SZ*r1EzTg37rhA4il|46&ACvyRbaZx!$Sh zv*NhE=;S=&#?Bb=^*5Yrn=!4v(u#<1bFe@;u>6=o=%|mr9|*6Q@T1uw;xaM;TM(~x z82vXeIXep)-X?4=0QWJBSKcRQ^aLVTW`RLqH_32y!J~U(zVNg>BQg=igG`yScPiqU9S7Kk(hrxlq@J*1HZ*sIL zw9;ozb3lyAabY11wOQdi8RSFPiK)!x&+iDH9x$8KUtmPUW~$@3KQh0md<5n)(BcU& zsezNi=?r6va=3vD>p@Fbp2&NA7)0MgYk?;B%KERl{0>V6MwD4hm>BqKP%KA5J z6nqTV+@C$9MzjHidj zLY$ie-@vV3NxQKZ7a+sasv`qQCD6E+R*vCKy`iAymM!49io`irxRIaic$ zFqZ;f2*9j1J^-^caKfVP`PbeuE@4UEWKcjx_ZhnftU9~!gjhihg-!EazV%Rs#74$5 zO#cXj5=bAs08F)H%iCj_Yrh_tg2*HW_f*o+0QwV?8)@5VWy2}kA0R<3RfnsE=_rC+ z%!0C{AfTt2?j|64z3u_w5AEVcSE`w5w#d>LFB;@AJ|{lQ&4==GbA~^^eO8(T?DCH{ zVwnc&#QX9=z-+MpI$BuSwCL{(oU7`=1hOXVN%t7oi%+S_ggZt4mf45H1PTeCLIkRZ zLnUi3s7ZG;7C2HM5}@QY}6!3BqOCK zo1LzyV0;cqs1TcL(<-<1vfrm|$0kz9>X}t20s{DeY-9S_#QG67)(6MVp`&V(AKrQ; zSOf7SM;T)jicacJT>k+-20dh~9UQ0oqR?up#1K!|^@u5oSQu5CN!G~$tq-OJz0ba{ zV{QMmKZzCNDr}1fuOxa7Hr7$A$3JY-{LHyXFGYUuntg!N1=02zG#v(RgSM{dWW(HK zRMM-lajsLlG-6DNS0l^~*rRpG2n5ZH6ru~riJ{y}eh>$G&QMu@q1U#2*)EQl>X3G9 zY{471b8sJCJ%~E*YFuQsOq3IeF`Hh^k#To6ZD$w~B@$ou@cX*6*DTnTD-@hj>#~ql zmF<={Z*Z${J4?Xu%T-T7ekX|XFdHIutu`t1IhMI*H^(MNGe|v`-3a@@k>%9c3x=X; z*2{v(EoDGm0bU-%l051{?APZVDEQATBeFQV9(BetOTVy2`(h0b2K=w80K$Te1X#=L z9N%un8%_*vPzY=X4CjSqeHQ_?ht&bb^Y$bP4c2SE7{Cy8`&K8-7Z9%o8)G{#ckaV1 zipZL?K9v;{Z9S)|`0Ljw(NY0L=0U!2dUj#WHQA0f@qMXly8aOUPlXQaqDS1ok?@I* zWd^^5!0C%zhZ*J?tcT!Fo{qVC$U@rp+S&cIQNu*-La+kN{G~adCO+aw0nna-S63q> z!$cjDAx-bN@Z{2_jb9OdCHR%WQXK;FkRR@eV#CIz25)>^wya#wLmMjkd}%mGuV;{< zEyhc2&;cr2Q;q)3eB1D)v$!6f2>@m@*p*I-6I`etyre4MMY;y2YeqV3M7^ZJ>pZTH z^NxBlLaxjbLlsBDBLO};xSa-9W`u`<_|asf)d$S$AVXig39LPUsp5?w7O5~FM5hPL zYc?V4@7$m$EuAJ}I`|O37JKV+AQwwy-Fy`s0P$Syfy#v*=g5ytc_+pb?zVLwognbW$(LJ-E{hS3*ZNUBJ zfChhlASH-Ml;awrLl95Ux*gyjU(nzPWOk3zf|4b0S^ z0w(J5&-{VK`_sNh@5`o}t?EAqv9&j&w|4sTW93;aZ$D$o&fq6hpvi$mXlR?SStCb< z-8u0{!k%-dN|b6@jfN5C3sM%N+CY2(mY^7Nsze;OZECOs`OR-dP(&QPA)m!!YdkCy z$bAXJnz_oia~dqdQmg({xzT;ew2RvQh0mG}Sf6bf$ib2-gAl@#)L3f=4K&7VM|eV` zVIO9mH?i#dqCdaExo|D(S!ahk_vbe{7u5^PhF!7Ick4D|Zuxi|r4Tt8oayU#hH zolz2|f(rl<+trEiAN83|P6pYlX0Ork10!#L?a$vcXSy%H1G|S2zz~kS zNkKm}*0-zQeL?3vMvgnnt-SZdVl0N3E3!<-En$PZf=jk5Xeb1_^#x6Sm>hZ_yVn`PJ^s5v1TO4E-`i6SxffNfVh z9h}K5@E*7uN`nm=2h|-!K5dMQx*G`p7UK$#bV81b?Cvr{LrN)^^B3$Oo3M!^paZ-i zhA1i}Th&#c11GjO#LnRRoP)I~o{|yy9~92GK9Dp|mL;rEtb{}m?mYjq@?q#>E8>ZcXbCEKQEdY(*tUTFfpcBMr+Z_8$fOcHlrTi~ zL7hTWry+vFM)f`7uEDBYVT21S7Oz?CpcG<%RH3;`EHE?-Rh>sT@B#b` zx}}~&cihZ5w1cd_n17(Om7&d4r(`zSrW!vK$ILSU*txl?_&z$bFh9*QMW9_yLxy)P z%0}T7;Gq0rL&)_rbTVDd^-_&Y)%(|QMW-6}+>06l;giXCq@sZN1EDs2u}xM57|uHo zARu@zwb5d*ZfSGd%|t!>;1iB;1`4I2WwJx?@D=&nX^4T1`lonQ(I=z;?Rf+ACj#jE z!_#4#f=YVkr%5X5ske~t?e)bPefhEADy@kgUFK+;&t_{j1vIcbt3TzGig^(=0{{bY zQo?6A0;#`4T=HG~dX~^{ctoww#27psLCiHsYukPlBt(>bc2^vv?dl&3`a@%h1y@tL z2R$<2*VUdMlkj2hBYy^~oB*64cyulWa@dNm(ULQeTqKj8Z7(p#8j%|S94r}b0q!hW zB+&S>EE$L)4SY>;slyV$ZB+vS97C!gg2-yw_+uH1NFU^A+J6b-Gna#`)A;Om66!oK zEioXGl>zvunhc?0YM$dzmtjAEA2A4F!Nx@!v&l4z91>*^Cfk19#bZM$;7(RNHeVPG zJqRj0xV~2cP%_wLGZl1+Yy2hp6)EBzLv90Mv>T!sglEiGofRzdqv?8m6OGQJds*Z{ zBVq3ovl--zt#qkXXUd$^UmxGJmh*08N~@~-gj{?|oqC)%JV7Hev5sQ_CjIzY=TGA& z_5Vlw*z$we^u_;?y8>C~ZVS#LzbmyQJ*wc5Q=jP=%41zmRpcpLx||buiB( zqJ6~l54IJ1m{XwGV<2&wivP3Mf8d6Ar|7QJi>ODwb0zi2s)MOIlG8<|gbaL%E0a|R zUxP1d5CRh5TTLv}{{eMJeL#*8JMz%?A#?B_;K_r_fdk&7_X~%`iaZF}Aa_RCF)$Pa z4#H3o#&Tg6ISWvG4Venp;wdP1vd7y9wJe2eKOlTPvKX-BXFrbfzisLtHv&U2jR}7d z)PkL{GK>R5CIlcTFBw5LelBznG;A5hJOb?M;kJ{myzoCPWy>&hFKY9#0^ZqW=w&@; z^-uuHcW5h0f*K{oG`ArRn7kKc$#*UTI;+RMZ>1OBOG7m&0GtYW&maadNziqWGjHS) z%(IxERw9o*KWWQx*VBU_ML)tIpP(s^9{c85KtGFyscew#NSV{N;09?&&IVTHVpUlM z6k0fOCvn~{Xm~;6!DliqpH7lN0GS5TQ7rR;R#=$$owI!5*v%5X?0hi4ZL!P)-xF(H zZ_*U9UME@8vECtX3L<~dCJX-w-+AkpUHoFvnWya(=hsFHcDAAm$NZ)AZ!No`JG3)7 zd@<~YdDPK9py13gX`XK*x=OWuV4zvSsFndFZ7_(K#n#zN3ovks#v;kS8!S|Aa z6OJeezQ{PJYP+%1b~lMCNO~_eOc*PmT6ecR{f=IqmPKhM)eFHWxY6jcZra@mIuofx ztem&sqV((PIGHZ6;HOC+UM4fQ?I60TM5Mtc1|L>13^_7qEC%=sY8pn9O{#KD%%?_V zHG7Ry>UQ^2NI`z$0D0K8#5z?)z6wYI)U)d~MeAupbZsxkW0DVW%iQygnOg*D3-$>l$HT%4NE+sx z3Lw;@v*W-FP6mc}g>Lo^1_I#OT;7*2+HOW_fWvQUh*ZrruB_w``nPD!?4&i}Dkbl4NHTKtvQ>(Z+V<(Y6 z|2--oud1u_Q5Kk2S%6lA^F<-M0Pkv{{9z4J?^0G*=3#{w1Bp`{kF(I>jyI@JKj?yg z`rjw%R7J!O5CSc29|Stzn3lNDcDk__?R*n{+^~LcfFr}{M%oVIio=jT9SLs_oI~Y{ z4{*eebyl5=k>QWfCCBITjcFEh03+ZD_6VqjJwNpQK>k+&=Y+3_fE;==y&p|j1x~SlHv03w3HDJD*gT?cctxp7 z+>sBvE%T`8w%gS;cwK9lhm)ouCd}tLRX03@>tVnK7LyVNh)(VA%1B_kL_B402ODo6 z#r114lHUeF(BYGPGhdMAq-_J2aQG~~Ax|zJdb)CBQF2GdGQZqO{&DF0Kh~cMc9EiB zlAE({sC|ST%&M>>1xyTK;0u;H-OavdZFSj)&Sg)3V>HCDQL;(*bVs76Gr%Y}_}17S z-oE_x&Z{J6clroT zo752Oi^K+K%Px}m%WY=Qwdk)7VG}>25O#auQc_S<% zi0M2;@J9F!Y`wzwoPaq4WA8L-p}D^Njlrpwov?(Zmr(CQQKd49efi&&kK-dICAi~l zReN6(b)FjtaS-2Tm^=}FMehe;CRjBIP_!vJCP2L!^I;1o0SWlQQ6Xh4^g0EZtt$2oWR)aS3(kFm@dB(&?=(s5LE%AiGdu4& z>5hOWk%0d`3!*ptd}gBO1&?Xlc=V_*GT>xfg?M4Ptl)CzaaW@w7HlL@b|&Ug?~s_w zszA)@jMik57B7Um=!F2xKydm|Ly%q&g%s?2F20TtUmQs|R6vIT=3%GjTKp^s^)%Tl zFkUXF9H3WF6ezbXv4Zji^?@iJ0ME(FUXhtRKohn>UX^&^krFgZjL}6`(Ie;;6%oTEEy1A>6rbNz0$D> zD;&L88z*VK!`v1(tPP?^&H%c`IG}~; z)sC;r4>xewM-;Occ7GJ;;g~~>4BQBq!?F$#1h#Cy;A&(J0LB(jq?VPBBGGh2=*DVw zVg+Pqb^s+}9RqXg<$&E@17VZ61`@E=K(Z5SAh=Defn3qxNRW;;qB*NqWB&PZ`wo`L zzU$3pvNLypjywIcd~3jP6=zi*_4zsIgw$LF%Y#SDs%UVjFS4>8jpW>(YdrtRKlDG} zOj+Te5iSR_9%%<{gR=k(YQD8!wCjHf`vuG_m|)ITMtGqC_G(0yFlsU0?!cR3%99gY z!wXCJ4wevjALh%FInGO;*rB$+3I4#N*CS`v@H2u{-{6ja&r*-;?>YFsg5P17Va8m2 zpiVk0qMOvS$8_M}zKI@`V<25~%_Iov@uWr8**jQ>X;QUEkoqQKEL>gckIVtglUn^a zg83NmRhnnX`zAY7_!=Y&&&O1bBbZOeTRdP8&1hGT%UDj?he!=K)%7o0|`o0r+*!Jzj`GFZ*zKGA&uqJls&1&`{6vZ?2KL!M6+FW9G zq_qU~@^Rg-hrt>59dSU!v`;4dk1IJF%49@7gw?%d3z@}cEqIC`JN!BUkEbgi_ z%t*0<5rj_fY+ulNwyfBtY?o>8EHYo%|0}6`a)Ci8o@O+zGQc$hbL4h)?kjvCR#fQEFxwp_3M;Tu39ld@_iW_fv-rr%lkr5=zFnM^2}+tsxkSnxOJ z3o^#->LPhF5zJn+>@tF1L9BBIyj1J~HvCC00GeHJ-4tyAa~z?Av4}-UIvzYR59FAl z{mTD5gY6Iz8HV6uw1W~8gbU9452y2h0JI7(40Xec=mdXw6b2BQH7N@sQ22KauXEMp zteQz^*NxfIu#d=bz=W}b0BXlJb)Gb%x4gIjjoGFq$eT&H-$?EV+UU-=1!u)MU=wJo zf~}vFPsnV8$2@!)#&wGBbaaugF9wNMb~53@y7BP5%!E!W{V(2&Vtj_>d5c=H`dbMW zFZ+?Wz-HFfa4birlmHx@1`NpgZ$1Um%8t>_TLiE1jXWY53*t#G?$OALE#7}YC~9%@ zP!66qPA6?c4q;#~KYbT*3=t6n3QkD&Nnu7(XrG>f&W(PRvQNoO_F&xKr3@}$$KMD+ z2(@;Q{ar?y1cs7X4mlX)ZH#7|7%1)^>vi#u* z{GNm7oMecT`yZzF48PsDH|&y)2ugulueu+bk1#zTJINqC88^w64vhm8abYL;VgG3R z?R|0h@%^&1ehhz+j63(sf7BDn`P+UpKk=U|mTEr;GS1XpaYk;4AH*jX7YDBthKV7p z^(A_8i4Rj`p4f0Br#^kxS2$sZ@;fJd$p_aBeTb;jHM!L}xVO`FR=acXnV1RZwquV? z2mQ4gC%1w|VZH=ZIgOR{s-lft+^c9NzZ<+?%;fr8N*iNONa<;0bNJz?`999UX(-&~ z96W`E!)a%-cG~HaqO+w&XIP5Nk_QmnNvi1;J;!=?)jRgPv?$agQF!Lu5VO*yM@P%r zOq$M?5gqPa)u+aK>WwJiT)43w`(V!1ni&>SEu{z>dRmSAP0s4~;g=|;LM-`let6{) zNZH^+Mc_j@ScS{AV+{zKtqq{%4`B*<62Fh}`xZYZ-i^fX1pGYs$$03FKk4oJmu+T^ zTh;28&RUeFPm4_nKO*n2nH<-<8)Y*ad*T*$3B<+M?vyQUJIJ@WrOoaSu3WQ@*P6bz z5SALfo-eZRx3StQTEZ7;h|8mMr6C3^pw8plf#4bB^^h$uC{m~24!e*}BzVU@#$>$r z>V)^iN37L};m)IZZ|x>Pc`|+z@jDN{EAg9y-(C3q1HU@_jOpI*j4{n^r$pmJM+PXy zpErQ<*W`7fX&`5?k4VOnC{{OM+qO?t)ni%k4|^b&H_8ziuwpwnBVb5gVUhKNT&4hC zg98{ImU8!2q>N==fD3k7<26HJ#4=CjYq+6lcVV||p^s&H@fNDcfYs0{k!Xk{qU%~3 z>cW1_1TeT0e#Jp(Gub!HZz?}d-Lt+|`2(8vV%$<1l&7m*ulO8d=5Z zVK?zetWs8Bw1smVzA*=u8%eVqY`cE8qeLVvHU1dd1`ou^FUWM7F$V5g=vtHeJI7Mx^ zqJ$@+7$K`pQ@YcIiLJpoI2BQu&cKO?gMFR0#|r+t%0~-!twhfin(x91lL8)$RU#*0 z1R!pRXjj-K=v;Mob`~Ds()*Mg`csI2x|mrq8qVNEp7{wbQFu6J48!5|cpi;Q)mw(M zpv7X-WyEn+b_jLxN)f`>R8PSHTWcrerT4;ySh#(bDfJ!(ot4R;$WV;Fm%yPVWXjHG zGX8nJg?~J0k0fr8$@&Ak%S8AxyfO?2Z^Nwe%ub z`q4jan)Rhc zUv}W)5C5|jm+(4;zwDlS0YCKXc0AG^7+%#cvJ{__azR-ckwndMtLDZ9)>L(E4;5u#f#s;K$N}cm<|zLSRG| zu}}a6Ku{Qb=^#HI4jmCIc^$#8q6fz^ziZ~45IL)l(a@I0g&vrwH+*S40`xYctsFvX zSv|13x)?>_d`V367u1j4>>Qi|_hQI29yflu_<68~RfJAsXRn4Dl%k4~65}K2Yax4^ zL$dl&4oQ7nIGIoP$_{vQ8!B0tObq#X^gXKj?QO6P^nWcbz>}K># zE{r#Phcl##@d&;zkGS<1rpYg{%&ou~wg4W4ZP<@eLiHB^-|tQt&mMVRm|#4RVh^Dx1k4*-y#Qyj$7#j-I>Wy4dA zOP(A|GF@N;(0aqvUw_7o@zqAoI-|jUFf74Rr3`!80?qv7wDqJE(1sz80{+Ws>pCgp zL6kv*h?nb>kyFP^L`b&CscE>tU&`CKko*~pX-P2&<t3cj^sZ#f_%#T!~D!vI@6%q5!UKHW4BpO*;D{fhO5SMi=X*25KbMlC`r`OT8t zuH7ErU-@76f04Qj0W@m;nBPk1ie3sF`^MB`G8o~!Wr4KNGlGV+5`$WpbwDWZ^1szb zgJLaU?hq`T&c&kn57hL&^^J)|GoBwo5{OJ0AxFNvqCSBph6QhlT!Ba`c%o41tz$BT zHGyI?!k6}MwN^d|Nu64ULl&Zkk`i+y6>W}dbg>L%*nEI>Fej#F4lQtgxU$L-n|R}t zGd8(w8HVpq@|mHslzAS7AnVl7ezOoz!rM<)a@a~pvT|-H?|5)%KWRy32hLHaEbj)0 zjT0GT5YMlC06mxqx@lf4@a3s_^Ip=3&NE=!-BI+!@1b{)(KQ! zY5VjGOrQ z&HH8JcU%LhO*#ksuFHMUec&50~Y_wk@;FZi|=n0A7XP+yr7fC1I;L#U7KvJ z%l#Q_<3=g?UsDM;DG7ZlJLOPht`zypInmKlF#K-H50nnHcYY108%Zvt zMvn9qY2Y2Ww*OUxk_7jtTJmiy#-UF|h|_^#I{fC$Tzdk*x?EArS(O8ZWUt@-5BR~^ zY2ERI$f=i|2J)}$81B5~5rBYGgNF-S;Q0l@7W~eMyo+R6m-U zv%`@CJ7MOI_M0C?PsDnC z4~E-7DRrV%>aDs|;IGSYv+eCgKVt;1d5(a#pWPpG^CUwC(&V*zK<&h&-1aW!)5Ln} z|6qI^pVIyK@G^e6jE{xr&L0^cW08>K!)=d`gW}^OgX6>XBc%T~=u`>Puf@~;r2l)o z{c+M?g2-hSW##@)NdHJ7{UduM{UbH$PiCBVkp9Pz)*B}tDZtsJ&mT>pkJQ}(%)aS{Nu9;(eh;^ zu|!MC z!Y~EUNXn zR+|@*ajYj|)x1^Sn~Ovl7L&20Z1QALRpt_(q=;pffn2PIHT*Q@?5xU;@0?XUd!n)f zfr9$V%@5^$f&3Ab9le657-pX}W!TgTRXqqJ*QWiJPU31Vb%_6ppp$g_CwTy-nWU2yZST7}P* z`{1F`AE414HUbrsonzj*gJ`;EStS2=1H%Uuo3!oT&jRP=1KKT!36@AuR-%ZnVt#7ls`8E{aPN;8lG703|JhegYe0*!798G%p*EVzXq!Dp4D0J2kEOHngFW|Jtw__UZh%_ zXqnp|{+kRj?7@eVm$^&!H5YaEH-W#S-@MF~2+N6C&{z3gYQQE@&XMDg)Pn-Yj+=aP&`VNmEZK8JJFcF-dwz} z&PFlc9cM27bF2MA!dhvZv#jXB`h~_eON_!b@hK^j9V}LK5 zt9n&-^qrfH3LST|ucc3+j4@N?dQTJ^G?q#iMx93GbJA_#U$a5upb^0|Vkl6pd|ZiKLT_jNG`$7#KLojL0=W%4VGwMpQ0>4Wiz?1#XezXdW!Yr6 zPP^O$r|>W}w_)y2aJ{UuUc_!A6=qa#qw?8iuNq+FI6eGGKhYYsrxl+5uW zJr*C;$+#~;j$cT8Asf{;?pN3^l5qcviLV&pY7l>;`a$W0{Rptdu0yN=L|xAW_)sQ# z2?RJTPJm#Uiex zsAr)Q>~>zfs09Rr<;g{*c)8y!(3{aR+a{rC%mTE(VZJetFliAMKGu~T!<@G)VWP+) z8r6-;=ZkQ0&B83HUx;fL^g}t>z&#B3fXM61g;b1z+JdI5#XC@ww{9>|70Fz8T+*in zn2JOew)skemsmC)>2Wc4EzT}OX$ZjRN0@or=v7dYNBUqYuLJ}TBM)lk8@2v%nMW)* zp28Dk4_O;%-oy&W6jy~ zhc46_&;>mXXuGV%EbDU|c7w9486=iE`%#%e9<^tXkN>X^V#CIyjoLE%MG|U%@gV-w z*Ln~?qbYOcuQX*YC+Xbr4E8fcGK%FL*O)OOJUNbgqIQ6YtCN#ngQT3DYK0dxt5fdg zIzbDy!sDfe;DyL?PI8vdIX`olb1Y++ z|B-On^YMc`zB_JEJ~{c*Umn9S$LTQ$=LIX2fhA2CsW618S3!#OXkRT#zc0|b4r%Wby}T>2M_SJWETx^L zT)&oV<|(a>Ml#Q|U?_s1tgZwMfIagv>m`d*MW;~8dP){o3TmFx3uN`IwH2R@$Q@kG zWbrhWs&l5|7*nKH@+|?84IyD*-tHl!xURN8ry;Dx1AtjMnph&aG=2o|3Toi_o8(gx zxkDxaB&blYou@0Wk;)6`s*}KtjjQf!hDL+)=dGGo=$a=;&FEKt^PzGyR!AF-r4Na^ zJ&${iNDIu6R96beL65Cm$-HgP>Q>e>D~e##lZ$A!p1TLPltujADx$(FqNqy|c9Go| z;b0Ndts=6lBJA$5yUT4A*?kcuWJ_)ofdMga*`E;T#oXkLoDUZSi`YWrVUEYQ8#{j^ zpy~?iTM51~Q(^s5JlUOD{sKbji*Q&z<>$Mq`jgNZ1?-3tv5SqIC8I6xzJOH5Aj?`Tw!=?6J&D57# zFJ*k)V7;ugUJCo0pe8)Q{B!+J>`s`j-C zSmvq3#qR?Gq)Tcw*@sw>-_Z8eu;?0%L@q$@mWq_^`~-sfDz9_T0iUws7myx`iQWVO2J9oLmGw z8hS25CZ`&!hz=Pei8;#d)RZ4BLR6AMs|d<(L@8$jjnW+62}*gV{Pze-`F%f>ddB`T zlyXGnjMON76?RP-QLKe1&BYbtr$f*J){d*X^mutEUV`AXVxgRZcQP|G1rfE<>I<9N z>hKKaBH=$QBLC0Cd!xYJN*~HX+UCUV45UZ{gQdfeT*%({N_dOCr z4y)h(ga$W{wSytLx3CR2Z43%B+vqbj~O}ah~<9sPi`=lsxO(xa4mX`3|=} z3{U>BScafV<2TKuI7HP$%RujF(dRXtS|mK=-^c0}z0&zx3tRiF_3asaOBPhw59(g) z<6pXDWQDg_-)`>wt)2O1Sl=%1{EZ!>&al2s>ims^O&x1}8{PR^J--dXw;ttK>C^)F zzGyj?kG32;sH!_THVZtRQl;bGgqRv$P%Mrqee2XJyegt<4$+V)!p%1Gu5hp@pU*c1NBa?Scq zvUQ2N;Wid4PQU8(QLHbsUh+WGWVLq{i*Idut*%zy9gk|^#GN@g4)lY6+z)6sQGBQd zdWNZU%eyc0k$X?5e@Y(&I6MqL-uLu73E%B>yzl9E6@p9NfZt;Lc;D0S-lTNA@9Fm? zzP*KC8-Bd+>34Ny|CAf?i{Qumo__ZwrQ>~1zmKc>r*z=gw;KE0aP8?g9N+D9yzl8( zj&B#^cNKoT@9B5;qW&qD<2M^W-uLvYPD;o7o_>$wWQ4W&ZNrcEJ^fmf((%5hpZ4bN zy#E+mPQT%BZ@m*^XG|qIgSe=-sFU`j<5u=+b=h(nTJ1ox)Zl>7>N1dbN_pDK)D0)p z#~rv6{tx0qHZ|_V9l@--T}cCl+-!;-(g{9yXGCt`x&RBS@2eus(7 zr&mb)kw_t4+5S~~-|y^>KKhN&hFovWF!N3LqQB{nR7+xnivlkyQm-Qr#s03ykrNk^ z^Hg?>a^7+yngiFWQ4~f?x_Tr>GAfxce}i^RW|-t5IJ9hThR^(-!H{vX;t$a@9}eM( zOc`alC7%lu4cwBgz}=_giEhb$#D9*QKgvk^HxAoVN6TCK5+1}&H*h1w=3Pdw6rjBy z$9}jG0XqR>$} zLJJ+_RtaCP8?cl8eLHs3H0+`o`1r90rl{T{`=?Z%`d8e-Eolava+?b4InxUr6gK1J z!5#Rudh5uQF!7%`lu|{YSv~eJ269uOYKtds2hAYHPXMgXTI4)lCvI0Eo!IqBJTbxy zT#Fba*XDZbM(UFPrW0qWb9LgpXgsmUD!B+l6)-%YQ+m|VI%UbOc*;@~S>X>q7DAa` z_?HRHLv;F5wQmJsuBNH}Q#(sFMO&08jI^Dh zs%Cv@!Nps5B>p0AiPRWj3RR`^?!f)$@w}~gvMO!It+(z}{6)sIbVhzwQ*_1@NWbmz zj1D}ZQfj8SP!Wwc^GOXbQz)m-n}ho=;(2rNWL4^sj7R87|DZGSvw9r{SD=V0*Y0>m z3gD=XY920SxOnTv>%6CFfSE%5Mdz)+{g?5))Gn+_YbB$FqC%aKpVehL<8s`8703K<9S=~WL4TK8S{0mnqaroi_{L_r~+O@nlt+D;Y=YjBn|T{H*5cj8x;6V?=2& zz`zq~E7q41T;hE?S?6U6m9O)b;{N`4-ZDH{m4+lE!rYON4$~R=S@qHxYjOWTJmWGv zq0$xlvJw|>9gb08UW*=>LNz`pSgOPQU*mb}@nlunA{njmewnV6pH)O>Y{mWG;u#g5 zP-%z0qyTl^IyiH%(hrBoaAOK}w$AIo_Xp#7U4m$GmdGCUIX|4jOQ)Flhx7^$p{x45<{)d$j_=kXDq`#{ZsXjslXE| zrSgwUEiUm&U(k7(LOFEaWw@txSq`d+Ut+tbW6cMx?Ob2v_HF zGPk7iaCM$M-L78_{ALs;?o%;tXj#g*4pF^xP*_1^0>bhH>ec*1DB%u#^vnS%>Jc~P zi^#wY%(CWSYPDZlVLq($U!c~62#T4}|G~JscNwDI6qtyoizAxuwM4ZP|CY(3=?VF~1_BJ9F1$2KoW!q|w|SUwzw)Iu-0Sszn(5~X>O&0jN7lNk{p z7c`U+Dy*lv)jid+)my5v0K&g4sv-J<)n)UxfRp$5*)+RP5cm^XANg~53uv; zU*p)xg~wAz=jd)mEaKF7K+ZA`xM^#?@J~3kT4B#=|>zbRP zhGKOU!IxZcj7D4c86$6iS3G{s0>F#|9%I{$kvJ=G+>7iQqw96>gM@P6g=t;0Ef`fHx6; zg`n>41nSHz3@Cu=i#7X4Fv3Za7SYMwkwI29|Dj9ovryYYC|a2fim z!kuJ)D6PRDEyAF29$f}KKI8KHEmADZMF(SLyCClg1I0V5k8}X$iMM2MSQ+Mh928h{ zFKh=>X*a@!0AH>StmEXW;iUilgNY!8`6o)NuoyBX4R}hsioMEUFaZ?8cr}%+_>A&8 z{AOW0j|C~nn>8$WHjV`;$h&@65Jxf>;5$@)9xRf49>`Rbopd0`FgoPg`x(VXk$gBv zw7(n&LWp^o9^pbXiDsObG=5$VPr1L9?Ndv8e=j!UR~HQwkn6%V`k!yF@};#H4c}nb zG9rGrA?o!@#?@O+!7*0B40Y|{dt#yI9Vh|b>eoV53O!He0hclAO*Af5qCjJe_>!8p zQZ7l`j9})@B{4Rh`y+~TEk8=5o7i+GId8cQ1tq-MyTqm=BLMrJ)Spviz@@JJCzwCZ zV|1+{6d)Y>K$uf=l67BT;U{(9+pDQpZskz6==Mt&%R8$`{bp@CnGSlD(|^+zGdUkAgxRMvOE!gjcG(R9=!^S17-c#n{wd5HTLU1)P` z6TA54s;*t^oBkq3p>wexVcg6U|8vlRR(DrE&oP32a&r!@6sKZ54Z#x&IuQjqFL;>^ zZZXAa6XFn`n$i4$lM$(JxAVe*hvRCYWl=kd+wClFp5Z+1CFjB|cxo&Ri7!B54VTyg zHOjaNYt)4yy+mD@qNlNm2aq?zou*I;&kIj;2yMk(XuNd<6cXQwy)gLTMe#0I>5TBS z8h)nWS#P32%-sX|M+oEoeb zIc97<4SvNe&7WPYma;eqHJyQ80&@QepjkJ7c3D6lqk%>^SXwM8GL;J43`Ahw=OEgp z#xiw;uCWwBn;}~;b%hqI^o+oUbZ$VidLHg=~H4GL6b6ea*ZkUHObF76C(C%PL8;e5La&UWkwL-oHwIPSo6uihJzus@KXKauV` zbugr6Fz4}|zfhJu!uoVr=TCuI6osnkb3x%`yZRTL^Ed=f06MTafpo2>vtr@G z!DD2;?8JYsTi2QYemm6WzvSPVCx480coNC+)`8mQM=2rM=I3?h%*G6zWcX7{j}k2- z^OOvkc~+{iqk-i}<}pF8)PZ;d&>0|;kXSm&Z(odkOD#HzzTXf+I@Iz3G^-rage-q#3Xm|w`Am%hVBY*KerMrUIWC|jxRa>48ii<~3_G+$ zNVCPq{p;U{`uo`Rw=1_~2h`0kdN4`+0K=-KIu1E#e8QTgkE%6ih9z3?*5BW}*CE^i=y>0}5%%OH%I%}xhO2@AL-epRm=F&Czd=p zFwBh4ms&W1iz?p8S@ny>;ePB}esdm}z;QU{9q-F>>6R8kH9R1d;Y)tS5}s$|D*o#f zp8?8~Z*Qy7dHt|pbb~ikpIcay>PPe*JDwFwk$6^%C4PunvJPAq2nV(PMntl7Af%_I3n$M4`p1GEQyCnDnUGytC1kY)Jm~r1$RR6}5ZIy+1HZ)iuu+G+E-nFRXh*-6k`%H z!v6bCsB0$noM?K%;#hG!W>Vi-r((6TFNv{;P4-X~fl$jk#!TwV7Dh6k`vC+C$af8A z=!d>|1^NVhI%*OVVJ5u;iPq>06dO`*w|2tl%_nyBqB@q?87_8jvy`Ee8hEb3v$_W- z%43e!p@FP8C@*?ruh(*~;c^zl06}(aBW6jGi+hTQSTwk6dv3}5 zdHkQ2;D6SsUoch{GbGeI4%F?+g*xnEFkSQ}0{VMWf-?f+XE>Zyi&=_!8ijW^PZ7yk zZQzZ%0N_~12jrM(2)~JgJK)W6u0sW`#iSR;>7O`%9HB$)0|StgEzITFM5sEKRS(&W zq?H>Gw(}il^_7g0OLla(?7nj55FK4l{+YHx9eOCnpXTZMZ<`5#l3v8;XEh5ScsL~N z5b$xKnt-9h8TiP4cCbd|BRT8P+lT;*X*WFH2;-cAFm`l?=fNa4&y7A;Gcri{6?l(G zA+Q*Bl^PQO$W$h-JQ8==4I>SHI5zU-@(Hv%!6btGlU+0mrfo4|&BjQ`wUZ%B!bosy zImITN!ch4M;_F`EF7Lyc=!K|*A=RY;JT4MK%5?-g&oD1_@d&45XC(U9Fbm%3Fk)Ld zj}KnsW}`v8CvZBJyl?Svj|*JdirDa8S|ZviqEgF%8Utf$18(;nKKE$m-Q!?hiCs3C zxCAmMgKAhX!~~+$dkId``_pWh*kLnVfo}++oa#kH0Oz7*cmgXPdg@oPiRRJ;FKj@h zn6#H-?}5oX#=h(gb@Vozg^1)xqd0SJ@P=f~=eVBFZ zW>7B;Is%~ z?8T$2vtHo`9K?1I+(dba;wJy>;$HAf<>|#3s%N|EKtV7}LaA!=*++^91(TKH7|F^X zQfKvs;OCe<6gm`wpuoU3lE2BYM^!~N!!@MfXY7_7sKE*9z>u!)pz zSO;MqgO24vn9hZ#@hgV%eJL2q3~De6FL1QjQ9N7{p_4nJL&#P7shg3&kCX4Ty{{1b zPR{+A24;98gwKZeVa-CMyE7xFe8`&4hz!j`JoqV*Q%;t%9k=_<4eB>yQ$l3&w4D&p z{P`cvJ(34{O~h-S1``=@cwo%Nu`l}?TGP}yF!^!6ytyq3wc?boStupX1Eq{<(D1h* zEcD^1!P{-MRrueE-hwTj)eusWh65=hTSKFOFmI? z1eMjybd-`BgtUAGr}H3+BU%x>9&2H-%r(EG?38{W)HX#ohh*vmz3@EJ$iT0^8i=4! z^RE#en4E$b%))d}D)2z1Iix18=7A{QL?rq+z1qauR!U;khC0X=tKFzneeeU~fOmG%VY6JDe4IwIsOlYDW?+Jde{tFC)%*Fd9pOl;&hXbvlY=c=>v4jC#FU1Je9x)+p^nloHstR10p z@1>Vsw4u=KTWG%FH9c;B{sF;}1sI`~Fl)d%I|PZFCOB}P(m25-qK4#@H^=gP7f*1`hY3C3rPwb-hdRL(|nM>$QV9Ln8=% z)#mcSIAkE)E4l4xqt(DTI-Cn#Xt2*jRDo6VhHkh|(dU>Sa7Kf<1ImPS1>_1OEPo?!%CO)OIL6UCzR#?Kjqt&`voNEuv#{D@ zb+6Nvo{b*ISLfhf@wd{S=6W_yureeWD@M3qSF8|ol17l3C|%|kIZs^1#Gw#rXk>z< zhT|_%M4Lp1qS_o^3^JgcV)Od|9Y#WG(;%32CQxL<|)P~PZZ-@M|~VEU7(Q7_M^Kr!CP*{54+hFB#xdEB}b z_)F-rq22SI@@Zv5PAt<%D)|cD<7}!i@;Q#MK}iVn#$4dQk9eTa7pVTA+{44Ff2gInxg!9l1lSZj zlvy&Mt@$ED4>7`1!R`Vpj4+r~pc$7jnA-|l!>&5&cF}Yr9PGfF5v!av4(B?g`rssy zd=^Q-oR8y_;W(jJBw71^KwU2|Uf|&G*vB>kriEZ?(uUD0q1qPGut!}7uwk*Qrw*F~ z;Rf_Jox_EWG??U)2Q<6}z~JmL?Txk6GMT|-ha|>5=AJIepuf>}Mg(($=byX~mVM#f z5JEGt2Hk|mAWQ-Hpy5Clsw*dvtODpPZ~C5sjN0BooIyn(rGK3QWf?@WTwfZ7J=6Kv z(Q|MdJ1S#G^WE9$1(93W(*@yzq3CLO=RXQBPTVYuWqxuQ(h4orm$1>8?E~V`6#lXw zgvq>+~rd%>JeU_fUe18-oWQ9YrhTyVW`Jz%}SRUsgnM396tcmiHT-Ia$?0YwNX%>VnXesAVYk`eH~`Or+i zzPq}ry1Kf%+S*PFyN7asfOVRQmC37Gq)&t$?SY2tVBClB662r(5|;S!Z~{#D-(;f; z&n>+{)w|L$M|%8zE95;+pXlh5H%ttda5 z4{{iXNgGC1h20sfUti5R>uN20@^NT@fL!JeLeynfI)!e{*o1MYV}*Kh)qNH->H~QX z55?vNZ=9l?lL%+Qlk?I+=HBs2q> zh>GP_5DSC!*@BZ@*1lfejFuj?(gHni238WYqz}jBUEeSqz54+<^Ae%<{Tiz)*a*z| zxdrO?&CbW_%VARV8#G)c_g~+{x_f;}V4!ZCjq|i%e{5Y#Drf16uh~U?U2gUX#WzTf zBhapQ23g6mK=YU>TaYrK@A8&jkXVAp&-1nz<@<0nDm1#1EHe9!-@@Ld(p(rrmG^hC zt%H4K$VAwjxkFH6BQGd@;oY@7p%}01jebVvNAq?IN;%;4_y$T@V{DbVa2cLPuLJq_ z;q>_6HZ?s`5(I+RvHN&K&r1WpSU^EjQjLvqY4o-N&>6;Xi+R&DZ@zKs1kn||b%|^P z&o?N&gTCF@Sb5%VpC?=8nQG-Z9C@gJ+591NEpVMb>MnkMcjVF#Z>6I@o-0CJ8QgR@ z`s2BO*wWD-&ov_MUASd%^v83%5%&Y!&v5j|b0>U^dzf%%!qFekS-h9ORoZ@mvn# z&V?HeM}ItL@dV)qT!O@GN}2M3x#k>SV)29C0UpoC7FFINU;oc@gJb4HEZ=O>7{mpx zH1oE#6%%%2IzHVOx;_CknR+t$!afld-iN3#E$yo)U)U`%5EUfG6N%Aj9GVmT7QEVn z576goox*jPWAtNq)58!Hk_S zF8H}>G~{fv)s;R=X2?-8!-M0cev31ljJbJQwH3s2MP~3vWQIUSW=pDH|D7UZCT7@5 z=?r9s_aQS(t3l2f&al@mGw^hSN{(}mkQp9qwkonXLz5{9lprM}h|+DPBmY<747HRQl5T?S34o#H1n&A_b8k!~P8!ZI zH(=96q)zuPrG^BM!t=p_;8+(N-us0qNjxS@Ly~+nE@hswg8#$&C8_Sga(~VQ|g=tYEqHJaWy8p!P2$)oh zCR}T?aqk|*wH}G&+J15ST(_!RZ&|s9As1ztZl8B|WWb#RM}Isw)RvC^cYqd%VO`$cz0I@~F6^v83f5qB}%b#U~@a|a{8)D&6#s*feV zkXO|n^peKpRfXwoWSF9FqP!|*Su<^RB*rGgfLFCy)|k91vZ%?;K1FyH7d60Z@T#Rl z>=MjZeQdl6)TtP3yXDP;byB^>s<^zFW>`U%5aW(n-gFmE)qZg^&Gl^?MisNT=_`!N zCc_{m_H8d*16k5q`BFui92$Lov%-rq5sGx;wG_Jk@jH=~$9MZ1@lbQu4 z^^7nnUnOYKSE*POwkZAjTI1}IzlMeVphjUoYL%m2`^h_)RnFQ``&#|7>dIQrwcyKL#`kLO-M z+!Jtf;OLL%K1SS1xF$IIA!m$siVbvmu2X!vT4iY4ymC%?} z16QFjx%^g(!<}0dR6f}XvUrMJWzrN?nczy^=nZP6qf{p4bC5GHaZQH{qvD%YQne_W-WaK*jk@GX zfxU=6*%6Mibi0*YI10BvN`{!K5*z~#ryr~20*IX-Fi_dNsifk|jYKkHoEQ;J_EWA!AGVBqG+-6koP!##1l_$A{&+4QaUGJ2z;de5`=hAixTQC?@5a##ER;z zBt)gV#DWBKou#|1iNr(*aZ3y#ss%|zcWEw3O19Yvaf1-zCom#!E@@0ctThR-p)DbX znx)zp-DS%6Y$H{Q);h#Cxz|Ps5i-T-20I~EWFcof-DUCL?1UI9h*UyC>_NSykk=ii zW+Ep-gzuDENuxwK#UjF9viA7cP(=8}rZ5fRL+4=X5JmPL_PLrLn@QqRmvda($ld`Q ztw2GGjF)p2H7>HKakG&*R;clg!KUQhiHiq_;%Qc%JKN{kIY#mfw(_j|QO%D}Z0YWJ z3+_EQ`s2BeZRzNb=gu&?J1&I7#UBU#@!aLMbo9q_<%qi*ZVDXz@!WjGJrDO19R2a! zCx~l;`x1`+cG5f~<4|;6r)rKC^e~d?uS|sNGn;v~KH;9Vhfb>`-)yB}{Y%A!H z>9Gzu50V~@NF@iPN7qj#e~3$ux&Kx4c<%=6_UX;uSbAKz;Xw4b6uad@kH>i1(c|o^ zgtopOXwu^ZiqoLSDl5+xPrE!fs64M)c`iU6u7mrwba(jRE`_5%p1Z-8j{bOVDdL*o zHp0;#&wXc0M}Ium>j%h|a85Y-k7y zXU>oFu8Yv4wH`i{DbiigGnOQ$)odqvDP4Zd6gjOq67wfW($eLtDe~X_BU2=_b|1SU zy8O5^<%20Z*shpmaF!KxsFXRa06AkccD99Z@g4S=^1;$bC2d63e{w!kdi>~Yxn!P| zJW8Ef>}>hs*NQs7`benLhui6pTxF^}=3_;gvN_)2RCxl9R0wI74sJ(g`z{yK9Cn^b znj4_>B5D4J6Cjc&&_2&fmFI9P&vVGL=3Q`@jd1^kqd%V8ZA(XgJa_rF?v9(_Ccx1j z&z0KJ(I3yfhPdb9{sl*WJhusP>)<|yqd%TY1Y++)e0TiPAJ6^ae!EGJX=5YwcK?JgSmD_jZ+;vfiTM-6XzjHtVmvu3LW~ETAFHL>nEA2B3OZCOtY}8ggPb2zel;gO zOJ{EFvp*N5!a-4)HOopKr9!_&g>KNoW+VM8MTHtns^vNtHRIka&Lt@_oVor$Gvq(y zL`_B;zq$;1xJ587erhc+{1A6$8(1= zKUQ58p~pWpKW2A}CCO=D?2b1-Cbe2Ie}W`q=f_9Rh>#@a$2Yqk#Qb=M)E+ZGj*QOaDh#!4Qg%n`Aa`M_t2GG9AIQRX=N47q2` zfo8}sHmqf~8+%?m()=8oG?)-G&NfN&t<8!wS6g{bZ=Ywb%Cr3}GtX4y!F`vnz+qb9 zl6Q4?&>zqBM!c1d{&;Q@;(~CGz|kMi&9SAUKb~8MxaDvw;pmU&_8{&jxSeqH$8#qE z?T>@&3rBxEXVE5q&H3^G`qu9*wRV@aj-}D^qTfh~9qC(VM`9v0`e*g6KV@1p zdSHEPom3m6Z#Ar-j)?OQ^{uYoNt|)?t>f*)IXxRm{fVeorp>6D=T;CVx0%n6Oqojy zt)x-HyxStoBS28wj2}N$gn4cTj^uXgS7+&4Z(Mmmee2Cv2~jo}EBh&;wCP)i1%xPP z^c4czW~6_ii1Iuu&tvWL9IoLp7bAxT^=#S@aLELq4y=zt^CPI*ZR_{9IWQ!oJ!>w^wlc55s zHb#yuwSqb#$UoG(&O^?)a_j^#8u&T5zEZk1=5 zm1h+4tf@X?AI>qtoexKUJQuK~qd%T|9&wA{>fq>)=hoTM(I3zKj<}!UcEiyh&z-uz zyW?266XEEO=Pp6qNVqHE=#S?PZhl;Gu|<)bAI%k-)7(+$9erdOPZeN$;haF|z#xB*RQ}itnzz1rKlruX=Nv zqnCLevw;+1{B(klTiXV;-Qt+OMyiRK`*vDE9g!MpRtLoOJSVm|dP|#e)M^EeT9qH0 zm>N6x$x*A{_xNw>ZKj_nLDb&Jh4aC*eHBo3~m?dBloW zMkXBZa12Ut&a8JXtZzAqxiA;*XH0=TrfdI|OkkS}uYB)-bK%&_gyy;!@AOsl)5Y5D zXfn?C3C)#d2+cJay*^Pice<4)*gj8ZmFHqBPcxKAYpNe{q&nuoy$(lzJXdQ=M}Iu$ zOh|Q{2-g>m{&;SnEgk*w++Ptl2JZjh=#S?fL0lzV2#)@Et`TwnhFcFue>`W+g_eAJ zApNQqu&B?R4^4azn*`XU0|GoV@%LB)tY}RpE@J+(6JSMpXEU@T0t`n95SwcEb+HrR zA|b%rfQlg7whd}afFVt)iJ9w)te}nv5H(u_h`sgEIIsXZF$u6@Hgd+yb#?+Qu@hjZ zE>ej(*U33YJPPrmS{ZV#8!S1}L4W*xKsa?-m28d zbob@E2b%7_y;w+Zw=pDBk=|~L^lFV->~&zeOF2PEuhw|{14VlCtvrXd&!ek6AE%pn zZbTle4Ub4lb({v*503tL&SOhQe>_)>xaZ(rfuld3TVhK`e>`U(?kl)&;pmU&jsVuC zz#Rrhe>^t=aeslk6psFQj`Lm2Ri&~YvI08xx#ezHX8$nmy`_6YS|_dk>rPtD%P*-v zZTHu-Nd3W&z;tI%7-_kO#@pm+b5B){b?;Ft+vl8w2?GYER~wyxBa*KE$4*+skIwQ7 zakdQy0+uZ8;fUH(2_;P#=3F=+eTZ{mae4y0_ojF9;_h3$(Fq@^IOt0|&#?TQvua`= z7+iqe78t>%l{=hRP1N+n+^ST*u9M)v%z|12!+s6x>*}{Ap^&oX#QNr>#6}hbQ!9s7 zP$CNQ>J9Zq=d$mdp`-_lfp2Eu?U{b~GnH(ZyX50Z`K z>xMKa9eVFZPjXWq^r_)yC1xP>Z{K{F~wpU3{cu7xQ&icHY@-lRb1v z8gqZKj_eG!LRR}5RTK+bMwWdOHk{bl=I z6HmmYyG2;R)$&-Sn1ox8Rl{6kI?5hab?>=zTSoZxU0T^XrDtw|J!`pv@7bsx);p6AWg%5YWPIdmNm7`FJ_nXmW2`^WXT zQ+()xzDB3Y2o{hW1Pvg;DjT3w*Z#V4T zo=(f`xHCR_oBaSUFy?>11v0psNkkTh8pDs!m?kT?${-AGAT!ho#sTMip}#2x zcPjDD%6>FII?lcqio^IEZdR1TS#`tKfUiL~oZsSbCxIi)1&5m-!{KHbFQM!qD{{}B zfcG!j_s*`}{VnP5KSiwp++~GzY>W=SZI;tZkOD zuu;f)7Jz!+eAFsSgPQM~ALVSfuqegZX4yE~ zHgL9!UI8WVSgI)b5W&EE#KzPm-5d=*j+bL=cLW?P3?hgo&=^j<`Xgw}YiJ9NVK!($ zj%)S4!|yt) zld(+E^KhpHrmjbCv2!>e&H*{xe@|j@$FMkaLwnil^gk(Pb8rNc{3?dMeYBeF4ff0~ zi#=!bHBQBEMB+SsYaY4n&#=-P(9a#P*bU}676yOz^96^J(=7WHp^@p}L&i)z)l*(q z+*#AFmX|_*!=n%K)WcV$Q;_^zpdZq$Gj5f1B`5oH_7@}IVh=26ILrGI&Gm#leXUpz z`#9{{nuZ|1PQ@l4$QZqiikJ(BbEwd$%Uuz}X;ZYmt65-FY1kPvB{T)=m>ngUpYoHGLp_UnNHY^E>WtoRJ>$ zuBNZD<#;I;jbyP)hD4s#MA_pnFzwR%n#^Z3H^WA*3rS&X(IbnP6=cGAC7OaSZp|O* zS8LPxVqgT1C#YvT8tiBQ>OLSEe02iRpx2^qVzR#QrylZfOYI8Ze1O-)D)aWt!C=)4 zDeiqtl$2-=*~CD;WPbqJ$2o6L{_scDnprD&)dxBTd*`+tMCTHuxW91Pp1PbU8pY?U zVM?^qN^8DOqj?OP9#MusF(U&5vIYF10|?YB8GIXz}l`U z?5;dc?C5mSlo_4$*O)bFAYaZvNa$hO?g)+=_`4Rm7?#fb#}l`bZyw52u(;GPyohx+ z4Cfu-%xc?UESq!uREh1$^ z?5Bm@k00B^QC?R9p5Hy}UWyM48mymplGf{io?@(~i!xSIErvy4Ax_qB!U1?ICSsP# zH_()8$}{TFcv-PSu7PnVSTdf65dQJIh}KL99z8J7RzV7%uO|pc0lZbY8I#K)V$_pB z73{P`ApXpZQj`*QPevL@c6?}Jdd4df)Pth}`D))=Zd6mAF$bZV-s4>ahusB|9(L4V zU@9~~*+|UsrcHF>AuE@rAKRIiM()9R^v_H0%7Cezu=`U$Bal;+2K%9~DrO}qAb*sS zk$$9~rmv^Vci24!Rj9Sz&C+NyUGT{aCHSp2y1c^ifJR_-I3L(zB{*&*TO8@f;G?A< z)5YX7jRnEjkr)ZXA`f=Lu=G%N!osdJor~m_XtN+Ky(W{2K>< z4So~A8i$C5oI(n3GjlV>Q<9L`LY7KYuG$C(L(rs_2`F~h@~;n@L<8+fW|3L7EH z-Z712vm#mvE9B@@Q~nS88|mPpF`0HOTpr!A^(NlRp^X8rE_LoOQ!`1K;r_U z@f>0V?JW_9M`aX--HXy}2&~vj072+@@_;uK0+&j=d#pup*gZ?q9|{7yF#>TASW31b zFu!5H2vsNq)=UJJbUT|QW))1x(J;F-7hohVqlb?gTbfVW}tV*72pdA-K?MsuzEVo^#L!v41m9q33pf+XN>;&oh_B zq9^VB5>PaX2u7IGsbn+^?w0L=r6Pz0+rGt~fIdA~eJqv!D{&VP#t!@gJt=sw0!1_9 zG6cC0q?k)Jrp94MgrW)w!tp zc(`-m=#S?tjUM_l4`pIQA=ch=2D$=`{nVw$u`3s42^=A6jQWWhGkh=jO)@kv=w7KJ%|D!^jo~df1Qh9(d)Qg zc}Bs?WBib=0&Vu5SE{Q*@0pM)H2w*(nRgRzL*LrEGZ3~FaJ$SFXTgfU?cntgdWNCj z`L%*q^YIfl}tv z7L-=>X$Pg}u0f`d`^l~fp9+n8Ylu&eqCa+bC%(^xI|}Y9Tbu=>c<}kSS;5DVZo)expyS!|rC`doO7BFxGLp_E-i~g+hAZmsinqjbK?;_1D<$3i5RIU881A7dK~{llxoLj=mULXr z&BWE*YnK_#*^w?57|*3fx;STm>f&VMtm90$pTkK^sJy%CVv^a#bmKn|jH6xjTz0wG zX2vGd9WD)0wERt>7C_(O@4EsIGdZV;86&`;P}6UM(QRb`yB`I>vQm#TWvLrx8cj>x(?XL^)ylRsYr)~IEj>A>b~83IQg4O8ir3Qa$BPuhuI=eK%>Lq10jbxf25JCbZ6QVRmnEhTUt9z>1Kg7h-O_ zT+SXE!m?F-@Q8xX|yXH}Ku^ppV44cJ1WhENG%X9JRp0fIM zW5XR(Uf_8Q5tV!{JdPMl^i)lBZ9Rcnh)_O|cAfD$QfWCQj*?@TRxDfw`!@^~yTmJC z#D42;WM>p5bWJCy*~{WQO~>mQIDAP(2zr6Hcvip|bU9K{aDbW?TTz=~C0WbqU2>!d z%TthkJ*P6fd&(j<(RwoY;+_^58y#-9|19bd%lOZi`k#0(vab%CFo^rBrHMq zVE1x@6H~VO+22SXww{kq*)q8(-B@0vK+;=4a=!}#!IYzXGziV!uu;y6O;SAYsY%Nj z?kef8>1=nswD|iL2!T#9_Z(vnno<&tcAM|Hs)Ce^cZEQCq^h{$UMc*(6gCzFiownF zWZ!udY9X6p5PN!@q{hQw`V<$F&{*^~toCX22V-y{vlOrOWS1OOk`CID8n)ifu9W~` z`eO8`!2w_rS_bint#pn$Hk@0|BCx;$*yV135ls0`Oldg=fHOzD#VMi8iWuQ9e9sBE zJ)X9^i-5Wwg}Q67%C6JLm;;N2pu~O>&r7a#yxYoIV!@%ZtbSaTIJoGviH!q zk*&r9PmvXYc z0a-z;HIB8XI+dj%>s%((8zt)~E^*fyJCmW<#hN-DM$S+jNLFmpG#RUR@cCPW$jGN)bsNC~>4~IY4#UGlX0mY1@xk!tT+59*aAMnqif8^t+sQ)g1a8V;Z z@x%995h+jXJv!_rzqMw7pk>wlrT!$QZPcZC03e{4OAkl&;T#5!M`i#+CLLCUiPtMIG zk;AI+CF*6xPACI9$J@F|)00ciWHcW1#cM>N%hHU;hy=*?B^U+6RTHyWmptPTOMh1= z{=<5fONIpFKkS$q3Zt<*FO0 zbP)v+8N=@X>)gXpR;$79D2C~7y*mXJ6NiThkQAOTfjEh9p@$1pjY2s8_jl5}5RukU z$sqp8D-*`yU|h&U$_u;qB%@Z$QD8v|09)t&l4SAU==kVC5+EhA^H-D+V-t)SIjlmr z!h4t9l_G8345+VBHO+elH8qqm3IC9q)MGrXg6Wsw2xHdD7E7S@WTo&w1^>|FY_H6Y z(7BC7t06FUr9$d#_#x@w!7bv8zKC?L>9tt`$9~d1_AO^OXPzvo4I<-g@>hBPBVr)> zuO~&cXXLTwVJtAYsiZRM0bf9{e@XPY#fZFu_Yv_1#KFF|D8)d?0;OgfC*%PqWr{Pk zI_9Hz!~iNeNle@!bS_HX`wyJig4(y5p9_bQ`=U6G=QWT)x3-R>ZMRESui;__NYGd#f_zk^H^rQ?_=v>$ZqRhFBdSs+Z@>vTe zC{OvWl3s{xITGjGVEaltbP5#YYS{j;>-GeUb%vj;0{WLBU(d9?SxGg;p?QCTbh+GP!$S>9s) zA9fE)#CYNl>p@Z%8-7Q+z2Td6|t3`T}AHIQ<@dSRgvbz;H4#z8r zF7A0St+5v}i%I3er|^(#HdEu5B8k`=Eze+-^ zdX7_yKQKwHOd@HAA16MVZ2`BDwxHW!C@cryoSDJy$51^xbPz=QSE=DC)KHD$Tr5s) zW~ISvY{j~^npGP>Bz9~8e$Cw`R$$Eb@|o`S&V|z@uX7La!5 z>$T9}3)lV<*2^n%uSvxdWewqG1f78(rZ`)lKI2viZ&GS(ymZ0VunO#jL$9sjp&*82 zGbELm#R|9%Q#Kt-mr5IP?sF}|tWIGAjQe|p18@^JQ4CQhjIh?n5OdP;G_Wg5dpIGG zm-Bm`bNF(IeT%0-&VS_vEK}-=FPeNwKyR_m9jplGONA7?rT1aoJ;Wc%OUGeTTR}Ma zg2N=8%#v#0r&rFj;L0!nde%}a0M9r9t^!t; z)pEQFP=IEM3eYT*fF>TWe$pcGz}Sy-1<*)Td@6x%eJUB6!ZM>16mC>ajhGP*m(}er zYwhl=d=2T)p#NC)3ms!OkT!*jv=BDCBH5qYzB3#h(#K+kG)se8NHb504CixD5&41R z$;b1e^^T)95?x9O)Js${c9?%K^Z$M%^Hce_pA+PGHrf+u^iSJ% zlF}%T6dGS^3OI{FjzFdT@%f#e#jN29Rl}3^Y-J+Wx(BfaI;#Hl8 zC~o`puKpaHq2X2#-p|UpGL74q;Pj3DocfY&Td4$!o_~iP2bzSMlTSLa{6A0rygGoT z&XPAc0B`~4d^{KF?TJ9sdwA4)gz5F`e=lOKC$0DE4^Z?EKpe!e_dsHumiS>H)C=Jb z|G*I`B{)N0U(z)%n35M9k<#K0;JGmIb!RxV$O(R|sq~)y@I(11Ml{bsm--o!B2S$f zui@aGUw@a&NG-HzHo*u*+^y3&`Pa@fKX2n_1&(EJM>oJ76ze6EHSUMVSk0%zIfs+_ zn(=EDSXSGLFPsm+N}-PNpdQJkJ-gSM!4x&Ano$ft!Qn}Z0Ps5F8(rkZTCP4cy$|=) zSpqqlL6XbaTs$1>v2-FJ1B`uFGvP>=Jet-=(}yZ;dK@#lqJnPhpgYZ&}97xO=AuBv?6rtS0|FBqFgBxQ5ILq62Ia~+3;I) zK^v~rYYb-raC?g@4YC4kT#04HawV1+%l@NWf&zS$@yBopZ_IhJ4(WT$eZc)=kNDI4 z;W+01;&2;(SgQDV42xLZVzLO6g}$AuxWuEp4iR#1yw}D;Ya!}@OH4l1#w9*4v$({o z_M|hBln7QQAZRphFslKVxYDfQ996?4d$uu>&3z|3ey=)>)~p_?`uiNE_K@4S$JXDbWOl;+MM$-#4xiGRJ5}1H_O#Eb zv7BUvAGaSS3ND zemNPV`<3VfHu^&kdB{=#@7X{{W6Q$vULT@=R@g>Jo)x-K28E+TZ34kJ=17z#xsZ%rDJ0`KZfSFmOx z<5Aho1_|@aJQhevIDmFAm%psl<(#(fH`EZWqwp%Z*8aXTywyP9AI#ia4g1W^_qHvX z4CvW@{aT#y42uvp7<=M>Fki2|3lN`mp>2Ozh`E-vvtCHJM@Ne0>RCK~(egN%o}Okkn3zpKXcYeiQ5%VmW;k z#$vmaWJ&`Ypw2|tY=!|J8}SLeFYbr1Mti#XDqWG8ZVo?@-lzzNy}<{l{xq=xQ>P1K zh(RJUOoo@grThi%jAvBOa{2WSd?1CN=!~msESEX{5E_^d$;WV; z4J^b5+OlgB+d?5Rl?}l@z+@9zrD(E0^mkEFBf(_jm}mD$*F@`t^?#uqR-!dJcvy{R zQyxrFu$ruzGDDg&J)?$WbAKgODQ{*p;sc|&9zSNgHo}W`)rq7uU1E&VIjU*Rh~vny z2z%=c^ZOu2vXrg+p^Iu=wX_bR5P$91VSXQEncO@zW}9WowmjNNw6K?%erRPcS<2UcZgt2^yV%sK)Ut9rE5RoI>L<)}gGb7JJ zq-4WmZY{)QLB3vQtgB5{8S>rbs@z|`vR6vf{L+ls6cb|#hjolpl+$%5CCYxe?ll;^8ozw z^C$jy{Bu2Q97#JOI6yZ1 zK1f6m{#js_`M>0!NoJYU60s28($XwxyX!sBPNpk^C>gt@t7Esf0i;*@z0gyY~Y`Fv`LrF@hmV48Pz6I zm}?Fq<1yEXScrDOT(4neT-3)f*B2oN3v)epTa>vb;5Z35<*>ggx~D*CoJo;S-?%uP zjJlP)J@^3k8xLu&s1_w#-8Z#@uG>Xzp$nPi5SsDePCH(T^dP?EmX;dvU_zp^c;_eZBGBH;khg`TGy_ zxqXspwXts(i)l2@{Wu)Pk%tFJc8K14zk=0QX7n!H%mE}FfC6Ik&CGR(1tevuW$tJ| zYR{HLYCXoHy8&co5{@Ya`vNlwzX{bV04r*jGw~hBc}2$FS#bsKtWk;WVW|GR6kH7@ zjnBcCa5JH&y}{DRZ~>RkLI*0Pf6L*4oadz)K4-gBl+M@|_J^KMK`M?F@0)X!S*5XM zlMQrB_U~EH}mt5p`hLgw4Iix3l_2PF^H@_wDOom$}>f= zb!VbTm@)pl!dr5+V;&(!Lk04HLjHVL^tLunLC9^%zRqcX0RXhf^TNCwl*R2zbz8D8 z*atXXgQ+tzP_1#eVpuaXTJc3Kgaah)$5{7$kBG!HIDwil0juI6I30s2jE#ks0yijC zG`11nx*OYwNj+EO_T;)wX-Qj-maCLNNY?o%Qixn=oIsTkUnf*67i+h$krl-vUO-<> zk+Oy{XbKmC#xf`tfX34^glP4d87YjlE_!yE0KKfY3!ABk8g>9k`s%```H{HETf>K- zK=PxhbOKW6K?A#DXcuWaGqjv2ZD%U9{cNOKqH>t67=zPGW*;=vZ}mYKK$||G;dN4s z+CyST#v_Zdm&^P}LzV+Pk*FD4!CDlAGHs=2v!`uK2lFG0n2!0YQI+wGDw;dy=;Ktg zXo(uYqG@%+TJXP_F;9wpQ+7$sT4&p8RnajFffX`|CFgs?8!#lceO7BHmx*kAA>O6w z@OPk8#`1iF9)G0PF$BM;f}`s=+$@Qgd((y-sSFg&L%x zWDhY7H4d(rqotU9v!Sibgod&-v!N^p4IPy+S&CQpnZf!F0+#Rohd|hQ7lFVtx;U#b zSxSZ8M*6;yMH9MK-|M6<+(g;ya5)?k;$h~EQt%Tf7=5>QaS^p@ONs*~`N%0J9+M=3 z#(sqOgHQ923yv55NYf`MgviEyInG;<(kW7S5Th7YHuwhoaDq(E<+t3+jZDJm zKPQ#b`Mj+N5Y^ZQ#zF+=t}KSilQ9x?G6YG9rek)y+Te0IhHZ0Bs5qTUf>2Ok$O!$GNeIkWwe6d20Z6bjdxcSWV;u zuv(~QT2{m^H}W^+_AnmvBblJ#WDEZXn$zv5+xYj-3KRq~DtcQU`!rXZFCHruxnDB_ zIU5-dGZ5XMhYu4z3*bZE-d%w#Xe48de>|uZDF36C`Wy~hXS1!QYN@wf8MpVCj+Aj; z{bRPMlwg}(@ITeYiGrzkhk~A|VEV*tQ5_*L9xWoE$h=KJHPa{d1n4uyVS!^NXpcx& z-hN1kL`xzVgR9vB@VORhSLJ8{!+}VK#4EcA5u^l?5()S%$a&y>6VYYezg_jZS#YMk zwumaFLnu@BO-?tw7lKJj*OoGs{eGQ>InNL5>k65#zI;WXspwbbQhw%MQ_*L)aDOTm?2OIvu7b zm279e4?m?y8R~I#1GQESk=+Eg$w;^jk_006t%!|e1C9UOsv?`)L<*Z}Fe8_>iR3UF zFPV`qA~I$lVh+olZpK!%$yx`@HEuT}Z)p=bo_)F0jJ&8#r0}tG&B$}wL{h9Y(#*(S zF_B!z?!Tp*W9xBWVk^7t5trGY0CL!6#Nv*}UgiDQ@#_3C560sBGUTV|`>$iX*Ic`7 z2?P(stTW!uaPXdid-ZRSd}Me|`%ngg(<;wUaeyWhSkLl^M#%mBDqIA!!tSIPZp@m7 z9EjRrYNS$_{NJ-=llYh>m0ZF!Bxhx3nF&2i7*q*=UZ)aDSRW=dE=0MoCHrx|RL6he zcEQmf&!zN_rlUWe8$2M@aS`0LaP-G>ci7U=AI}x|QyoRwsgB#VRELgV`su0$r8;`T zS>KFXhjKo`?|7>oPE!j{bP=krAnmNpMwg^v83Lj!boog{y$0Kc2H6xvqLx z)-8Iyd0)=Ca4G}LFZ2E!Pn2izqQ=yE4I>(MKm8HKUv*hy8vJVldSw=gU7wYSALnT} zgYUdzmp^BH@twG{LU{$}a%nE13rt#`zOn_6x!2Q5!UqNnB`~P*7iR&EXpQahDDIJs zi=N-p^bsgYEG6P96U&Kc`D)uo@y8wRnr4CQ?KjtD#+`Y;NQ3Gn0c%B{S- z@|pkz=R9x~;$1>U%h?CZD==?#!v+vrSwkiQN?;7?0f`JgAn8L7DJW|wiIoO z_h%nO+x#y4>Z(d^h6dwRJ>0l;k7K-ni~`8Z8gx=P*so4j2Y5N~ecb9LGf6kTfPPsn zk}`?rbRpW=6WIb-Z{jejT+zb~9_d%kqHKVmIGrm#jpzF|ujLXi7YT#IFf4*XxYA0I zAMu|W+s=i?ko9QB0L~uL?tW;irsDz(`QX~?ATmIW zpTBIft5Zo1RE+TPrU4F?E)IvWN*$O|l7ZX2&k!k}z+-MJe6td~dIfJFk_y9(-k^NY z{?)+CQi`t%z{pDUx-Q&WHI^b6r(?IXr|7qIaefn)eEP|0H@Ve8)Ynl?#jcXEVfR|ZV387b_d?IL zslS!}eYOKtdk zqo@+fd&W5bENHIl@Kv_Ile1zGJYn}ZtD0BoIn-+W`disj+jcE+H|wkkR;fR2H>^J% z+gq#u4FRdUpFn3bd(nKJ=2l|>%q?m+$Oxc8_NDcRvl%rb*KS}S4TY-^fx{}&Kq8iKHvDb z))zNEX{9-kxI^o^9SV5tAFN>KaD_4z=bqO&r~iVz1%FTgn-_YA)Bp_GHO}p5>5`{{ z!|wTOP3+i3PjuK+hvQ*KqdyoTcKG$D)WPVtC*y<#ndoKLawYRbmH9b}pB0}w%TK^y z$$Ho~w||{w8oJ6imz*sJMqt3%@-{eKzPT_gOM9zZu$sG3)00jv05vYoLT*hTuwF~t zv7$44zTQFK?m!U6v&{ySy}gk~Jc@g2x=tTYpTnGYINzlz?Hvfc!6uSqR`~iPPz;+l zR#atgmr8mV-`ZS!Yv~1!5*Vx-S;$M6S42y}F=;V*P<&$K!1NJvU>e3QYzL%j zE2ATNG5l*vYdI@AN{-S@*>PYcXU5{LxavSQt{kW0@2J*hD_^jG%~J*m^c zT>B$T66|5M~_=U-@ z;-jkKR(!0exDEfKQSKX2xVl`niUeGemOHR0eIia&d&J6YBd(7LVH-m6=jP_zkv`#U zyxmZII&R8mY9ZAc(8bYh=_15-8ec-<^25}kK0eE@&!BOEKq&MWVxpIy<@!?O{*t=? z%;zcUzfW{7e6Oy#Q*J29iAI zUZ1|gyzhYWM6B@cZjKZfN_BNwnR|M@x3n(HSCx>fzlY*JMRCk3+rN3$#z)-W4CuZ& zK<{~2J^1_9X`yom7eXsl*6N;6;tzRXNe9uPG1ah-OC>Wrq2w&4$XPb&$PuBWL@j4K zEC%I#H3^0&f7ANzZ-I;jYo;UJviJ3oG4^jD8O*9QG``vxfiKK&If1@gU`E@mC2q*m zmm32l)K}d<+;U_fcmsBjAw8!1sSiXm1GvE>c#)ftZwbtWvU|t?mj+`i+`0))w%`7w zI9tfQj`5KV+f>}54tY~4#usX#Yt+qZ^oc(1(?YF}wz={j=lqsF zvPsJ%P^ol7k|ioRjd;BMowu7u@h#mg6{a`Wn>Sl?S1yD{TJ=ty4in6d?2x5Bpo^v&fD zH{GlaGprO3xa0OqBMUsuEU-is2ptaAXIUr`Lt-zn=pagbR!ZD}xt&cs$!uaN3M@i_ zkJWJGS*F@}4GAV3xSb=V)Tt;Ha3eVdmuHZ71xn;%I%^5WlGrRa z%Ps7)%td4!M5jwu5QZ;bEu;DvX-&ZP7dhl4Q_DdVk|l+VLm`?Ts$&_DQo4^)QVM6~ z_)E0Rw8SL@XVPKD; zycFYHs-zoynOh@?$zv#cdb~B}4##4ZILk;;iSxgYBrZUyP*U7ie*C@6_ST zTO%Sx$Xy|A3&{r9O)76A;%UB0`d+afUuLDvk}(7Sqta_sMn)T1D&uzee~M&mWxC)y z+}6O43qRhPlU3gJDlbzQJFy#I-B7^|k8P2>RNb4Ea?#|i8LTqas*Ix9e_LhrAbxu! zqwGfn-zh*KDlL?}W=~I2d6~kPqVkT1e@7&55x&eyOC{rps?xnaj!1~n#xRw!8vdUn z8E4}QwarsM3-IHu8L0BUrYdC$qnpZG1OG3Pymk08D_t)cO%T1MGBVou0Gn1iqa z&yoRh)~=|+7iycWe&*oETXUGo+n^fE6voRc?>zYb8OgfPR19is!~7I_=)hh&I&$EVO*;6&W8WxNZvX4GAmsm8C|N)?MSlCcqAsC1+HX~vJY#>{(@%F7hSmsHC(R2cBT7RkFEUuLBaaQTR^s;P{OHl9}* zU5MwiHVTE(I41<($y7gCl9&5ffYPlhFH;!fRo-m)7ew-U@MTt-FBwhnj#L>LZJaGi z2dQS*TK>Q;36=c=sO+Ja_FxgZc4I_apM@j9 zt)i<}b`ha**FyhNP$O_5=$&w8bkYM9Oy)QK?BU3Ph z=XFDmE11A$I%Quud^G~aV-#kI$_JXRQ~nLK3Ynvo`gIbh2+fxsTN}p9?!GrHd)(!7eD*^Ohc@;xv57{=ipMrIfsj zHQD23%?Vn6Jh}3oh9j1yT?d>Vd+2vymGsNktOZM&xg|1r1cumWz!GLHVFwM}%On7O z7I~l+UZtHht43g2Ne-&%z19OIw;PYWDIK1nQmxcZnh}#KwbA%xDL0(vv(SW+u7Thp zCV-A5T&YsxLM&uqh=}>=fZXU5k?;D6e3ysth*;e5+fUD;Fk|{9A|9?YmifCm!po%p z@3iax^{b(=c1}-%W~Z!{cZAW$oygAQ!;sv0#fLP9zFx0nBuJWHjXz^+u%L?4?v*{V z@C&dpTvipDz5R|-zq{?>Yl8xlr`m* z8b7`jIbr521)rnZu*y7Hh8jXXMuK$(v(Tt=$Df$R!Ji&SuNARm-!DCsl!2 zu`U0*pz$BJ9B^gJ)6A9+uv(7SFp4ugum|}zM&|mBs8ciR%vW{h8=0z3Etx&dXZiwm z0c#j`feMMXeW)>(uaQ19qKk7>I^X(s$*PT~kPL)MOlvd>zoN2I-6x4sz@*_O1t{NE4S`y! zPnZnObCE4|M!%@4C7;0}C=;q$=;yx0mgX3Bl7l>S2au76E4JoQU;y4^O_CEBkH6|t z->a@PnX+PK5&n!d5j0d5f4%C%2!G8|{Iw<=rltnW6{g*M)aGD=Hq&_aYjXZ)G*nAO zNEbcq^KV4exK;22W-}Dmt*qvZno~I&KQN(76M5VWMS5{?>@tP&6SR$8`z-#@5IC3j`LOe&jPj6V(lJAL z-z8+R#J8PiD4XKyge_hSXz?9d*_1RF?B?;I-QMGJ2lgu-Yn>S=Yv9p<;^Scd2}+3# zMz2>%E5p-iN8LI%@U5mlBrPc0nrR%dh>(^RAwx_9^*z)wA=oTb)e^ z-6i#$9JN2D>U;i`1Jw5%SgKW@{(u@x!hpuk0j-p9V^D>L9wL4O^n^f;HwCt(dEDE8 zune3v&p8yn&Vj&1x#gM4NT3~mF&F`TmA8h>ROLOb*(P8KJ`lfMmJkDx!8)e0dqH&M zK8GLFBQ{c%Jzea(A}q400MNvWCK38^v3w8_Y;cd(La@NhO^K;LI7k?JaJV zlnW?ELN4$_rLn?SC+yYNC^JN(u^JSCK*i51nvqaVM#}{2!O|*rlrT4nJko-Z~TN)YDiy*Lbpqy@@Q3FtC1{)ZnyO!1S9I_`D)FnY68MD$7NQk3Fta7q+#}Y`cQ5E9Id$6Pw z&Jsqf&H!&Z?96O*z}U82Iy2AgOqS|QL^g4#vQ61UN+cHS8FC1n!5by+dvjH1s&V-i z?cpK=o$;_UnyM0P(HV=#|?(!vbx#Xtmj7i&vyf@yMND^+%_MrRofZ|n?Hpt%+nzi_s}=UL&)qCk@l zBF;3fd>LgxY>10D*;N12iNwn#`wl!FGEQRlXe zDm0EaqmGV^!k$@@8RKXZQ)hhdfh<@_b_xh!)(#1ag~0U5U?nh-2SZ?jsVmy=y$6ER zw{6$A52tgIwhlOAznI^VMIR9;O^(pv#gEuCU+1he8N2UPY>ZPP2#&7h+qS`y&EUw; z8~O0IttgRsiow@~M+A6AsE;>vQ9{^#-D|u+T8q!5D_`-z6IYw-{O%3SSe7!Ac<(ILDDdm?(W#wY;ilj#l6yAzA9JJZyI25ubs*!lxT z7e{nz1rW|f54GYu?Cy%*0iIMW+!yvWFN8Am=nE zg@^Eako;#wSJlpGJU-RI+Qs?6XNU;9e?=G8DCv9zhJAw!d-Kb38OvF*_#irVJ#=4I z$J&f~jo0efyW+#B_gD^JP{XMAVA!~zhEXq)QSY!<1KIrcy*e&luacx!eLCvZ5UW=Q zGh89?N2^zDhO1koS1z+x9IjsQTf@ch0}WRp&GxnLST2LxU*>l{&=(QVW1tUMfUGu- z`!=x+dSfQo>{m}Hsr&VH!?FiBN_JyZHfB;ndg;p(gyDXU7aGv?gmkw&BkOh)Fo>* zy!V4c0z4L>AA?0lrqKz?`z57%+8&?SD-NW0gMkt=H;X6Ezr#)k3{Wwfb)oty{5ad@_c^@9ztR2fcWS3iD5+ z5xfA4eTaMzOojmrEXsn=GQ4Z>FQ7&2AIHaBx`fa^K4#Tq+;biVz3iSe3`di5<}&$q zE?ma4+AdKd^VcZvXzSG~yz&J|d(a?2`WrqZlk;g0)6XoTUazYT+3iBd%o>HLiBVH^*V?g zq=lEMY#5)_%-IDIDrdix39|f1Q~Z6u!a3uXW-FQ1#3+s^WyE_U+hQQB zj|&FcEr~ceq3De$J#(vL5LB@4cVBD+&NW-FhWYDg@pvx)H56*0}nez|S0R_l+7+1z3s=)ZR7LqX3>IFQ!3Yx-l4lD>q(VUOH2OYAyH&NK`Jbt9U zCl0Z`iGQv>8-3|}!tOJl73nJME~Y1X0vX4lkLP)2aKA?DZ2CS#Q-))!7a&r+cir`#4Xi00Ujk>wkMtPW|Ur`>D#V2qR+W7 z({8KU&=%WlRd2-x5gvEy4;!NM#ox*1Pc;2tnOXjm)@q3`+u}<@#f@0{j)pDw6a6_~ zl%)9eFY@%?TZU?SYNJwgwsB0J}!b6^YAL2 zmp98mrUCui0Okn`23@p)K356u$M@KRL;qp-z<+Y`3lbanHUvn}RB<#9AYovQk5IjH za5#>@4Nqe<8twYU=^6v3SDyfBP~8$zSA8PSsq&T(uKD0ORlOt|n*=zPuhM! z+lBfH?zD7oWYQ0i^h0MR?iGz)z=9w@o;# z=xDUOnFkBon4%Dsstp`fpHc$#z`gY;{@?{1`-H7wNHK~@@N8*c)^8mW#zF{l)N127 zY>V1vP;&-uvzrF_1NysMJ^9D;+)x3ojGU{LL-r%|q`J~U362uX;3GWXBPDnj>CvZ% zJusH8_ar0J!i6sWS_?MJ2f`99c(QU5k@5U>M8;R1VR4}$ zkP@jWpq>8i4a^YG@x~&wq2YS%BOLF%2uu227aC_?M3wq*q`n_Yh+$cf1^`-&BgT9g z_Nh3`5N-;zT8l8XcP!iT&OW(Vt}M*&37hkpE1-|f3iMyA>0LptO@aQa5Oa9cdxYub zPu@wJ{Po|$qWsvjJiU7$XLU(ee=yM>9GcQn;>T#`;`DEB&Jb70*#RAfuGSZy5Ww3L z{$N*#AuuuT^6QrZ4Laoohol68et7c{iOksn3?2Y z+*L{J00lqkC7-xg;VF6k`Kr%%iL=E8XTYAg!d3Zq(kDD|ZwM@v@{}_zdQHirz zBD{_aB`pku&S>z5#$+;7<9`sP*Yjf6?7vfXCY*E#eL-J(04R#d`*NV}VF3)C2U1HQ z=d)tmt@y||osEFNlL-o78X9Cf5@FSRb`{d{_<%ks#h>$4v0L3IS#8ujtw-^=A8bA9S=)oHy#EM>knZKNcnG|j{yh+-&w$)q+xhJ(Oj6()y zNIohYn+3%g^G(8Ys@YtIWdelYm$?3vO$ids#dGqjmGFqYcdT=kdAK@*fP7IF@YJJ$ z^2@%dvz92wcCZF>R=xpRBz`5F1N~rdQWhLGyeENqjCG-UXL-5F!8J|)8!oPWS&XtV zdx8Rw$Ep{v$Ui|^YBHANcgc7r#>X33z}B*5E~GD6kM^LkmxI_S(@UeaTaD^)-E<-w zRD>eX5X{<>(%_Jr(-F{&*H(exy`BJqV|wG|r>(^DG;FlJm!kguE74*vREww@l&b~xd2B~0 z+0D}s!7`~alssR3Enu9!%-OT7Mp~;k@~5GUN0mv&Rk|6zQAIc7C#W0ve_T-i0Y59s ze!~Aa%M*R3wxj-OU~326zb7JzrGEiTOTnu#X-@=~8JfoT%}b$Q7EUNSYp&QJ4T$tt zfJP%q6N-aipw?_*unVl{sCUH^Zdm3O8ZWL(;YkN%m5qmWh7TFBDZ#k&&+N*%LXj<= zaEX$w)-W`iHSi>ZYQ)vx<`bcu$HRIiLa6q-(B5>_UaUT?#(E)gk#BiX>w;#;*8b4Y z8cH($hN0V8u+?-tdYs@7T~=eZ+-xY6qU(&nz|IF~9Vu_Jrkh5e%9a;K+Qudd{YCXx z0j%e6a$@Qa)dJK_ku!Q*xfI4!Ob}s}Q>dEfkAZBaYG0v1R_@Ce8G*F|*+51nq(o@> z)^n*a9JvL$MaCC>4+grbHH7Xh=GKP=VYVMk2CY_y3<2Cdq$Xa!>9GU&5eHEJiwvMj2xI_yHJK`f;O*H| zg;udRjvIBLCO+i_N6M<2@3v3p5WN4!fj~f}GDn)s<59N&xI7*eHH2aE7r}q3o`q`XfNC{8`LC~< zJ9)5sshFd4p*mQ~V@((XyrTRr=u*?CXNX{5wkKgiCXFr?aJE#p3C#~!$>V(l{Bw+J zaGdUFISN~={hX!|S1mMM@)+fEenu%Hfl-39dSwkkhtE>{;>ptD9yK2LXl1aREd>fe z+y`IbQ4gL^HF3gX)me&O#;Yf~k-BIJ<`?v^$=HdfcT5)Y_^CD)qA19et8gF!$O~hr ztPH!TGt$*AD#2v#q5`%SD-npA{BRVN)M{!GZi0LNV}p{}XB* z{t)(`_#5nLFd5C;&O=aOy#M*D?Hku3vt2aOz+@~2p(r>)S@!?)Y7zXQ3ES<>RIPKX z=hk9_ei8DP&=bqbTjY4_;4mm$B(`EVRbl@ZYrMJWpk_XZk^#kbvLdsjEkq8~ttddP z>Z)UDU}=HE|5_>+y;!!;@fg$_JP*QnvQl$KGrHs>oLvGIJiJkNHDIVA3~)Ls#rWS( zGQcdw&5~RO<~NKQTC zVa5==!_N3`K7t@;B)qI+TR-n8RxjPKdTF$zi#sL zA0gi$)F+oleqPvx&+n7ZS6QFeL_uHLh3_ZI_jC03{uHV_BF;cz&JLL-*~v>IVO!LN zy1)7jyOv_X)*ShHZ5KX&RzCk^h+w7@E!!8kCj*XFGGC!0OiSjBc{nu%R1E>ad2MT- zs_Zn7SQIzY>nB-y1i=fw)4TwV1dw;)L$w*+I$1dIF-A1zU|lbe z2(EWtG&(PC;R~Ph;vde7&(iT?wDaOY=f&lGag_674qr%TzUza|aM|DbErp4|e3kQA zF|NpJ-R8W=b3W_M&x-gN*I4?q;m&7|;GU?~zd0}ZI-gzF8=sZ&vvTL{j#F(!G~iaJ z))ME%Cg;UCzPQ49@v8IU#gp+O$9eIj^CI&%z^T~arAPDmLi#(i7a&+f2x6VjraPa# zHUjnS#9J`;Me2mdvH6bgXQ;tdBv$&w_P3sJejQJ(jZ&8MaiY`2f}Ut%F`IbQdE480 zdkrq)TUiG(ZY^`(ew}Wk;DzA#p|%pVzC^W1roUP}b{`v0X!)y_Ymf~I#c<%DL@+c^ zb5WvgydH%=^E2t{4KBc;&`8^n`qh2TtA~5wl{Pw()XzGa6Dp_~Mcq+k01u}oLlTo0 zfv-@{uDK4=YZROUC*Y6I7w{K<{N>+V{5^!f7p?SL_+_~-taJ#!{5}~Ti7bCAewjYk z`Yp2Z=UM5;tlwHI{{!py8!Ml6KZ);I7wh34pIy)CUp^maJ)dp;PQmYO_!Y^%MY{5GX9)|VZ+(HhMR}t? z(;8SU?E;YQSsXR!RC9MA(GJaNu`h6ax~; znBeGW5cFeD2}^EUmwJ%>b+-Q^_G=DHpORWcpIV|WYTQqsN`n78Vdz|+IvWsbeJTr2 zmOh1RYLeNf;O}FIc6SI5r_z zVC-25PbV{2-~-4jTfGGT;#AvEeA)`ldwZQgFEKj^B;qDEk|jzM9-Zpx=b5- zd)Nr(q_u4|5E~A~)LDHPRB7KJ392-i3Pdo`<3ntVC&*2LiJ#+*dJ#x!&A?0bOvdgA z2U4+bTCUzcy>ktv!P;`-=Jk)WI4Q46F+HtG`)y#``__TG)1Vm8-zqQ>zI||>mWNu&iYfF3CKhsmG=tL|CODk!=bj}@4K$2`-@_(H=NNRgfZN4aYkzQk zG&Fb_>Xcmwz6Fed3(|anY*d&7PkPa*a*eCAHLa|6FVb2M#y*jPmfLRvGjvADyo z`57?4qFft72x1#(z53HabWo2BD(ASs6(YaD2wa^`V9;iMhDJMyi1_Nbzuz*G`}^zM z5$M6!Df~L!ibkvV_lcu?Xgv9-+1lyvtiEcg?@rVQREEj4^D43Ko&-Zq!sSpbrS@RL z4x9uKsL@DZ5;`!+aQ9=6CKbYCvq%PHQo+>5eC(Bkd#0yIXYjP&#{PZP_W%-{sLJI(Z{#E22@2t|%S(H)+M>FUfe z*mkps8M+E5Z@J~x5%y=m)xKPO<-o-o!z{K;x+;hZLt{C87c?Hlc|mNK@=iu9>_!o; z?=)TCyEv1h>mxqo6Vxhh5&`W8(O6!G%7qH-d~u8jh+_o45qF3PpAJnK`rmMSYj`#Y zbcZt$c6&DX0RbPL7WA*s4N12G(lT0zY%jW@aQ(m5^H42V{TlfkqcCEv zPIpG1YC7k`hrJIxAJQV{Lxvv5{45#7{ItWK52e!HO=#~R%m5QEiw$*{Y@NZMhWf~$ zFl?r0KvcE+vn=u#8U|kYgUm9rnu100n1#o$AIIqQ<7}IRRaAbV4E7`@i|{uiFsXEE zVA7n1{JUe_{i@0Uo)K73!=J_~D)3T#ftA0Q`GEx#v-nx6e`@tlo&IUkKh63_boRi4 ztvaRfQ@vn^B&uS>1e5RuCKu{*F%_svl2vshAW4>t1!??gtfIL>Lt^D;AftLgmM&!I zp922avp75>I>T?%G}6b)o(G_hD9%BYGM)m$^^XmQv{)4*c!h~ zmR8$%tJeJ&wC)EW;Y${!hxXZylIvJNN=h(2eE_XPT~QDkK?p+Bk}>-Gz-Wk57e#9D z`~vlMJk*N-{)b&vZ^59UQ;ooFNZy9C0XgYC2pOD;T=;Fog1BrvR3BIHk|b4`!fS_u zlV+%+ag-2GkLmG7Gm(uHscHX*MpASmLKCX|Q@K8V0S8-6oyY{lfC%`oV%52PZ@)?8 zUym-2CuhdHi)B1Hbqb%5N2oO%%Z_rG^Q3xGDaf=;52TEzJ&>KzSCPQ;E5PH7*g^D- zERc~+O8XOVXZ5?J{vWy@w0_KXVQgLCH?=nsf6t&kaGb7y40l|p6cpr^7E#@~ERT@m z_KfVTKN-^gNeAx_`w^j^QR(ZX`p)&gBKB`x!a?yRcnT)?z%bD>t*o$*8P$%y0?NQl zk8ZWI{uD`jze0PR;!}_ZeauFl%x0&1S->UQ(QQ#T3gj2zZwCHAgBFjj(mbU~cuGK6 zb#>KZl4mq@ozIu18-)MG9{|26?gIW7O!!jIl{7pqd{P7oK!oCIk3JY=U=kpPjG+!| z373ZaQrz1-X^tgP0t*B{4J~T=O1Nm%5)0}mi2@N&$Na#8X8tr*QIu#A!2GF=Ra^11 zzjoYte_N)?_{T+zzwV=G?3QaUkK~^6Cpyc@($UsHI~(6>sqaqI*Xj6n#GjTQ18Ov3 zq328WBMBI^kOdrJA(pQfVzL|%6oTzQHWxSK-!2ZWmKSAb@U&mg{(aT0%kYrtl`jx@ zs4t{wc(OD+;6;bh6(ZPFXYdpWJih`w4m0T--$QzL>k7V;rM_N=sxMuwZjSFteNER1 z{l`YYcM$#z+6J!)uUbIo5nQ0t{!9J8>SFzA`_*mF`i^s%JhZd++OL)Ik2z?6Kw;^a zGhNX?mq>koLVaDJ?>c}lDAJ@1#$}VT@Xf*w9H}$-Go-zf4i3M=Aj9L)Rs6L4TIPRf z;GyX8>P6fDJM{dQ`tCe*eWxtw5ilE9J~|M0}J5Az<$SxYq8-D zii^XI7l9bSXBXoKMMS-86bDMpXPJKpHjLL>Q3_x0;7?;!JAU-nl5gusw(J-B4JNd@ zBhTA7>w6lJV5iuuH@*h`z@catI~0054tIYTfgUg=xzK4B4%jDAX-v>3W_)TE&V2(WIt9=7;TT4B1(qdqeUlHohA%-Jw_6nv)zZ3F= zu0ij`E|Ar6K`yHpo_SBfP=cJ@{cs*Cm~ec6_<|s-PgdTmVe>`aA0K5N?0MnSDVo2@ zevo~B8@_IY%S`At&)N&BNNq-rPmDl}-g8?Kp;1|-+nv2$32+Yv{ru8cB z>mbn=2}BikSB%6;hZ&#m>;zN+kYEkK$)JNl)LS4jT!uNW1%1aPFx+{FNHK05Qtpa6 zz_GFx|6s2!U7h#=tdvF|zp|C<}qO zaM`dtY%Fo^BrjrmoQI1hvQymsaBL`eUOJsNO65Kw^THH$dJpajR3^du0+u*- zPzVsa@XC$O7$y*Q8NNZ4A3eAwQev0AZtm6~R8=X_!M~&|icO;0*fX?S%YC94IW= zLU{~M-q(6*+iF|yK^a>g;^CJR>kws@cEf--8K`QLL;&Ro4>Fv&uc`e+uM_)0=zd6r z02!wL%{KjGDl#gGL;!jO9FQ9%X^dNv=nZt2SPrdgh~nA@QoZ~?-Z(2^^4@_l60+fR zsM#UUeTCRD1Is%D*%WE%WVj^pm=*k2od6bKz=aR5&{rH1Gm_NMU%~d%I5C~2z;5F3 zsW)gad;{kAp&~ep`>CDU1cEq(bkR+1$(T+O#G$eCAP$JtaLoPu$_eH`!j@nTFJORm zFo(-V{eoZ)dl}3j#7W6u4r702j}S_R!5pxWwMi-I;d-2bN+OnFpNB2Vx|t{iU3UR0 z(tCwzB42&gM{RexVY2cc8l2Mog9F1?B6)#i({>C;5xPP`Xsfx5QAl& zCpm6Ss?dHeZ{19Wz$g2Bo+WQ>w`TXtc^#k?oQOON4r z2$LlETbfNgV-EomGl2(L8R=+r6J*GGZ|0_%+kNIpKic&ULll5d5Qd@EZ(bkc%ly0q z6KHM>{#>n}0t;S7?kK-24McDe+M6Jpxj(ssZVM7D$(Pw)G9I^^D_1ve%9bEvL!2+O zvG_QMF`)$Wd<0pb5JoD)8-QFC63NFP&vmsGOLsE26;BNFpUb<{Xc8O!U99W``>a|@ z5NE+@)d(D^wNtDWK?mVhW5T#K%zZ}Y?&8yYX5z)W2gbBMhAj?sAflGeVQ*W-Em54Y z1Vff8bXiH^Ma{mD{H+aiK zTC5tGs-zF7R9zM$nCs2B2mKifrwu#Fanzs#S5r3#;7YZ8t7)`^MI*Zi%{>whSwCp~ zIBY8447NJ{ceZxv5>Xw?&<=M%jlaW+b~yabJ~8UI*eS1pywz77KtG8rk-!qSS|to! zOLU2Ccc6qHB?5O9AtKBSBk(dAqzGM#D81UDaFeA2`mos-O!(}NmS6?W)pLk!3;>|3 zHLJ%jB*&m@ns&Vx{>DIf5w82Dw_SqZAr?e=9Uj|<+>Qt?-Ye*SaSsGO>c0+9iNv7n zo}}wfWBob5xc=75S^p4S|G>!lzX|Ol{1}#Iwe5mm3V%TAU%dmIG3bfkN%#>D0C5|U zOh7V_Q^cHK?_pz}wcl}Ub7nAW%Sb6yr?X0#^`_4Hw`7%*B$<1H{&thj)x)$=HK&F` z)#WweK`Z2(i8`Jv>%U~#kJ0y2{4KSB`;hati(|K$FsIn|NLx&quMdC*9;`tE5g2ki z#&I4unW2^KIL>7#g=nQI>WntZdnjI&Ggu35OOc;Ps_`SV=UkD1IHU~W`v`aU;0*B= zHoI%!?%9sRIXJ{q;-X1B4;&MGi1%>)JAN;(I!K1UBeV%!t&X3|s+|DT(j2^gfeLlg zG~O)m617HDSSJotge|4DPzk0g{zpn*;6JTscYgQy}fDe-f?zB8s zgRcNS`elR9o^%F&3&DT(W&vMm@S_7;ufB-j+kvee@M~KS1AK%X^SCYWC*7*CzX;$j z2KY+^SxW)F0q~cotK$UwwE!Q3WP{J1bO!zog1;U9ZNPpEMkg2Xm50$Q6_%XJ>OWTRR)S_-Y{$})7d+B$n}cZhxK ztV1qzLLIF;#GP7TNcK_kz9Wy z3Ix2n1$cK2IK+l{q_Isyk33|#c&*uyxPK~;raQSS#2O7b72oM_aF<-oFOr@act-on zz6RoWF0S$cx>e$83D6*rR;u2EDIRplbZ)hTS0_A`i;yNL;?ApXB`}p_pdE+s`Y#Rx z6D~k9mXLs<{dBX?<0EVc?Jvd;+FybnX@4mm+{^yJCIJMq)w+J1WG~f9R$ieq!j*N* z>6|hPh>CeP2r3E%6?SQkCD?Ege>(q`tX<{dTO7krd}aLiA%ta423y93KAM3(`8kex zGX8h?9auJyJl}dz9e#mp1$eq@ruAle)EmYUw_Z$+dcnip=InZdm!t6Bd~1)_FBubHy`((D0?%G+B4``vIOzK z;SO!)MLZnQruV9K^wW~{kGb9oB+S)%ioi~1NLR>n|3#qQa`->)cb|szACoxYqG^_* zz_U7X)XrQ(D^ng26FxZs1L7S%@17PX-c{GnPoQLWL+r@5Giko~1>f^bUmkCN#w`5c zK`L{w`QSVg$NGaUppf#{3b>wts=dEGck(PCK-+WO{bD&)85Ao!*+Li==@T;IyOr!w zgRvJ5Mw76;jUQmC6KU)X+i$}6i+m{FtrsR^(c+B*a4`6fz`fGVxKcU}3(fWFrn5mq z2;&EnOx$@eYJ8x&!J=x!-i2qO4>*rn$~fw`=@AiHE<^$7-oXj6#t2v=>*4$x95|V# zLRLFKs=X)~7l%(;kD)VrSI74ObGApS7ZD%ZA~=3wfAzjUcsrO}E_Y+|=w&YJN3?nBXW4a4*LP zQv<*$>O)kUPU_3}wN+n2w!6uyEf-VutjOWNS*pA!8EAzaE`zAeO&z;GVx{*H`=wc! zldFrIIhlUi8|XpGbVS>r?fYok9^hV9zpozMi67>zS1!CN`C3zsV9mX3FTyX!Rr^wp z!)@iLU?>b(Vba`qrqx~A3XM3@sJfnpSs_j^e$K5s|3&Vr*R>rMAAp&vnRtN_UUvk% z08{{Gz&u1^1i}&btj_qOzWDC>7+PO)DJ<9RTT`9eXBY~>8dX>F9}AK0Wj|D346p${ zX%pZ_Lhk7V@@Kh1i-f%Hqx~TldPoOwI8%Hv7wlwroN5?B3?15AgE)19Jc2(lveCt7 z=y`&x>r2 z5}d=b&(F%LUX>c)RF4?06lve0PHo3`2(;~b>&xq4y5ucW?y7~tDK1QQFK?V$kFdYx zYvLGLMrz%EQmq}s&J8f)z*3gmm4jF-Qh$SbswZFy(od<~Un5|)-1C9BFD&DK3%=zK6^k-?bO`>&^6 zhd*AkI~%VVr(4sD+{8wy#Za8_y8Rc9*8r*fmyg%GqX}H(c-;)l+hVE1c%A>LJzfvD z%XlSZ+v9aTOat~{+5CX`6Qfd!<^mbFkjk^odUunsM@tM*a*l}Oe25_OOo2=K)fvAe z?U4pSe9=NDZomFKv_0G(%=pfNIRG5pcGYPSa|cX* zs^;=%hiA=!p!Um`k)!ZAO)ZhiK^A3?L!^#8bNB`@IIlehO7E<*FvYupYh@K_`4)lI z&rcvEC;mLOyuF*dY9FLw`M&s)nP%L$=_S*ql?-<;%Tv|RgK5FccQxcG zT663gwvT5Gvrxmh;+ZAayDMMC_YFP7T9A(=;~t=%OI3F1 z4ZxihU+DG$G?_=jQU`3ss<+PJ7bY&g<*tHtTU1ljro#TW>TpwGR}PK- zCvAprO7)rCl<9!?VqG!ByuY1V?2B)Mts)Q`w@7iG+a`a#-Y5i70Wzo-{SeLB7tF%c zS~L3`#6(X54aLWDZsod{w~&C(3&vx4w`Mk!glyNO;K0~C_wx0A6ZV65)vde*NLGx6 zScwKbRSfV1H75;Pwamc{XK5l&Q=?$hAP~ZTqsFh2o2rDo(38nnvbDkHYgF~aXwb27a$nt5wkDn6*=x@gRw(( zi3@BrO^6#-4{Z}nS86Q21gSUl=nj=WO*_wA4Fu9M0`#P-29}`bCEPz2vwCZ!h{Ufp z>poBRX`+T0dZX>`Uq9ZLb4{vQ0%&F~3FVGzqqaS&2*M zfKhCkSWz|7X(!0M==+e28ip;~+*A3ryW)5F-d;b70|QU9UW>3_aA0&Vi$k>6USqqt zEAKT&fx94f6l7es zE2#}v6Ev#kpwIz4COGODs`+fBLk*d`5!i!9ED$cne+Qa{`%fKy?8s8=#|v<{v0Qpe z)$M2EOI~6d^c*cDK3^g&s(qwU29rD!y=5a=>Z1yL7xcV$s>X1ZdU0zc(FnarC`&eL zCipIMmfV;Lve>}nzyyW&MDPO8#~^prdMTQplxxPjsEP2_4XmJ1XruCB_YIT`Qjpm( zX!hN}2WCef%#KT4WqWTbKCU4Spq=L${f^qmRf&5UKLxBsYV}!2w~gSkvalL!Eo`h1 z$(U1xa92eN4O@3!7O4kVSa628KV)%lzX=v+PoR0Pm7%OGwx0gLW&&Hb3$+!ht%H7KiU6aij1pe#|#HUJ-G~GmS za;?|wld5i8#k)*jNg}A1){TZMY$bQau+5OhAM-(WB0^3J1QDY8NUS1;W1_T2+(G58 zItQbt?uGO{2s$tWupP$P`pOv?7*V)LFot^TD7L%2oD$c!ZP2JXR!9Gdd-pDX8Zn~;~dd9&`cLo3>B!3tHRi#0>)z)@L4k-5%KQbxN@>yztBw;r z&6?=*UgNxvbo>l?dYlcbPRJ9(AJokz)Z*;DMQf~0+QWVp6R-(_uj+w3oPg<7`w3sjk|@D5#J zf%=tQVGp}Pz_C8vfvrGl1H6}ZsH#kj(N&GIVRK7WR#$7Uu(}%D3Yt}Sgln9-T6&ud z@{a0lko%%)>s;yZ=9AcAowXbaGa0^z;j)7MWcB73A`-@&B1lPAzej;Lc~1%^RmZ;v zf9Ml42Y<`)XTP)LC)Qr>6N^bV3B4|KBYv3pteu`nlJqJumJJx4aP zFH|TteijPh?vdht5V2G~&vU71)GXVsfCx>o)KVC1lelG$_vDJ_owh54cHpko5Z6Q4 zqa|`vMC7IcKuhGNsUav^)8-D>-dF3b&|7?|Qz(P|uWOR7VZYLd5NNWF@doT6j4#o% zahKj4VoeZ)1#`FA7t)i^F#EU+_Z!3!H?#`(Td6$=8g1y&16{#12l$-qfT55}SWAy4 z2)cEQ_gf6bB>nveI6_A5NDep=@WiG_0Wa{`swNiI2=B~#%!JVe;dM3F)VO^Smjh02 z$)-Lex9@5y=-82KT5(C^KBz;owxoIS9WL(_6>3~-<|nh`H%7Ls(aB~9*!eau0*p4 zzqDJn6C?K%YsrT9eB$ui++ciCUbnjJlbXuv)3d94n(M%BHzAJNZtf-q{fkxA9T-z28NS=I*#hLMfA0hrZ*S->v^o(+fFlq9#HF4(h5N~ID^l={dKxq)a|Q&Om4qDr zCiB;w)PoV`k|x1r-$;UoqV+bP5fW*2kbP)Vcg=n8g;cubF58Iix$ixL*`0{;`;Nhj zkmt_RvGSG?V9-d8KzMt2YK`6xHuiiHmUkWTZkJAD_yM4dk+%}87JBW3Uz@u>;flQ1(aQ2ye_cBF3^(&qW{zO0$iOZ ztW_2zvEIynvybyq-GyNh)9(#0jAOJ%oFXDOYz}yAoy`T_-zu=4BQ22&Jo>I~%C<*f zyGvl!vJ*E)6Iq3ixM&E_x@th(6~)bFsAt>-zC zVg|dT7g{`jRRBkAbgS82wT3hXJ4~KAFgDx0j%L3+*aL&{{k@rWv+v=SJCyt4+btmi zUs+nEAPn-LRtbMQ*8pkB5{eoq7Ezk>7pV(Q-WAd_>e4lsQQ)M!w#%J_k2!rB;^6Ol zpv9L5-)c!p3sBpvT{^aevts!Tp-yHhzY_6CUPB{M4O$K>T#G z@$kk)2-<{L}MW0X`j6_k&tI;T$f=gBO zn4R&lpy;s^Y!ro>Efk4-5_^>`q~>jJ1`cF8wA#iHEs8GaW@JvrM(9kiSlAsgJ(i#D znwnj|0YY^$w+)@uX{5oV*92`aft-RsTHav9<-xp>hk9PpIeVt&W$tsA2iYo*e;7E< z^b(iNQPz`Z@jAkKB0B4q(NyFrQbk7wZHa$JSFI-x%mMnSaHkVT8R~%(k)9fAn3|pW zed{e?d4k%9Q>nv(@Q4&g*aSVRaAOO<%TgcyOK_WWyv8je!&8%|iKPJUj$&e&FXz-$ z(g|omtJN=ALzAT*BB4i`SV~nXoXo-JZcEWMmZ}S+M%X_a>_)HGjc!P_8y$rr7C*p^ zPhI3^-w2k&JZIzUHo+w5`lnmPAaBI_6GI5A zOX2gMH6#q2|ID{$Z$)Yua`gF6i^ti^?~nsB%$ z*Zc%Wclu|W?{N%^)bEdA6Y`>O?g$(qF(-if-jOfb&D&P%bg{-bV0T+UHK;N(;FdB4p*^;Cdd;x=lu>HYi+JiHceP z(J_Pw%gBFX1&oQ|UIw)-F1tFW8m`#qVYe7Zd(3`bT*7JuV%^IIsLjWtR+v}x{>gAu zdZuMgr}^1kb(=#Gu@*)6sjY6J-0}}sHw}scW;ik%l}8AI(1h|eG{d?G&3S~z>0H>X z@2+YRR7IHf^BP4h&D$uDY*b13v>~sNZr2;p^1QXW<)^{t!A1lRd5zWGs{KG17BZ$E z_j;ZSEaYv(wh#^|`Zub#QrWucAI_s`8Q2IqQ{SNYQ-r<^YTM7Q#4Vt2PXx88;gqwa zGyizf*qh5WjfqUqw_`CTIKcZ$J!#ATjoQ3PNNa+yE2JNX(oQ`sc8yh_Ru?$VE^sdk zSpV7dlq~_ar=`9Trm228HcjD_*LM<7a`Gk^CrdVFRi9>2)W1gxMQs#{(pF*!DcF=# zu>7H=7&2;XEM(M1;E87Cyyd_ba5Z^3N$k}gHqk9XZ#d1yLZozs=&l>4hgnw_wokjO z8im|wqvj6Ir7)D1ET^WFw_1jIwK@@>HsmemFs}xh{$#bh28&^5n3r>y0iq1^YHOHR zW0;o%<*U^fL(#fL@Pmv1_Dq+547s&u*2Ng|AvBl6J^)p-hr8-~p}KtVLr}jD8=(P^ zPv!^3eFE^rTN96YI;72m=|K7!q^=xDgp>?tHB&=tQRkMKOCzv`?N$GBwTB@AWUhXa ztI?JK;JbphkpvvHHOQvV;a#WC3x<GR~5G<|MmH=}QF18(ou_M9zh z%=<#4j~+wz=ij12jhg$7u?q~;1?JiXK1Kl&@v2vah_|Sn?@0|;*aco;0ZU%l`jfM3 zPHM%iI)EvH`<)8q58Q95#r03?W1y#23gb-OE5my{lc-xOsyc zLkv6+%S)t|x$bII?pkeY{KR7b-g8n*nbtlbZ3v!I!H88V6Op?BLx*}Xf+c=nZ!bvB;Ab;dK+jeXQk#`B$H zJB(*uwr=@Gr{zQ8bpfjAoSa4Xd&c7HJ{W;^IagP&By4DTjX@E z)$YtLx4Q@x9Dtl&S!t2eu4W;pE046u=~bAb$R7s3Y!!G{7Z__7c*H93qg})Ey1>zP zfjKOo{e9^#mm*ArrxCLBslo`40ZZ8J;QGPw7=ZhJ8rR>2Tr{PTiR>T`6t;X0p#srO z=d$`xOyrM)+5P>i`?FKsPWA!S4e3gC=N_QC3!UoXE$Eub5Dx|2k4FQx)e{ zr(*)P?Kkz7{f3vO;#&FglPUjY%NRzF2}nS1OrklbylxeB$MW`cY}iL0v)_2v9~ z|GZOp!BdBFcXg7tiFU3I<%ZF@qeI@+v?O)NTi?mIfBky@a_>g1=QIw6bW-l4o%??~ z===Ti*3$8{11$H@dAUR0M?dYKw~5|APPw4x)>=+Nn%(?w;SJ8YdF*A*5p{Z=7CS{w z(nWsf6xj)lms9x;r$`T7WQJ3u*(&mnWp+cKy(ta(og#l{k*PI9K{_ivi7|cgdpCX` zz~58&+kn4kj!2Ao2Y+AS?|YUTu{0RuhIPxSnN{z-daHdjwrhsJu#OLY_+ zxRk)15PLi`kHuyI4By$@&5apbUUI7Xa}?%-o`1e%cmB)u()ogcHkOyd@F{6qYR{>5F9Z{5p!1+#w~8|%LB2uRhk zy*)}00DhhNOI#@APHV;@n|gck#!#sBbiA*4qXYrvC9eQu)XIxq%J#;WoInQlaraP2 zzvQmI+QI@MFb7q_r`>oe+Z$Ih(_WK?M!>Eux^em3ElECiP9DM%_))i1f6Y5$0iV2u z8yoI>my_d&SsjZfXLI8~i>->mRAyKH6M><40a)2yI0*e#IOGQ9nn;(97M|WX(Q0cq zlog-3)=HfTUDSH~7hbfEMGY%xL^m=wyQ@s3!ex7-EH5L%_E0MJA-ynp01+N(q8ULg zh`bx{tvB?VFLT?>Empl1te5<;Y%hEtJ|d$;!RdM5hpdL`-Bmf#P@VNfH#8(x<2*#Q z46o~tM#LPnk5C1tehxM(-T>%l8CESU4&!oO4{IgkhH^OwTQucA^qf7;xOPppIlnCa zn8X-wTvO;1W~L#h=43kuZe>tQsgd?*J3=R*rw07)Hk=L28$>$BK!P1$J^v&kBUIG6 zE2tLx%v&0>%jU+QUvf{FId>zLV_G@3*Jzak>YovD<)Yj0I-%J+u2_ z>jDF_LHTf;v2BPwX2_Y-3+puXIkR24c)ANuSWFG!Vrt7@^boB16?0H61xNxu+d*@YNih+gQZ|QRihzY)dHQl=IhKhxFe46 zEpXEGGO9;=?5sh-$?ylH*Jh0nCpPWnJskNP9vBdlQym{`gqR5pEuF`9q3JDypp?0W zEtQ+W&~HxW^&O~O%;)RXQ&jo6fh`v|jbVNk7utvBOWOyLFAe=W2|>2u3rH9ZPin$g z#IY{7u7)Ri1U~@4muiPD-^|!6XCZV7rs5q*Y8Af-@N6b(3x`ROZ}s=R=%^dG&}G!3 zDE})%Dv4e^feH8wN2Xlmdwb5##tG|hwtg4NHWvmi9zv$@HawKDGUX{a+yiU&WV9bN zLh~Sk3S~hG)UEYmCl^@7yr^624;0{3Y2DhI@%a2${H5dXyo3DN{nPP4sG4K0BYL_x zHgnv~4ZKM$bMq`*D-nNG+t}OB;kwrtu?8V^Za)gjBgTro&Z6FG0C6c-x0;L~HexfK zlL71obt?^Q!FWVP%SX*oW$9II+sAa{H=@W7#)uOcSk1cNH4Te{;kc6P_Ft>5PoXLt zX6$POrwljBw{69KTYKBlA1kSamP)!bI}9Zde#0sq(&QpdisGvaO1 zwIf5ADko2hdZ7;)5@;dlS^SXJLbB93T-hOWrFL4vPJlX^Vby}3fj#u>EL6K-L3*?1 zXu#U>@8gujnAh%I0I zSd_%ar@AkMUt9vFExe7_BKlSXOo_Wo-t*#EfFIys%DqPBl0nw+?4KDH0CbC(0Eh>0 zGk#|oj0FbX6V{FjBWIu}cHsx)kZgPgyDG2dtI_Ko-s^Tuy(_15p} zX4JQL^V%WO#$%>oZ`xf!Pd;o!Vt!%Unqk`N_jcpTxrlKF-u_C5D+`ul!@f?YV3S+l zBN2@6|Tdtdp)e(9z;^i+o8w9TQ`>;_-YZl}H8JE93w0gvrNW&_Pl>K@4IbAx?e zM(8Yw21c7Got1)pj@7GVOx{A|K)Zh}4MTCo)mN?!c@q1Ry`Kq<<4twJ3QXp#i!RZz z!i<-pKk~nOwAO88zH51AgV?d~2D1Y9A?xubc}Mgm&Or)OfOw7U+lLw}P9Q?Tz||#x z(VS?c5iA8K`VyQdzrF2jBRII1k@>OVp760T??*vy6W=Q zi=GDmI%gm|KBYFy#YjnzRN?po;rJ8AwNCtr+k0b1bjOT9v^2J{f1CkL-K6j6`$DOk zVV4Y=GPH;BCt2K~lA_*k?)5V=8;r$&+R6gKmz%_}zEOSn2z&leiJs&?Iv99|ZKLx{4n~tx1=IL+y;&x=i6$)ib z)xy)`shW{<2IP?(ze&A?i=$=B8bz)dg*!le!Et{a2lqsbb&4-|{MWGeGhkpkDoIhN ztRye>yVME#L8&WG#nJ_}ma4d;P!paEwHXZ0Fkh7}mak450Fa80G0X*g0^OHj>uFyv zjyt%1aB=}|kQSDhmt_Q(3qk@VSq*sxPIAFU{IKk;uWlC1Amr?p;*#vLb7D#cVDG<> zv*_w@H8|LsR91RqOz}`2ape<=Wll*d0d=)dQIMBka|$n$99P*LDDzBYJWvT^f~K3K z?6+;fkmmvb3*~Bq$|W$k(Y4eUc(NM3GJ@bf;2p^;h?Za>pZnc9f01JkR~JO?SemPdRxkT zgsS~t(Ay_HEP8wIkDb%ol4V4TrniUnv(Q`f$S}PX9}%WE1FDh?;CMcS>1`|OKNP(Q zzqDP2V7sXScbfs?26wyWc#GQd3OiwK$+EM!QH3PN{zGY2GKOuE)Sjna9P~87-<+)N zMTjWyey*h%sfe0e{bJf%;Gc|rYU;7se?@@6KwdRi)Dc-0$$)df6W~NygyH-(&ZsiL zmche51#(^ltFK(-OhG*XTxG&~ywX&&W`WrnNTzXs7u zwZ&7hkC!ZtxFfZ#3Y~RqRh^zpC{musdg9#1tqIqB&P42-i-P}3FFpg)c~c!FddQ<%biZ6GthB#j zntT#DdogZAx8yYzEWY3ioaUTzDR6&GgDMUi*n`4CUrv#4$U@x}zX4A+6Ehx;xRJxU zl>T&tmH&1aMP9%9r$fo>;*%VC zeWN^TdHwehVR@aMs^#?^aNM@_!?(_kl-KU1f=ZX_t{;>dH{6!j+sJ4|KU_gI!jadD z&?hag`DDrKk7GcMVZ|=29|}SulEw8uh zXOY(_CxqqoYkkA=dQrTfu|O^0Ls(v?qy8?-YuipSZ+i_83~~MZF&43De@egEN|(x@ zXJQ43r%9bA$|x)mo}W_4#F|ty;#Kpvb_u~y+@Bb^B7>UkR3ZNs%N;zsmYFR1z!Rj? z_3DdDNj8d{5YD~ohWHpY;AvL!K1&(0kMLxfz*SO8>%s{5LAJYQ-ssKTReW8fKJGV{ z3pX<7VkHI_s$95c2CvGZS~3GIg*?~p>&?L6Grht4X|1Hyw1})DMa_dFvg{Y!0p5a= zUX(P-8(e6kWC_s9oiFw9GX!e~`sS{f!(Ifdi7!~X(OwN}G%{-zM%I*OTvj`WDWLo__=sj z+e0{q2oPn$?7Ux?F!At2EXQGfY8kpj2Ad1W$Y8m60?l(w919b+CY(hPPQth=26Ny* z5pockj)icE2F2GMWl?-C^gk}UTP@q0K?Am-u0ZoZML{gp#VoXd7U#l~ZX&EIG@xS) zUwNKj(Mp?nwX5VP`&|m(eIko|7!z(wZYwb|XC)Wk3f1)42N8pxN}<=>81lUSBdN2v zCu!wrJlF67o29XwU+q9KEX{B!C(UND$#iw406|lFvfWlXWR6P}OJh(@XC_O(U9lyA4orfRdA0qa*q`$ z_(z>96VfJ~JP=oYQr_sVeSup+K7N>IyF@$wjII+7mSsXUlgST8yhy^?U z@h2z^%xV$uul$AB2#a^0Stc^w6e*AEzKVx?VW5ZS7_bvt+zXB-I5t=EO11I;xm3n9US|^X5v{34kF)02cUd6 z?1su;UV@rqczuS+Crc2ggk?I68ZQViR10|gOl11~Ra&MO$TuR>XGY8PDF~u&O)n>lu^1ELP&Jj6n0a6Z{Kmbhn+>@Q$qHupxE@$8aGM+!idvwqQE8 z1v7N0@T|V?0ADj99ip+WC-P@!w>C56i3P|t#ObawYx$R= zp4_SFsg%6L0GJ1)r^x-*X{kHFNRnif65i=!5mp{|TERy|N45D#X|m=cGtegZNVS!` zjY*DJ0oPYS&snobb{o|3G@V(NG*G#!{EEx;k{Z)9tLngPWHdOy+$G$f0KR)~Y=FC-f0hD}^)Z z^r^%P6j?O0M9aN$SS1j4GzT(Jdz%IQwQ4)`86NeY0-w(olrIY8DK|pBPn#OZ+s?pi z)2s9TBkNyl+n75ejozT4FFe8M08i}YM?Rel?EOoyJY zyS8ieJQ(A2*z~*yT1A+ijU#P(=95LwgTFcuJ#*wD>G|WkG(GS5U(xeztrk6BM@XXR zxi8fxq33u$S@gUF&9j@jV<_pN5GP^4$J4RLt_bk})sac}wfj*|j(Z z9@B_FvR~mvP%$@Rh8daA)Af40n(OVmh|u!!LnZ52$x3e%9Q(kuAT|0EDwyi%cbOh> zUI=kn!?y6nFmy5|qBeLYJlfp?5H@kV@df6mCgIj#I$gr7G6UPmdFB_~Kh6T*JO(lG zX(;cx2XlvdvbF16aN0-JxF&~3i-Vpz>}ispF02Nn)2RIX2+3c9d>HQ39OmPF>O!t4 z6f4P~Vf~yH?O+coQKoZ?fqMpA5YoI@nECwT46!S$SL?J@dkyhx2K5VJ;GVqGj z8sLS$iv>RmCCv&(dSshB~gx7q_0?v&(vRqRHCrVe16nyl8V-=7eA#{u>~Gx zUUM?mee2cp+gvf~?^2hzPTh-xUcMm1**{o@kG+`>R^z7_Zpc_;cJr1C=3H$(1x0xU z?dXctg^ZR?`t>`UsOE`<5wJITgRjuwZJ0fb%zRfd4sFv!;i-nB3~8u(7rP2r2gn$3 zdGz^c8G@-+iK!@Y=pk4NlpSISe(nrZh2UvMaLffSd?zD8zb8jt`pi`_PB0Djpnve` z=KTAn-Ia*rbsKoRZei*o4rcipEYKIGx-i$;PGqi7hn+LXC|{Mj1m$Afm91%YxN5O)V6zYj;UNepo2z&OGo*c*IgiBJS$XXgk-Ao@+vbKiJP5x3LI z1d4dIpG6Vt)w`z(MOSXBj@T?ROc;k z%xXhK+f@Qz8xAt)Z#XJD@E&L=Jpt1YGB4=42%|zK6ekL96LQ{yyMuaS9>)n%3v`KqQ&Ww~LSS$JL!@_E}?`H6cmvuQrg`2iI0$Z(suU2HJ3)$_KDH`rLWz ze3|FD+?A)u##@uRs2WU$@qbJpBxn?t0Jj&^R%!S!>q z(%>pk+5r2Kky%AG%;kMLJpn{41Ui{oTX@k#c#BuK)_RjIDc2U0DxzP{iy&Xn^~Sb7HX zRLxG_if(}u$jRVy4GRZy;5=0!U2^x!F__QpARl(4iqxh08JwjeRU1)qig=L|yI7rr zo%H#-{*)l);Cz8oZTpn1%b@VPh&cygaR2G{oMU;;IW-Ix4=oJH6f9xD*+%fACi@*Y zW=COgDozoKFooAN4%djoOnQl9=;ogcQjy4S6?)j5;lo-~tGc`A=r%uT zi)4Z95@}QAXG~#WC1=d3t*CHARMb2|nbR+rQ!}1;> zq-^!$3J3R)^@~_X*VPXfkYNNKw$+bM;kn?bAOD=A)sGbcXYZ-9CkBJeA@4RGP>?kO zf{|fzqVI@D&@U?mf9d$kviQZ=zCac)+Dcf5g*A`+WV`$2C;J1l)4YxO!Y#5J@{?nb zk%5OSK7e4g(!#maHoQlS`T!u<`VLs3B~p@vj;(P5s;Auoe}{_HWMm_#%!{e%e9z0E zC|~_S>X-|y%qF!~G~I`-H2mL;%*$LQ=d;LG(3sjLaRgjGcq(x3#@3;d(FW5TBdO9v z6ecK4?uw`IRfN*iD$!3f?@BJNL+4A1xicfu9G(&jJ`|sx>D-kl-%6CXYiEi1sTqKo ztb@Ns5OKHFNn0qo(TO{f?LM?{kR6~9#rTW}V1tP+G#2uljYg=eaHh0oL;ll8BLSH; zr1OQj)F_08sLWM3Gz9u14XJCtvF9%-x`Q$oMX4(g#)I?s8XOLm`Kuc5>&kGwa`S