From e2fc22520146fb80547606a12fe9ca38f2f3dfcd Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Tue, 18 Nov 2025 15:35:38 -0800 Subject: [PATCH 01/89] [Feat] SSO - Ensure `role` from SSO provider is used when a user is inserted onto LiteLLM (#16794) * test_apply_user_info_values_sso_role_takes_precedence * fix SSO --- ...odel_prices_and_context_window_backup.json | 2 +- litellm/proxy/management_endpoints/ui_sso.py | 46 ++++++++++-- .../proxy/management_endpoints/test_ui_sso.py | 70 +++++++++++++++++++ 3 files changed, 112 insertions(+), 6 deletions(-) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index fa13c2f6a0b..351e01bc45e 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -13084,7 +13084,7 @@ "supports_audio_output": false, "supports_function_calling": true, "supports_response_schema": true, - "supports_system_messages": true, + "supports_system_messages": false, "supports_tool_choice": true, "supports_vision": true }, diff --git a/litellm/proxy/management_endpoints/ui_sso.py b/litellm/proxy/management_endpoints/ui_sso.py index 0add5c02cfb..44b593efea4 100644 --- a/litellm/proxy/management_endpoints/ui_sso.py +++ b/litellm/proxy/management_endpoints/ui_sso.py @@ -62,7 +62,11 @@ from litellm.proxy.management_endpoints.sso_helper_utils import ( has_admin_ui_access, ) from litellm.proxy.management_endpoints.team_endpoints import new_team, team_member_add -from litellm.proxy.management_endpoints.types import CustomOpenID, get_litellm_user_role +from litellm.proxy.management_endpoints.types import ( + CustomOpenID, + get_litellm_user_role, + is_valid_litellm_user_role, +) from litellm.proxy.utils import ( PrismaClient, ProxyLogging, @@ -554,6 +558,20 @@ async def get_user_info_from_db( return None +def _should_use_role_from_sso_response(sso_role: Optional[str]) -> bool: + """returns true if SSO upsert should use the 'role' defined on the SSO response""" + if sso_role is None: + return False + + if not is_valid_litellm_user_role(sso_role): + verbose_proxy_logger.debug( + f"SSO role '{sso_role}' is not a valid LiteLLM user role. " + "Ignoring role from SSO response. See LitellmUserRoles enum for valid roles." + ) + return False + return True + + def apply_user_info_values_to_sso_user_defined_values( user_info: Optional[Union[LiteLLM_UserTable, NewUserResponse]], @@ -564,12 +582,22 @@ def apply_user_info_values_to_sso_user_defined_values( if user_info is not None and user_info.user_id is not None: user_defined_values["user_id"] = user_info.user_id - # Check if user_role already exists in user_defined_values (from JWT/SSO response) - if user_defined_values.get("user_role") is None: + # SSO role takes precedence - only use DB role if SSO didn't provide one + # This ensures SSO is the authoritative source for user roles + sso_role = user_defined_values.get("user_role") + db_role = user_info.user_role if user_info else None + + if _should_use_role_from_sso_response(sso_role): + # SSO provided a valid role, keep it and log that we're using it + verbose_proxy_logger.info(f"Using SSO role: {sso_role} (DB role was: {db_role})") + else: + # SSO didn't provide a valid role, fall back to DB role or default if user_info is None or user_info.user_role is None: - user_defined_values["user_role"] = LitellmUserRoles.INTERNAL_USER_VIEW_ONLY + user_defined_values["user_role"] = LitellmUserRoles.INTERNAL_USER_VIEW_ONLY.value + verbose_proxy_logger.debug("No SSO or DB role found, using default: INTERNAL_USER_VIEW_ONLY") else: user_defined_values["user_role"] = user_info.user_role + verbose_proxy_logger.debug(f"Using DB role: {user_info.user_role}") # Preserve the user's existing models from the database if user_info is not None and hasattr(user_info, "models") and user_info.models: @@ -1540,7 +1568,15 @@ class SSOAuthenticationHandler: }, ) - # generic client id + # Extract user_role from result (works for all SSO providers) + if result is not None: + _user_role = getattr(result, "user_role", None) + if _user_role is not None: + # Convert enum to string if needed + user_role = _user_role.value if isinstance(_user_role, LitellmUserRoles) else _user_role + verbose_proxy_logger.debug(f"Extracted user_role from SSO result: {user_role}") + + # generic client id - override with custom attribute name if specified if generic_client_id is not None and result is not None: generic_user_role_attribute_name = os.getenv( "GENERIC_USER_ROLE_ATTRIBUTE", "role" diff --git a/tests/test_litellm/proxy/management_endpoints/test_ui_sso.py b/tests/test_litellm/proxy/management_endpoints/test_ui_sso.py index ccf8bf13e0e..4f5f4e0d858 100644 --- a/tests/test_litellm/proxy/management_endpoints/test_ui_sso.py +++ b/tests/test_litellm/proxy/management_endpoints/test_ui_sso.py @@ -533,6 +533,75 @@ def test_apply_user_info_values_to_sso_user_defined_values_with_models(): assert sso_user_defined_values["models"] == ["no-default-models"] +def test_apply_user_info_values_sso_role_takes_precedence(): + """ + Test that SSO role takes precedence over DB role. + + When Microsoft SSO returns a user_role, it should be used instead of the role stored in the database. + This ensures SSO is the authoritative source for user roles. + """ + from litellm.proxy._types import LiteLLM_UserTable, SSOUserDefinedValues + from litellm.proxy.management_endpoints.ui_sso import ( + apply_user_info_values_to_sso_user_defined_values, + ) + + user_info = LiteLLM_UserTable( + user_id="123", + user_email="test@example.com", + user_role="internal_user_viewer", + models=["model-1"], + ) + + user_defined_values: SSOUserDefinedValues = { + "models": [], + "user_id": "456", + "user_email": "test@example.com", + "user_role": "proxy_admin_viewer", + "max_budget": None, + "budget_duration": None, + } + + sso_user_defined_values = apply_user_info_values_to_sso_user_defined_values( + user_info=user_info, + user_defined_values=user_defined_values, + ) + + assert sso_user_defined_values is not None + assert sso_user_defined_values["user_id"] == "123" + assert sso_user_defined_values["user_role"] == "proxy_admin_viewer" + assert sso_user_defined_values["models"] == ["model-1"] + + +def test_get_user_email_and_id_extracts_microsoft_role(): + """ + Test that _get_user_email_and_id_from_result extracts user_role from Microsoft SSO. + + This ensures Microsoft SSO roles (from app_roles in id_token) are properly + extracted and converted from enum to string. + """ + from litellm.proxy._types import LitellmUserRoles + from litellm.proxy.management_endpoints.types import CustomOpenID + from litellm.proxy.management_endpoints.ui_sso import SSOAuthenticationHandler + + result = CustomOpenID( + id="test-user-id", + email="test@example.com", + display_name="Test User", + provider="microsoft", + team_ids=["team-1"], + user_role=LitellmUserRoles.PROXY_ADMIN_VIEW_ONLY, + ) + + parsed = SSOAuthenticationHandler._get_user_email_and_id_from_result( + result=result, + generic_client_id=None, + ) + + assert parsed.get("user_email") == "test@example.com" + assert parsed.get("user_id") == "test-user-id" + assert parsed.get("user_role") == "proxy_admin_viewer" + + @pytest.mark.asyncio async def test_get_user_info_from_db(): """ @@ -2068,6 +2137,7 @@ class TestProcessSSOJWTAccessToken: async def test_get_ui_settings_includes_api_doc_base_url(): """Ensure the UI settings endpoint surfaces the optional API doc override.""" from fastapi import Request + from litellm.proxy.management_endpoints.ui_sso import get_ui_settings mock_request = Request( From 35ab0e109ce415994804ff662abc7469778b2058 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Tue, 18 Nov 2025 16:00:36 -0800 Subject: [PATCH 02/89] [Docs] SSO - Manage User Roles via Azure App Roles (#16796) * add img 2 * add app roles * docs --- docs/my-website/docs/proxy/admin_ui_sso.md | 51 +++++++++++++++++++++ docs/my-website/img/app_role2.png | Bin 0 -> 261882 bytes docs/my-website/img/app_role3.png | Bin 0 -> 178378 bytes docs/my-website/img/app_roles.png | Bin 0 -> 283297 bytes 4 files changed, 51 insertions(+) create mode 100644 docs/my-website/img/app_role2.png create mode 100644 docs/my-website/img/app_role3.png create mode 100644 docs/my-website/img/app_roles.png diff --git a/docs/my-website/docs/proxy/admin_ui_sso.md b/docs/my-website/docs/proxy/admin_ui_sso.md index ae082848b6b..0438c264685 100644 --- a/docs/my-website/docs/proxy/admin_ui_sso.md +++ b/docs/my-website/docs/proxy/admin_ui_sso.md @@ -380,3 +380,54 @@ If you need to inspect the JWT fields received from your SSO provider by LiteLLM Once redirected, you should see a page called "SSO Debug Information". This page displays the JWT fields received from your SSO provider (as shown in the image above) + +## Advanced + +### Manage User Roles via Azure App Roles + +Centralize role management by defining user permissions in Azure Entra ID. LiteLLM will automatically assign roles based on your Azure configuration when users sign in—no need to manually manage roles in LiteLLM. + +#### Step 1: Create App Roles on Azure App Registration + +1. Navigate to your App Registration on https://portal.azure.com/ +2. Go to **App roles** > **Create app role** +3. Configure the app role using one of the [supported LiteLLM roles](./access_control.md#global-proxy-roles): + - **Display name**: Admin Viewer (or your preferred display name) + - **Value**: `proxy_admin_viewer` (must match one of the LiteLLM role values exactly) +4. Click **Apply** to save the role +5. Repeat for each LiteLLM role you want to use + + +**Supported LiteLLM role values** (see [full role documentation](./access_control.md#global-proxy-roles)): +- `proxy_admin` - Full admin access +- `proxy_admin_viewer` - Read-only admin access +- `internal_user` - Can create/view/delete own keys +- `internal_user_viewer` - Can view own keys (read-only) + + + +--- + +#### Step 2: Assign Users to App Roles + +1. Navigate to **Enterprise Applications** on https://portal.azure.com/ +2. Select your LiteLLM application +3. Go to **Users and groups** > **Add user/group** +4. Select the user +5. Under **Select a role**, choose the app role you created (e.g., `proxy_admin_viewer`) +6. Click **Assign** to save + + + +--- + +#### Step 3: Sign in and verify + +1. Sign in to the LiteLLM UI via SSO +2. LiteLLM will automatically extract the app role from the JWT token +3. The user will be assigned the corresponding role (you can verify this in the UI by checking the user profile dropdown) + + + +**Note:** The role from Entra ID will take precedence over any existing role in the LiteLLM database. This ensures your SSO provider is the authoritative source for user roles. + diff --git a/docs/my-website/img/app_role2.png b/docs/my-website/img/app_role2.png new file mode 100644 index 0000000000000000000000000000000000000000..81eaf8f96aec33be1cf0526f1830a967846ae085 GIT binary patch literal 261882 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 Mw&BGRt*dwc7o}^^lK=n! literal 0 HcmV?d00001 diff --git a/docs/my-website/img/app_role3.png b/docs/my-website/img/app_role3.png new file mode 100644 index 0000000000000000000000000000000000000000..e11d73ccc219a6677c21563b18aaa3002faec935 GIT binary patch literal 178378 zcmeFZbyS<*vNsMCC{mz>0>!0JC>Dy8;uI+^1p*{kk>KtwMOsRWmIRj;4-nj~(Bke+ zaS2jf18;iHx%ZrP@A<8D@3;T_*1O(hCC|=&_H3QKXXZ2WBtk5!_GGXJ% zN-1rs-j5}fQo`dtj$-6s!oRQd5&z|nD6W#9GjiCyA4)VI&JuK)${4ysUhnvqWqv7& zM4IX@gkse1a4x3or-wC zy?2Ay!x}G&{0c}BA$sz-bfLAcBKU!|z=%=c`EsVJ9~b4aJVwm;g&*h%2DN{TB{?2n z7BSr`!c-RNGHg@H_x^{67I;iX*kweO!LB0-mpjJ@H@@54B#AHG8;!R}$1$!Z0~ln>iidMA7Va}}uHFrOX@}<=&LYI;*OkjILz`V0d?Ca6{i4z9{Rv~q zgYG*k;dW8I7T<{neYs^i*6tmsUzERO_x{G>O_QszXpUp&1o+X1;f;Lj);r;v%bZn6<_|6>klkw|UorN9C z9wT#`Oulo*pJ|F#`x&EPl;4S>xx3y)YUM=36pp^G00Wj2rmu&r5+u(h?i1HCVw479 zO}O#iF~8$1@2CZ6)H=b&l!ysdVZHGCQ`x`xeV@I&`FHu=$Mh2=4$tg}OoS0jI z4?vgY2Wsx_7*sO;N(r>T9xaRA$8}k1GSyJzTYkyxg-vxJDYo3s5%g@et#Ie|?3(u~ zY)R^g-}~412D`qH=#$=w!2EvS^!_k~P^-TaK#bN1^~Swpy0+7a)_4a$8b2-cZYVsI zr>%c$nR%KW@K}m+jD)&J{c`f+TXAMC=U%k0jC=k^e&;(sgBn`BU(^Cpr^(Cbm|7A* zCZ9%b^s$Y_vzSCbkm2Nf%sPK<_bPg^&Fxc5NbbV zrM#oR!{~u48l2V+E_>427G=_}C+Z;^A+Iy{^&7d6nEp(Q(m} z7yjBOYmpWkoI;O1!`-4(Qj-z}msux|AnJ6jbpJhX54(p*?{T%g=RaX>asyM=R}A zt5<3;%`dC~#`~df+3%CYeG}O9r!d&y<0b676ZsOK{SLg2-cga&Uue)68xH2TG3yYF}LW!qx)Sf~_b_#WVY zky>X`j^Q&W(u}Z^v57@>nXF>F5O2vkFrUTJud1(#f5_U-C$?03wx3vjPnt1|qjZ-Ay&eY;w0vCby!thWP5mwA zjruQ^UwHBONui)nQfXlmwx#<^0&~jqp_8)Av5J*X>f4(VRr;O`u=21uJlSKVXY(Ls zAiYv#iIeC~Use6Ue4u!dO*-;w#9`#w2&<;h7B}dVowUc3yRlkbq%IHYQVrxKl$vD& zq;I5#v-LE^p1yv_1R;j7Lhj~-xde}>UPz690c$lC9E{m*o7&)11^XoXyt`CVRqa>l zm*IY;T2!r2EN!1L1FE{R*&nMK-yN&lF4!hGA>VEoi-s?12g-dNF0u-!d$- z#Cb%Y>V#x1<$oK!Z^Jc~KVmgjn|<(BElYny_}Kbb+D910h{9^pjsIeu(>=aw%QI9o zB39&WSYaHQCHRt4iBsLSPA6?bxHxZy#h!Cl%0A1Z?9^j7eujkVQG4n)2;L**N1~7N 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

9-oUkU0t}}VLtzvB8+XDlAM-ut zU#^3t3iHLS9C@g${R*Jz5ggB5TJWr77gIWHLEN6)mdj;6BtpwjUq2K&T?g4Gjk9!u zvQd4~kiB+S=<^Qm5k_7MT>Ksyerz<+6wxI7(o0$1Yl!cJEA-8&2q1z|EpO0m#U|by z)g@}K&*|k5wXx!GPd$uWiHY+m_HP?ca7V^M{99v4$q})VCpNZzfhqjT{SkX*9JVbg z?v^dM9@ErmXH=B$;!u%fF$o`5+AKuRa}b)482ntr669cMDV@rpL;Sh{Rw*dLg6*&6 z*vod@!q7bQre(H-$Y?~HBLrEOIo7f>8tWFQ1B|$dYivAO5FOjA;v?66szL19x^TQ3 zC% zUhVK`8u|v?Foedp=ls+z3oro@{_T??&C=*`nY~64q!zpvoprccFLXWGxbTB*4nWuZ zYt3)(=Lnw+-l)l=VuwImob{yMV1i&h^n0t-$q&UEQk?_Q;x(@)(!5spT=*qU_+73# ztI9W98xDMo_&i|3T`v%HUS)DaVUO>)aEJ^fiO=?2xR)r@u^Eq85S#_sAh zB|RTGtPe#uuWL2mPH}sO1$#GN-e@lls|X5LnVfFXU{b<%wa>QgD(1ZV|5%J*mvEr% zJ6P_&>Sqy2i7Q~WfCv#2d*&}uS*KQnSWC>jEU%?n1 zFCMvl`?AD*d0t>W4Nmepd=EQ|)3n*948vzTT}i}0!KIDytyv_CKyzaruOeLB65DbC z=*o|dB}u3cU(%E|k#FcaD(|Looi2H-CS-AynDsLcx3Fz{)!nXh8-k@K)Hg80<9s=w zx>;0J#oiTAq9)gYjtVZH0`M@RdCEl8o1^qWp&Wj);!Tl_jzz2m(%oyfJbvmJ4Q^?JH6Oj$#Ctb(-uy2iT>YT?dwH$*?z;{>y*6>4PDAf$>l=ZF{P z=Oy=hAkw+(J&PA+^5wEOItw(@@i@nT2Ri+(gwId~IWmI9^wmO`;*P3Yvj4{ZK>M5f z?%mzG59|A|TnJ0hR@Ai1gl>~A@+T~2Im(K@9RT9TR1WWx@%(mJ^1XoY%WovvPd-YV zWtHP_;DU;%_FiwOD;iD>aORxs5~GC` zYm}MVW!E@MV+#{HPCph7uAFEBN22dTSO643^{31Czfms50s&kbJcu@!9hoWQnH%jA;|{q^Vc zP*(b8&-ac8ZYBALU-C2GeeMX~*2sP%3HE~XEua(@L4C}nNHExbeBePGV;Fv*1An%s z^vJ&TOOLvIz*&DK&s{p0Ik2RsGMmcR1(HGYqY|GuSRQlP{q#ydj(r zOYQ4E`_03=u}EjGGh5EH&5rSI{)qOUn zMw!D1%cMZCiN9de3_e%Xu+&s(X7EB*IR8=A%P#eLnM!oW+m@Kjx#^>d6bIh8 z6RGviG!v}^XW2Vlm8tLY)Sa4e}79aLNAnG+@8||uPeeUw;%1Mrq8r)}}lh&0dtDK}BOm}mc z7O`;W#t!*`&@^dg%Les^k{(ocSDTODMRRdG#&dC}(oZJsy_jU5?QfKtcXa6m)(6dZ zxL1TYS-p~(@88$wK(!oftbDvYp$6p#vEI$By#=PW3aeQRqjk<*m2bwd!P^xx-{&el zsGfSfr}*sDioHT!IUF6}rNi&h*r*k1&@5T4rb<03-5 z|CcNIm#g`+G4`YBJYDukt$cE2csfJ*JvO#6d4!O#hKB!h4=<3-Vzt`!>Q%*=$sm1> z08NL;iF9t9B^GvhzQ8MW$lkO_T&Y^(8RNNG({TK`D2$ShM!tGkyt|z5$|2O&Opu;h z;7!@eks11(1x^)RjphFsR7{KE=K=ZP)+Nz&T3s)833!?JdJk0Ja}eqDLUH(t2|Ti^ zgh_ErIJ*)ie;}?MJu1NhB=5gCp!|x_lSWvnN-)@|*x(GDcFKK+(lpe3p49OSt$29Y_J4GUs!!bp47JaX?MUHIqSZb!sB&+SKg^>C^* z;(->eXMs7eAuGVusrvC~Px|F+7!UE}7S`njOcib%&R*Gp->mHVNBmj)M|T?T+@icMfCn4!k5P8Qg+CyT59lU;f) zV6Q(eU5zwnmp1vdP&x!_Fx1G2ZM!FEM%(IyGKZP0PD*@1CO#qF+{Q5oDBYqmOT5lY z1xe#38@SkH+)_F4*C}M{ zB?d{WiU#+d8o?4@XeQT~E*{(7ua}yw-n@s1F#`z>ceGVg~VyD$==zIEs9J(tc18JNN)xGt0&bw_lJ?Wk*`;B|`)Ag2J zm<}3!L(SK_FVZ~^A^57i*Ef>Po42A(^X!^dTeFY^Zid*ml79SmZqBZjd^5fM{cPyF z+tE$fS)ra+ehE({B9;;{B07bf(&2vxbC)X&3iQ6gKc)~DE%OFK^2zv%cyJ|s%PIor zU5d`x)rciSY0G7JucgBmU6%G;uPMB|UNkGXgAb{_N=i0hDq!5Hi;9rg*{d#hc27-p z+9zjP>P4-YBkv#%LMcB!K^f~*Z}M=8PA+ZGpjPgyY=(cKz`Ej8%c}C*^t}`3jrouL z(iu*Bs5Lo6vq^~0L!^)zv)}AQemslyI3T7%-3C|cM-be7Ofh1{tGo6?rc5I|Dn8vF z9VAjw*?~gwhA95jTFB1FtFF#5SrKnuNvGs|$Q6{%CC46#b&-Fub|k{H##fm$Q~IhW z^Va`~7qfFIxE!P7VSn2?WT3x48s3&7D7Yf?eE1%Cky@0*E%0t=ge|czJKZ}<^Wgbv zp3)%>cI#!3kRjZEgKy=0kwvaPWujNp9I4fM{`%`Vzs#v2I`479+{r<*r!E1B_i2IW z;Zk0Cxk*-dm0Zcir#-lD3gy(5%gm) z#b)rLi7ZUiIZrf8s~+blF36^)x{Jql6B+fobY$CSIah1vY1^o?TIT~WTp#-hP@q9| za_l@-970pi!`n$6lx~!y8rw22JY;h4yEo{^E&}ra>jab`$kpvcUVAI>2n45Ir5|0% z*?lf^B*pg3R`!f%od>FrH}}zpWQ(WV9+IjVfwavH1EdMBI6mm8%Dg)RN1#h)U0H=a zDhj4ex^R6O*PDcWLh#9y7h=a@2FvZS7`FL3Nt{yh1paXn_#8H&2-eOtl@x(2&rwS; z9o{cU;8KRGo=;^?j+q^hj=;Z|_H&-?SG3tT8`+H70rlRGs+xn1Y>pQ!V@oB~y<5d+ zxX<-Ps!Z3zrPTQ{*%Kir>v=*#Tz5VVd(Zm4W6Y%OrMl>4`A;%QrY!M$cSWhu8qQ06 zE5Ns+?hPcAQpZ-{uOd7{sue2tdccdJQR4hCb0LJfu}ooy8IR$+XneN99w|_Z*N(s; zW^$mT%KAqC$z4!L?GR^!N#{Ewombp5almS-@yj5t8>{03X2_$5cPZ@ifi~NH&a>8J zM34hh5`%CEpa=#-$22G@slU->vWt`12W?o}w{etIO*L z;HDQzYbrf;8jvSi`*MB2x?C7CU-qPSNyW|E=#a4i?e=VTHKFw#OHJcZpW;~NrLlLI zjtLnt0c`-$WLF5Sj@usH<#PXM#VkL!YXiKMUPle+%W|bJ$0-Y5g%omlnJGnz$9^Ld z#fU;%3^L8OwL(uKAV;OGXMDJM)k_<4&f}1J`;wvMDwm{xLQY?^%G9}XDPn;JUP=n> z;09Td!CM=@`_m*QX&5px=US@G%8^Nhc+*1Um_m%jl6g(iE>kQi_FT-#;Nh3hB&->F zxLS=$P71QD_}UG+J7H+)9Z;`a>j|6|UAeP>_sTo<(S-<(?pV)SRex?-9}EeqWGx#1 z=3x_kAB}ei0ywc6lRXM`5_RNJ3+LbenjpXozjzxi4CaHU0Y{mSg929Jg5^ZeJwjRj zsNF9FaDnN&Df-|OI=Y(z+(~|76K|Q%Sa*;EgOx4ZzxA4h+G}lGG=T|(@ZEVu`;St? zLxU8& z-92Ce@NVcv5bt=IuT+E#J?hf1}C`mgLmrhd_NYkE!?<8uMVp!F6ukCZQJ@84{5-AO+3-) z{=)m2ap9Z5fY{50Z*N`_1lXx9j&f9n?XS9iT2RDU^84He)9hqtf3&q@AA)&28;vZ!Z==&IK5d-#oa&jI1}UJXQj zjn&yG(4~D-GdVq6QIUSSB+&+i8teM6 z}T_(JvMw5}HfDj9_R-ql;5&DD9kt#pTZ zHdLVwGD1rwuX?|l+(uVBp3mRDa3R2ucZ(tPf^aG*8O0S?HaQhtlzCmeVT-{Maoll# zXU;sv1^3kq5a;Q3#IX;B@?{5m^010#b?9Tv<7Yj%AO=ZI7AI}b%RgF_&KovAu;dJ1#$T6b z;!`gN$Cac;z`1TNg;=*o@GQD!;dTVg%s6@Y_B_^+^+^`oBuyM!2|WpmWTHoqPu{0Y ze+AZUSWoENVId4-QRGght+3l$bl&h{vP%!SJi-_bY_1~o-t;~0JbXA81H4XgOFC_+ zDD7QU;bhk#PJK(k65~yrs#l!P3y--_e{!0EOr!^oz?*F>hL*@~IcMUU7PO(qH!^$nv{rYo5cvGv&?B zGJDRSF{Dw?Xk&UKFuf)Ek@KqooEu4;yKUFj@!EHz3%i&t{u3thYm;En-W-bis;7j) zR;47ibtxXsrJIpfJLfl}qPd97?h%7Z8sry~1&TDradiAld3ao1UZSNbY!oAicyDDg zdYS6N+hb&?o9#ZNee-BPRX)V*4b0ZPcUjrO_L3IcAZYOO8ndCY+1Nt3h1khLLu>6L zXEh%0+6fjskU3}%z+y8arEXk!7TyH3mE1cCgSX2c!%p()jTaja>+)CG=>IG}{Lt>9 z!pjpKDmD&&HTD_ar>yIf=Ja*3g?-z~H23f1ALarB(lxy>3lw}zUaOrZW6`D<)JP<* ziRDOZN~}RNC2l{Yzw#MXBFTeHd&=kPgCq)s+u9N?=jJ37Ku6XU?p<2ymtgoud6f6% zq*BRZcdW@`%`GYVO}xxlyv%Os@5e$(pauNW|6gkPy3PRJy{Z4r`u)SjS*`-RZBB6Q zeH0*QRi%V(5`UMP23IQb17Q3^8{@OV1!Yi4?{ci7c--*hb)@=QjO9@DQ33fjcn@=+ z_IyO{Bh#JA0Le#z{x4s?OZ)v2Bme2|emfA&P>mR3zREnx;bI(21C{ip)SVb=vgPXz zpTPsq)X_fa)ROV^vANO&l9jpA%*e8H2H35&W3}>v;3{+**~H^KjK{0umB!M$f@j{$ zqa$Aay!NsNtWC*S_jW-W`(`3Dfs|X06SE|pLVt|9VHc*j$>>J&W+!@$@N%gtX+B`% zSaf%>y!zlE69ENbdi~KXzk=kf!;+d`wlmCcGQBHIm&8HCY#8L=3X`re!7|xu494bi z;qEZvfXpSD09C%|D`A~2T$9X%s`sKUc%Ofq9vRvjz}$&C?jac`vP+#c2~3b@!{e8x8PWs z5P0lna7C7v1_g)CeqDHK?Ff(FzVfROyE;6m8u6*7I~O@o$+mK_*+WAU+c-{jR7w;* z>4`R6#}8cLIIMT_=W!?QTF7L7o-3Aqskn4bF`Izgz%sJ~J1xBB@W8#^Zwg3pY#(K| z8yog6uI&z|C{nI!gzaCCowrx+xoA1wG@;)T?DfI>`V#K=98GeRHzSikJ=oPxS>`|v zlz5JJS>D^2WV?_rgU-#mQx5PlizEASsH*rL1k_minUz&hH)5QDYO3nasYU{7uAHM9 zVa>$dL_ZJ0OBQqFV@|BgT)PVme4|mZM!C&0qciT}*rw%>ns}$wiTTLkgG-Tuf{DJ! zD_w4QAvtm`n?oG@CWUD=try*;b-t4Ib1jAtX^*bZQD0v-aCP`3b7qMKh33@DmCEYg zeC4jdYOQklgeI%py!^wSZafTHytff3Om*y=4|^(&`nVN}=J7tOW)%>XKrC(4+1Io^ zSfwLK$T?%pr;pTa(kW2S8dU9z5Hl}7JZR|~kk8`;D>OK%7BmUk^!7>ujA^x+6p+{N zXdPO18H(Ztn5!xF84Z;?y!PX%QC%u_HoWXoCl=OU6==z}lnTl#==%;3cm>d=-uO?< zG&i_G85LuTo0@?-bppm-uDMvWXx`lUvq_qSlY+JmBvSMfWhHdi!_>N3_W%Mzy;I!%x}^;KPz&ZSkLFP1pijr3X8Pjq=7~|>izS#?My^YM`{Eo#_RK2 zldqeKRc^3{4>zP}6o^JUl(WkMAN+Q%oD^QzGA&nWRsDZk;SQL3ybj z^1fln4xiU1(l+`+@vb6|lKP`%d2umyQx~qW%$n6JtNa{{hoOdH+Z>UqIv)LL=)4R8 zB;(3wkUOy%gJd)jQs?rUqYYLY0xQ$?(rXez9HNT7O}l(j*-B|ZLyD!)AM#6W84vxx zqH^46dZ!-;6l;Jayje2y-~lh0H19L=7AV@R4W%fdbJ>AKmi)WZQ~0N@y4STSqe%h5 zGySpdPCNCvz#eZ^$GC>qii$fE7kTNFvuyix@H_h@4eQKc5Xjq@?{XLA&(GJH#-+G~ zk?tKD%7o9DIwxAjrTbh;TQ?a-x)i7vo?WzPd-+I*xjS)$C3@a z5r9Qk^D#^gQ*f_mZ@%$nJ6UI9{UK)9@x>F$>aWv-aF1T=n#g%UK77-)EdM#R#%X2I zit~^W{}|lWLb+Uyu90~4KIn>C@*3VMFbb@TuTE{JViuk=M3LOteg*etL_#B#s1PYI zDRM)Kg6q*2P4{_a7~ir-t*+MTA~DH>N-;BW?~?UX6N0>~lL_ zDBAm85{Jd14Ds?pViyNt>>5b~mT6(u{LLX4 zr9#0v$?l%i%pq}qMizCvp}@@%{8lp#Cg}X{(m463JO;QED_OqnNe5hgYoGfP^6d%|Gjioxz_!f5GN8ue-R zai(WcM)F7De71Zp3%X}-cUNzA#VAVPxtZ6ZPF&ZLauL7|zs$H95?;Z{apJ6t4-;xwlNj@Y8bPxYM!hmOCF zP_88vUE#P%ag{r6G1o1{H5jlbR+tpDRc)~}r6OxGr;@O_E_H!dlSd8LK)9mQ#U|cS zW?J)ixu&Ylv!IVp*wvk@ryJ{d(FV`#?awO>*=M$uN_DjPTsMUATxUt~&Mw4u&h|Y> zo_PVNlSbEXJ&yE0Sf=jei)~eFUd3-h zTr4CMbVm=6Y;xP%yj5|1U~VgA<&$xAhJv!;o-#5#x26T^l_HimJ&*ajt{|6_jCR7a z@-MQ&iw+NiB^hGslPAj0KeeIrQ{1;{>7jdFL0<}w1rYdS&KP{zhkFg_UdHI7U{&3S z@(=2`J{y?az3}MAPJQ*%jy-0Fn|4fv(R-S~@_ae^q*NJU<$AyUx9pZtB*`0ew_8H}hTn z^#F|abwv`l&D()SVI;c}mTAk%+!C`L&dQBTZ}s82{?h@}2M2{>~F0B2cmYS|h8bCBZ6F!*ULK^o#?x71uVx&>RpR%Imyqs`H*iAnP#(`<|C05%eH8qwk17M>i;9{ zt)rrTwD!@jsF;9)fV7H$(%m7_-ObPp-7qu=C?Kum(9%f5&@mz%L&E?=O2;tLF~t42 z?mg#y&;7mY-t#^0f4G)w7JNRl_kNydKYQ&KmN&6zMI_oJmOfO!lV4(U-tyu{I`_f3hA%hRcHXTN5;3dZ$!RylW$kJ~p%J zm^O?mKiNQ%Z{g_GzM{)}B*SD#{H0f`Vfz04zYiIH*S}EJ7T4B8mf2aiHs2$lvBNDZ z`iqII$D0&HD?uIDjo-{8mu7#ufw*B>ANw50y`rXGlpTtk_i7gAT-~20M-QfE_`K1) z%g8G6`9k%jR&~(_DVkLy4Zt|_dh{_J5knVO9;NF@+d=n$N?#qyK5CAk2)Z%#m`rWOXL!E=S3@|2t1j#@%`#bWJG50L5s}(O^AqXP+O2i879k`yi)7a5 zGwTv(a8K5&QQt5>*%jcR@u7?rbx$U?+VT;Jksw%DwD{V{yTxkfPkh_ZbyR>CrQ)K@ z!-X)H*i$0X-b{^GzEAxVvJ>{0>Ls8R?AC-LGWZtn^JFF*vNiQX&jeG&OO7F^&gre% z?>X(jwKqdYXv*wryh2O{zx>R1t|UaA`R2Y znKkd)F{utW0@Yi7-nOXYyc*2#+t$koW+wh&&C8CsGqqo|WJKa|fpXIDJMH=Gaw{3! z*0?oWQp&FoeKgy=nj>2ESTevRM~ymbxs!yfdB$ux-D+jlvyHbvzos`G5)r|po{xl* z_5-kr4X{(dLVV!On_ulLI>*`aqJB;Row(R&8%T*lMZ;8VvGew&n-4a?hCGo;=PO`B zVZN%6|E$beh7>XK@+l%FqubaR$|9w(oz0Ugr9r>`1U?*Wb@YFRAS`&LrNixOpqZY( z^2bLL6}ez6cD)+tD5u}*bIgdPsyL+-$r^PH5)e}n=H)l9>o3Zv160g&mOf8+)Aq4< z@)k#u+Dzsoc4Y^zu$)xJC>Jca+g;NkSa5f`E3z9e-Wy}|2G9Xsz(#m%$)-#V#Apr| zG@2jL8Q;|ax5=;I2Qhh2?3Jyw-C^C0gVuFT4$fr$w5+ZdTjxtB>c!8zuWS2mTYe}X!4s%<~$sCvsh*u z?oD^X?Hwz|G`uw!zRZgqq;RS}ySjiW-c*K_4jHckpEgUo1 z4E#hoYaN=yg+1b#sZ{?(=dXJW$H0I2CloAmCIMoR$|&=j)M9%5e%eeTL8>(=rO{Tw zEU(gZ-(}(e>$!#rj*E6#2`;XA7v$|PPrn=vi-=5lQq?LYl~gpy4hfWmX_jasz-|}2 zfyVvCtwYDbZ2ljvgYJd()n2jHC@?5r(5>evY$)g8v{(qNt;VnZ8mLgh@43KII>Vkl zzop@_cAzk%GT?eRLL1wsb>;NO66w32&nIadf@u{|it`w`h3yB_Z5Z@tIxV6*ufn>3 zDnsFeCFv~Ym9k?Ccvck6p%!VtZDSL>-v}Ax{bZ z6Y~8vtOLh7nfpZ;;CXf2zbzKyU&q>VW;?2L030(@ueH78y6FtJG7DB{T`18mOEuKa zX#)rEy7oh_GYuwQ5mTb8vF#^r?7u?;wB48O-6Xujc1Ric*(M%~efgS}R>1jrFv-~M zD8+?iBQZ)9z2nr~-OcHtxmkRQ8A}o;c>LvCtQZTQk#BzbEQ<%QbY6_^I)=AUYB)+I zDj$bT=!x_uCspIDJ_QBHL_UsGL6M|vR6YOmQyns)=D9OH4u2T&jx`*R^zxFtZS*eZ zRrR=8TMEgVE%XH3+*2O+pQ%5M-E-&?F5o3g3T{!+ztW4Q{~dJMy(@Vc<`kn1PAY#D|d&liA`d>C?2M zS#IBgc*LLEj!L%D?DT8u@g9TT8fMURI)o-8&gNR0L6RiOl%_rfPGJwFKB;R_Ty+Tc zmVg6FwlzZ^>nDYQCnJJX58nqGm8tB!JqDj10ES0ncJZ2QC}C)w#Vl4mx2qjuecXRu zZPxx8&e+o#4_~q>p3QE}7%rKa$PyCD-avLc`1U;^&Jt@~Hnn=lqiYznumaC!R5kgC z^Y1kG{?)4Th5)BaTH)d>ud}vR?^Cw`y=>a z75RYCU7Xf$F~38Z{x(WhtzFYaY8U~?=1H-l*Mn)3WoiA&`2+`9)3u(8?{a?C2WA9@ z!sfq4Kdm9|^^{KV8bH&hh4;PAmFl9J_swJ)7CsIqo)PG=H1%CvGQB>`3&36Qi%!sL z89ju>J94fE3(^+s$~8NO9J^5Z~v#P{-y#@~Pf<hb3SjcNT_7ugow$CdmHYIZ=rD^zV2(5#b1C#OX=r4_(SUH~*0H4KrgJ$-=PI}y6R zaMO4mwdl4;yMWG>$V^C;mYloUR=CtX$XsnB1zHXq{uhI?!*j#iPUJfkB{30dxl)*p zK3^C2g<7j2#bLqCb==BL~lQV@&gvX=|*Y_!ebr1Jh;E9D!l9`E%csXK>xD;ZR5XpkSr*DkeW z>8KJEI{um}bn=YY$R?DT*mlbapJD9bCGPcA9mHYt$32USi{WsXJry~2s}kN%KBgkn14R8-cOX@uJF%@2-rKzcaq$34O$2 z*?5_v&%ySjtyxV6HS-fEzRfOwo=aF*ua@~*4DbGJu3P72_8k{*8AFn)Di5m=a~Dg` zqoW4!rhV3eABc-lvJM*WZty%xS)o!)+xhl_r^2+TdD_EF(okG1MZqlgoXgJbP@Vaz zo47RST}g1plb`>6AiI>Eo7KGNtswPY5 z)6S$UU1sRpfgVz1ZL|O2$9F-y zhzyN@Q8(S-19Cm@Iv3AR=NPe%^RlxdDq^aSjVN}dzo^u^4#VLi=edH_sL@FX1(4CZrQqrRPl|_}Ei6YTnE4{S% zUsja2x1{J(Gq%@sWaKu8VqL)b<%Nn@To9IH{@Tbl13Zaq1IY&Q@`;Rvmi2PesQ^|l2I8-s^nIY(5+YJ8V;q4b1Img`5 zIa}R(Qk(U%GuliRqr*mVYumwdjv-d;*nT(V*llWKkb11gLj6)_vBb>n_|^M<1567t z(70&y`1Y^Uyy>5nH9x~Y%~?s+5I4E5uy}U+d0?jW9QkG%juuuU9x4z_2RaF?pY1vJ zKCElX8q?Ev9Q_$HS&>W_xAlW&yuce}u`=9gc-3pgYGaUj)fGva*mw1nu3e?!)zxx?Sac9DmHDoZg#wJ!SJLr zMFqwrmj@-9ZL1LqLl#{8&Fu>U8>%fIr0M?h}sou3Im;42j z_*4??fN+@xMc?#$)O$|V#Y9w@5t%YnfPEk;Ld4)NZZh#vC{At4g4Y|D+1({G)nBFj zo8zAib$xXIej$HIuA3LVvu;Y+=K!lfP49H3-c3)>5Rt@_T5+!}ckxZ*FfeqO)SG>< z!sW8Ag}BV1C@+1YwN0w|>3-OY|G+Z$WIFDC(R9Dn0B4Y0C^Ji|k9%EhTQnKbeKW&Q zmRh6^W-kK?RUNpeA!*+1utMgvj=+}OANUofrAx$;3N3-H5kp9pn4qAUzP1b7a|5fy-`cpv z7BCXU3A7Ej@8S(<-&Icr`IQrs45bK+TQH?D;gL_olOWP&24C6oakx;H8T3>LZ76Wr zhzR{s8&%Y8TI|2{oADXYR?n4=+n1o3ijDX&TaOxLsXb=M3ZUM}a)V$}_y?4D7fYe( z9v8)btkMlH&j-U{IXGow)mN91PAzN>*4<>u9`w9lHtnarXHbnYgZl>E1i!ty?~lk7 zkts+Uv(5oy8Y4!&#pu*zfY7b$vd_dy%F`-Isxuy|AG>&q z@N{1jOdI$PAH)Px7XInLms-Ca^nRvgulFUoFU4XVB%No{qWLBFG@}hKY4rAM!Z~?jt@R`Rz3l&YHT<9S^B}ySck1a{2}}K->yA=# z?9wYs09w2TX(&8xlucp**QWztVo?Mv&(9|R3L!YVBagu z)O@!A6E9I$p{Lz;!*TqiIwHgy>&4fH=*ibY7KK4xg=87&~)$9}ziQZ>x3G z(UBSijwC^tGc#NrMUrw4LWNXF$VZ_}X=LI_53`PlSs1_j_;tFCzC7rdBNShy3R!!Psv%apO|nZ?aN4YvGM-sWpQI4oJPCXm2Z7#2Xf9*W)$r`uF@3Y94`t%4WJCBV7 zpS%SOyHdMtE=#w3BLm87v>rYR8SbAb4$Nz`*Og4-=dquu_8z?Mp%nG7c5j*|LRdbvveOW6izakxNhO+Jc0a$(+dFu+4V;4w!E8t3X;M6a_ z*GMye{~BJMwf$`G&lUZ=9*C(aW`lszn%`xx#nHrVCx%ZN*LG6EjM@7KWF_ijj_liZ zOw^nm%Pna}9Bwc~f>!P5P_@~GwQt!@y3t`IoPx0yvP-9=d_BFF?Ic)mYR2$Ot)6w@ z>&3&%)TbUxlzOy@cj@k$EtH+R4klX$`aL7NpVl2s(rg8*%l*PvlT2Mjomr;jdmPdA zN10k(wIOMGugAY!+>7H;nq)fab=BY7pnUJ1rMWXsm2+a*E^Lv%ir3JoR@0Q8wSMY= zod)wWnAlPFz?PRw?K#a*bg>)LB=^0f4F?<&RwFUWPMgLw4lcAIf8-MTPcIBMS#A69ak zYiovUP24Jeu3+rg8UdTFcQVMSl{#m3H0;uIYQ6f#GumXgVJ=m(CaECa&PcZJZuq-8 zv5#|AKAt{$HGa7502)iLcqxUC@lu_YK&F1)1n^j+W!-}7KvJ7=jdbm_#7QhZ)l1Jg zpRz2^Xy77n?~YR&&?|8q_2UA@+JqNOr@hW6`PMpOl@*Enj^N96DK^-XeP#v61K@I! zi;_W>n|3S@Aj*7+5)x}F62HPFtD*KkK7O8MBZ*GsarkxjVOjmWe3+m2`nk?(f+Is8 z^-X;V&3O0Zl~c@d&8Q8Sb5U~O9!&t_VRY~JJ$jFvjye&`?X0T9iV!7oz9UEnwXZ(z zLO?9$wDq@r<3&WI-y)AAwO2iy#6z*BMYGs&Mrq(Hoq{D&gy7hp_<`Sf-y0js83hKd zPU3l$9>7-3I%2!fV#C}qC4{-sfn3S>@+dLoO8Y;dK$Yr^nw6(43vT*xfzv77{5;{~ zj?%&hvkJ7Y`E)cQ^ZEmgd?Z9Upm0Mqh>*-3T@(Z7>b%zgd~GD;H1a{KrnBquhoB*; z?xq&e4l+K4$KXgQ-ij;9a0;c6iC9FJ`v6 z9VtoQ6fdfXVPBzz#Cwi?xz0t1iFxgk+OAGf8b_I%{csF5bI4xAVi=&}KW*;WYz1*C zl*LwWQ14@+NR53!%9t5MAhIDvbCY{JV=18UeUkslEaFkg1U;j5z;Sf_T7x;hr-Fak z>0;GlmsDw*!&K+69j!q?`uJFYjE>F3g0*whLx!`BxlY?$sN4hVDAPBloVgJCqB8bA z3o%ZdvTU0c@+^IlSPI+IqDFHSJ)2IQR0q3#&yGPqlckpF7rPHh6*qqfxVnTE*Z$Ol z$AWAZb{o9i0#-bp!;iPXbMj@0p=5lA+9BY}BDhxMO@e&dCMJ%u_;lFL;yRfR_ZlrK zpzhnus_r&mj&ABAlIj0ttQl9tL`x@(?>YBbFOYJ1S&Af7srg4s7kn%jq`3Y4@-AcM zV|isq;$lO)M{jk7=_sER*J~K_QN_$~ImOUE{k%ej&j9vMAJTJQpa({$Zgr{3ZoCUM z)Cd-$33bpFTQ9SnAB2m|1rUEzP7jWFLdfx-gr+ji-pvC1C1vYCKz`K%FaVfOqFXFG z@SrIaKd@j9|NLwv=JUDeZc+I`S8{5QI87Tdl*2s9(0P=Y<4ar&jmvb9{*3yhMUCKo z!waTxd~1?8BEeI@lXYpcF_{d0FL<4o$?0(MSg63s7jqt1?H!p=xed&J9=Odu2RgMi zr&>8P?h|36zpp!DSxuu4S5 zG3!HatQbl7%AqE>VwWj9vpz~QH50Nm1UAyFI+>K`Erv4~X|{LjEYIUF1j_yP~S}QIzenKqe&*hVT1dJUPVeFGLAo9bR?wzBcwR-lD2oweo zLi(Tfr0)U=WIDUezFA4$aB5{D-t6$EZA0Aq_ww>d)5wEX(a^`f>Y-x$?t^<{Z5!Pe zwRXs_fRAE6)@HrZQDo?kKLinL<7buO`5ADZj8}#I8KM6iO;u@ZSn07bPY@0cHmJ2t ztRHVU67;?-wz^8;J(;&U)rG?{LZW|fU8&vZtuT4-&8H5q2@E?mCinH`&Nv$au98t# z@x>BL@z>@vVKn}>l74&wLsuWQ;wU@Vw$PLXAB|x-qNe4YtO6pJx0~kiX-|B)oxAd zZ5T4vSPi>KoQQru9gk#f?QXj;nlc6>GB-AasGHzUb}LaeY}KbOh`1stuIa7Tf)zE8 z{bH*_t);@}2>n0JCbj_p0e7Qc*Gq@I7*P8i-?wcA+cMf-yiVu5U0ka8t*Vw#&!!qY z^NX}m`o)Gmw_~^>O;z%s?J0iGKA=3Ugx(9nRN5d@`1sJa zRu-OhPC*pM`5+cYnZURJ`jk@=US5#3b_y~W6DDxGxUK8un8~7V-c*u|LhbrJ*$@$2 z`3$PzD!q~eTkb^S!<8IiIQ!#Q#F1H5cp@=5>o~Xl`AFyuwDmcPOCCPbPDQGVO|E`0 z9b3xcQ$Uv~CrJA)uuU3J?rsE!<}O3<3W?@BbGY}^+|uR-9>3wjn?#!kZOit6(6c8+ z9xbW|-=~tlAA3HuXIyF)VI|VZfB2l@<-e|2{`c^*YS07g6DA#C0(dtyzno`hYBREX zV6$q)L7Iiw!Lr$1*eh_9nV(U8G$%NsBX-NShkT+U`Q$_6?Bljm$mqSv-24H#jMD7> zXq%*r3{R0CVAuZP;aJPR)F|c;3wA18*XtZ7zvusH5H;Skn+6!t=puDoq`2Nn(adS1 zfEj!nm9-;~$oRHu7pn`H3tyGXT8ywq4vW@=Mft6ZaV&p}s5;8mD}ohGztz)p z_w4Uupbt}+L^4}=c+Q$e+ig!)P}JDybf!kK3HL-4r&m!Yw;c%@G&rlxTIoU=V#TFA zd;&M!uJebY{jLzYv>zfLsa;xdL?2u{CauZO>c@?=H^PcmMwfmg+c^?+gMK~2Zhb5- zL}3V8H+EWI>p3>=Z%_M6Y#1@;PUxvvbjed*LP^w119d<9B1xCG{?#WMm7lOEc$h5 zRYe8N9IRX>9}6}4lt@_i5zzWk=choFg&6ayLKt&6&hr(e^K?UB6HkAP{LamhZiesv z2}Cj=YiWK$-kPnJ@6tP6iu_`doLzTv0j8hhG;Wr*wrG~>vg_8e$i)#CNj)Om&6u<5 z%DUnCS?!yz+W8zLhytn zrFrfImq-trvnO}v$gIhiA@E%g4?%?)!4Iie+W(WNt6X@{u&W0QPg1BQf=66&*fzLO z_jGclJg35s5hio1UG9ud~#F6j--Bm>i=#}3(aGy4~b>K}=p zcrJJ;L#%5+?$dQz3Aw?UUz3Dz@#BD=>KlZx!M-GwvDngqHD6g7)PUOi_hMDld)p(_ z>Z18C9x5ie6Xx3Sv7Yb`oahX{Cq@pQi)fmIUp29xBRq4YhA}G=m`MEm+GFtx^B6&9 z2S0~<+}Ay!b7>F<>q{E{OTAf-0)j30?<3VMKQrOxwC-;kP1rt${7-qo_Zc|d;~B#n zmS+c%>f;5`Ym=l|u$+fh6}3hceLF@gWXH2LRf=ForPijjUYYenx3h2enqC^0urtN; zE0DqMIE|&ctO7=T>?x=A-!)z(-LiSQ=`9}+s>OZylS^W}+yhj4dXIRFSmy#X!-w{f zolWks;%}5uyRxt9U9UCPEDhXnAr6l6@^jXoV!SG~BD9+K-l=t6U0!2SSFIZD!N9lg z%EiC~r2h;nM*;S~1x%}NHdpjy2&NekDKP(WA>`|+C$Wd<%~4!bmO#BDXo4}pf4{M3 zY%hb{i4#oxh``rNm6;jQaJn6s2@9^B{>vkknGXP;}E5pQhaseyHBU}4wK}=)_!?-xDVxZKb%jUEK#?c z=Y{ z!q4v}UGP+LR1ydcQP6Crl}seIHs^hwzM=_ zkA|1CgeHlkpX*LpJcM4NoqgM3xVe&ysZ{2j$uzR3CFS9;nYvn=dBXw~^0zE$Jj$?G za7rroHB+(S)qhPj) z5!Ju3a$}9=6gQ6ct=L4Jl*lPDW#`c*M?Xx6>B}pc1`PgNeVDVXfh$uWnRBz>{+7@K zoUO|h$8Drc8^^F(rf}mGqC7wgseG{PD?xaN#5xQva`53X_BTskCQIZ_MdF+IE;^P7 zT&2NG-YMJQm(7LFGGyIyTLYNk4|ZcGmLNZaKCuZ z_DiMI`Xp6gyhr+R`9b&5-Xx-}fJgUDRgSoRR=`nG%h{Y5(VeenJ=W4?e7Is(nITBR zJ0s`Vd=HUJkMxPl`m{m2@xjwdToXENYI3josL3T>qM|Rl-Ul?XeK#T}s=*jz|DlC| z6-)2U>t?zzHlYKdrLX_k1)#q!X=G)E6-l4o&ye%g*UOu<6B874>ot|JX-d?5h8T1& zmxm$PiNt)}lX|i8eT@mMT4Q%K0$4BF$hH=5&!+_h+Ny4pU17U0!k=oLlk*mYzU!1Q z*A&E51%)rSBNiNwb%kI~mN%^wM?XXeMd3)58nu9{u6sGq7eq|;3x2Ivr>s?{L!I5; z=+9^rYLBG@Ybm#S&ZNO$LXhrYtUN;36z_!~QxtW=KQdReOtU(C=BVYu+MsK_V6jmg2;_IG5(TbEtUN z_pV^)-gOtQu1%blElpK(GA;z{S#FHuc8_TvJ7s>~F=@Q2`mjX%f1@jQb*Y@)@V zO=vhRBg;J^cO(J7n6RqVKLN}URzQzE>9n>nuSV8YG{bBwj9vbbK>l`E;g(RPT)Aq zf34b&-}1v4pZZcmyHuanZtBvu#y^qgmOG#-E2%j{^{urz{ShRLx-YtdJ_iKDuBlIk zGYmyom|OgTKwnJ5sO$UOh_V<^p8DVP-g{3kyUVU^D^S{jArJn40 zZ7XQT^}=RXvGcEI^%o7{^H+l0XN?W`_bN>T#Xs0c;Y^gAdsA3f0`(1`T0hmf5%lh zxjpOnWO0P!e13KCRih~M?Wp&`gIoG?&fY$hd!Y zJ7?%9jxg%wy8&Evn|E6J2|*#(Z&O7SLTbirhhY4y>+k*%Q>-3A=4s&GphgvPT;olp zj~}S<&K}&kzH>WyaAVCxFu(Ib{Qa}45Wia@ZLPkhQu~MWLa|#*F%0Y)m;0$Jyc@Y$ zr|7Z4ZS)lShn*}$%<-e~0AizRCiJZQfnEDw`Db|7x9>M}(*%B8;R(_;!>N``{t^+` zBw6Qc7;t(Alo1yAe(^r$wq|?oQ;>*H%xE=U##U$Wbe_9U~ zJ`IDKp0IoUHX-A*kd27Z!R~~-D|=QoO7<^z%KrIx{r6*E|M**<$Rcqb1lJ55SdaU( z)d;6+;=ywRjf-{I(43&j5)Fx6TD%R#$~Vzv)g1LAB@HB(C$J@Eo)A8xywT?6BD`=iKKtapT(!cDWRp{k$ZHe1+X3#S zX$<^omq9b2E*dA3=2HO>a`*R=a8T<#<;A*t^(eWcNK`D6@cGjeEdsU%YT?+C6{Y7d zNHFB-Dj;-B2p8_K#IRl@Uzrd-5wPFaR{@<%)%u}qiMxFnEb;rX2y*FSi~aNm(eq8m z4L;-DF+V&-va{5=olaCn#)9HTCW%IU7o~FB!z)%r=OoX^#kz#q#J9?v7TX9jc}nEs z=?_LE2xb-#sXR3bc)!M~P1=Lwu8mBP+2SF)khXuGJNvh8qd8aIpL5wcwh3U|FdO0) zlcoRXsZUn5pt)mAqJ|7)U^H4I{R7@0M-X?=Um5Q{Bs@CWf92frfu?4Hx@o?faYo-{ zUb$#r+_Vd2o7_Yby?Z$Z{y5EUb{cybP-|`e(eAB#w2eUh2WjQGc*r$h;fhS>&;Bh2w{CNzLDrKW| z;Ee~tGbb`brIF1To#9dY$>Vo)4M*UI%Fhh%=(n=IjK^vpd7-1)^6wS*6mNV}(?9W( zbWPlSbN(Iww^AI(_dC{~L{!M#*9e9VaB5nznFBoo|I+sAX2Bb?1uB>%`9>D4$P@u3 z{|hxWwXX~+nMYn;lth06**f<<@bWx_uPUb#N&nZkm=wp`;95b#=6whZ*8VK*v;0o` zV}0@k^T=fKK7%H75Ot7q#t(L(_qhSP!a)&ugq(Or^bE<2{kR9yG3{4(!l3j{4WyXd zorPsD1w6=D6KM83+LAn2K}5N%X$8+Byx*eE7g1L@WUjEfQVXqVx&0vOv3q@p(xgG^ zGGxIdzTWo+Lbd7PDMshZfdRXCGz6|-6!lZWiY%}1X1sjc3r6izPa2PBrD z-P{_M#kC1U&$1uWh+akomvZacjTb28+yWVGAuF;5v&0q+L>LsVx&>WV!~H460)(Zo z{60rTRKTEM6pfhC_Czslt?lGj8^8^NAYD6%5!#Ex#Uq!kFltqI4*=eT`?|i$_p>Y- z|4ii!PK@odzmZ`7`6B)#8_tw>qC|O#&E3)Te=)>a_OU9d#()l!*3)qeYICC7!lHk3 z?9|C*i?C1m)w=m8AZbUC_@fR%0v_K)3^^u$)Gevk@y zY{N?JMvlns9xK#sq1s#r;|zHu45V-gD@VZlAd`Cw9o%<9?o ztjz2)z{PH-{J7kA!pBod?eivYz^&l#r> zf|PP)v75gCYMvE%?TxHg%ayKn+ZcL{t$F&-Z2K<{_J2&^|2@429Wll=U$=g(SQ~$( z=Q?|K7tgfP<#E$vu;f7!Z-#od1p8FGeH916EUl`i!gx7qm$q^;pti;~<>NewA!AHN zk2Wllid5Iuz@&x>ywjBYj)n@1Y_Y7IXAXAT#BEkH!0~U*7YY3V@l2mxzapJ0@9@B{ zpXgJfxmq;P5Bs4x`+RzpB?K+FAnG1ahPr_vO05^)nP*S(Zjl}WJNu8snkSg`n;dIw z?xGO<*eq5wExV2h%(1El<-bjO2!~XbwMPeivN@>x#Ejl;6F^AMQ%@%k(LA?KF35Z< z820QtHgC1WN5zDO?1<@>emjG5jn%n=S9W5cf%-8Rk@^|DaM1tr)1zSXtQ%2cZQ8M;IC&Qx~2b#*DMnR>af~{4flfJQHvyZJNKX zpg0bsBD9V+#^s%HXm?zwe3!NKqFGExl>Z&Wgju!aOe!ld>t4@Y7Q_;iF9P98&QMN< zR65yE43dIyPsw&yS#T84W>~Lz9Jf1ZgS_Z$RIoyGjuP~>=M1%a&XseYUQWimukWNFCL(M*;=-d;DxbsZvGv=1X2HsUO?;EE$@z{Ve{CYkb~6c%EUta zeNMQYBHB5fm)?!;ngSIe2U@FcfKMaJOwL}g7Atlwi{>VS%r&^ItU|3aU3$dqrz^R9 zjOPAg{I_cFf4zWz{*VfjoAH_eeGh!6A*7Knx)i7Ft56D4 zdBabS(H|x7n=1?}Z4zp!WOos63^>2Q1`(ue)P&*rPd`Uf@SPkNq^busx^48|CJw@kPq- zW*MwbEQ`1@?#XtJ*HwwGN0J_{tT`OiPe+qWT3jPvFrX<6Yj+&YoCuLmI3x8q%v;01 zzkBlq%D|qB%V!CFgV2rqia{QYkTg3o@@l^w z>54g}|DC$49*d;5%2qI83mRd}kQ?ry_N+{fsjAX8@+1nUqko~`PR2~0o=?XP*YkbFR2Ul5}Dy1zv^WQ&pGfRa<-k{6aGqeen!yo1?jPnY1$apJQT9LO(LAr1QVL z7~vCgg1@8+X7aI5<8}C&A>=6!<+R+D;0nqZuJ${3Z9HF3n`iw~j<#lNOAJ&>bB0lM z4yaP|FR!HXfKSe$U+%iOv>475>3b*aPhAU7nrn0mQ?W#P?oPjiU!9~qV>Q%e)GT_T zR|Afoj+OpTA;ee0UUgW^W=Qal{5Q@4xjLL5oa5=0IDe?o3wHt|3ys|mi0B)9^7;Yx z3_6_DF-C9elZgei;K9aBN-*#nQ45su&4o^LnRGNcuZitQwzztgnbg*3ZrBlK(Kz68 zUuN{fYbswXy1u#U2D^AOmwr0u7HgNqW0z!?#clJ|j-bL?nmuD2<#cueR0+AoHvfF} ze0kukFoQ3%1FEj}mQ4LTB(1Zv^CN)(!wxwmU`1y+q+3(gTj0h86U}sJE z{GUP^D|`@smURzL_%K3r_}am!nUzP^9{3X16-$KSe`PZkH9(rw{wWeYG=Y>~*9INA zjRP*W7;F~XS_e}&I_%8;#s&3%q?~^~qPUNL-O@MZ|9to2qlW^-1JKs`PUHsgf$*wp z7ZohTeE>un!>=PE24#0N66BdtQV2WfW5|*%H*B;&DXd@cQCJAP@h>*0FQ4;3f;b)L z_|H$_H|TldK825N>RI?gwJ#&vEz91_YIb^xBq zZu)HCYVVi2@*v&g?Ma2oiv5)y6ffT9Sd^|2Fx3@hck{c0fKDNa8PaOn5t>7Qw}-tv z90pEAMpr}7`o+NU2)=~B5q#;lZ#m}q;j2Ok|D{m!596q9cn5AlJU2MQ9uASbL57qYj8P$DC!fvY}Z?W zrD_d6QXcz3D{=#4-DdaPn~Sp{Wiz6zrfzfHo#r^d*r{-+!L1Ovxjba$AJ{1ocdTeR zh^S{wUF&DM&qr;$=to&3+y1ib8~dwvccumfL2p=|kJZV-r@c>RtTNuV z>%A;3{ZGLzfVH09y+87>`Yfafz#g^Xx>mFN|F=pNzO$Ew;>paF2QupXphlsxhew%W z3VVB*9Z5mWTVQ5RFl~9mvJ^acKpLpc7U-*wlz$eO9glJjB@T3+3Ly}E1EeycjxSb==zgXO_xLCZzM;w5 z10Xi0j}04L<$!>fsLOZHcV7PamdbVLqQanFS@inMyb-(CoNrL?IMoakDpw!~27uBL zFm$q`WLRM&Lh*VsTl_XEuU+M$rKhXQ8}vTuda3LStxQBrUMIWIK@=qMj zT>udS0x>Ndmd`Yj^V&bJc3Aomhka!ybE9kO10%jCXinL5MFyv#1EL|0Eq#7 zt03(U@sd-De_0322FWi3U>&w5isOZkCp3875;6TZxS`AOBF^No~{v097BY=82^mL67a}3jhd6vB2zSVR9|@1_0tM zv*=IgtMfG`=W}G9g#$IlC>}Hf<&ptXj)2W*&L_OtgL_{-xm)}VNc(@VZ$JrMk=go~ zJ_N0>cGiXmT;&1EA*bJ&vydtmXsZd=%4VO_^t{Gy2JdOxrXP9SO7tXas??TZw{*&0 zX(~6nRe!=;2tK0ReI=T&zkV@bXB`N|!V;^G5u|?40!qoBAOC#B*08?N>Kh3jVpPuy zUmeOYI9Nw80r;%ZI_bNc7PbG8T3?nJJfltWGa)aq83yH44|syl3nnUzjRF5LO*M9a zwRx~?X9vCDi}Bc5P6TS4EU-?F4k#7NX{${;L66ewqGUjSKXe)5VK zZ~6x?2#uv9T~*10IK2P44gkV{Uf4_Tam$DL_5^7F^?g1Ej+$XgYV~ zM3GwVDv9C5wtoOa#YxR2vJ7rc9T7XxpuI9+~80$4n1r$BG0Mg6ZdQK> z&#f`Ks%04MKgs9cFXiWIcOZx^)yzb*OTFU!G$*(-(l0&&o+%I&73ZypYhXgptr z)EuSotb7IQj8$8YzM{yh1pr0!UM(u|@W>K)u1`-jt1aY^Z5}(?I;T3^y?=1mHNAlt zz%ecXd8*E+&F?(CU9V}Brqfa=D~#O-M18waudM^6AUY@zsZvYRr@d6<5s{pHT z6lwXBL`MIrl?}c7@L60*c~d|B=#Nrhtg;W#QFeXuHUwB%l}|8>PBi+bz&6I}=|<{+ zGgD-#UgMkp1DyShha>mMQ2myE>eF5(APZOPRke8BsNXK-p6;UQTw5%^1zLvIx%&b< zVRe8F{wxFgJ{d?qO%h&5qcWiRN1HBq8%19Mkjr-ne4|10#*LQ;1M}OJrXBX|@pkNq zay(mW7YR-}NQR(i<$&sNrL<9M)Z}i%ciQB!vpOV%NdO8=|F5n{ zP&3$J%;Y6Ys*QX|KfPj#3D)m)-qRK3P~SK5O#*cDTOOdC_VM6*<56ImfU|E@LOw^< zWc<$AEx&(0T9z0>HG%K>0-0^@`VS0F>l?K5+Ac24185Y)V-{v}a<=G;5gA1mWH#eE zh@4ED8+kUaB^emb8{15NPkeM|+#7bZIV$l74`IMNh%`P=aR;DyRAE#2U2*^>Dh0G| zS^v-|VSuGL8Uk$A@PAj-EP@8Vq_MS40mTE6k$`J!Q&0jBrH>Xr5AInt4iyk)J{@@U zdrWkT?!`c0i~exJ+jzVS@9Xo8`2v8pG+Z>6TYpeJ-J7?(JllupkPGL<0=&5&$eX*6 z3bN||i?r{IimFYvRs<9gP@i<^@(DgH3!!ocbkmGz*RvIe+J7_Fh2takF-)4%DOSA3S~`G4HZY1s@Eg@%;Gt z*H1dN0@WzM5`(GZ$<4i|GNnVdpN=$}M`{J!C!x0@#Iu9nTp*<|rd*G=NXko1PDT_! z7eW)>0(b)>GTE6^omZMe^v6H&{u@I5C)EG{`BP#gx;x_-sE`GSAjq?Mjk+FA#C^1h zLoO7Wy^lNHRRiQ*V!1-EraCniHw+(c94crJ4 z7FuM)Xk0m#_BXn(M9JvHy|9|_E(Q#EhJ!)wd*q|1Z{8Z*R+}!lZ5A~!*cbs=^>p#p z;Vi^h9!3q?oGi~$NE6W%a^6j$y(QoI`Lak8TBLXOaU5v=`H!Cp;e8{nW_lm9DE}Fb zTGD>^9H3myz|gF@XsD?KlF&1_OF&(rSq~7<%t2VZ?d|Q|aqQa9_y7%)<7!vb)AMdW z(RXPg%*p)LRfh7hEU~m_8=*|K5>ydX!i+CpzT|_(n$WO<>Z<+kerIqp1MDE`=K6A` zA8^mGD+Kyl&p?-`0)2Cdf|w3cGwW2B5i=`4Yjz_4ACTpLJ7D!=EM?azowl2`+Mm@4 z#dZt11KmWw6(WJZ6(TNHdT95XTJTY6;KcC->px+~CPCtRH$^b?*YIxCGgH#;<8FnZ zff%JFmD>#BY^|q5MH=LxvD1B;PpB6#QYCT~5?}j;N3)Vw=V+EItMDW+R~o878!M<| zMBSX2HA-}X^Tsl&*3;Yu!r%a4)VWq*0VsMBkN5xfS^mXaRA#b~#WKUA7D-qr`c?n# zaqIwQ6?pD5G%O6rmH{|q7_s{oDAYMJ^}|l!KMzq&((J!|@uL*S4~^lRH8BBJ3;a9#K5K+vTs7C@V7K>AIm=Z2uI$faeohhkQJaP5gCOA7!f?9Mk?DsLq{3N=g892X=E>QmGFWTn;r^Ht312nPS z{~^2i{ZedxVBQ-7+K9Kw{$q#mms4=n0mRdj8|Ib&14{n=4HhJE9%eZHSefGdza7lz z3y{NdU8!{8{PWBBcW&T6u4_{OA*}>bvKy-Re>+&$9zaeSpXEgo{R^Z06ZgOemqEgN zJRsV%@jtiS-=~XQ1bB;{JtaD(KleQT@nrt?8=0KUW`IoG!D4h5`-ro`}kI$?Y_cTuEAcmW~&gfA*TbRsCez2M(I51Qfz0NoF*B z|F{o2k9`1&x+iGzV^By~i~=Ci;FfU;;_9t8z-)WU;XtHb5D?Qben{kUDGcIh?KI|J=1R2f)hLN_ z+x40acQfvCypN6bzmbZ5W9<4LvL|>FqhB*qp^m~JdKl{T9 znra>jcmUJ)5=5RFZ3U_1=4pDXceSm%8Lw4z|zulwcA zZ7r3&LC56+RW@rNG5=wF*m2Ok{&cPi``7|56nn%f;jMn*0T$r;bA~^X)6|x4FUe)> z@=CKkgv6;6ImT;09&K##Z0%GR$G37oTD_P|&t-y2DqGG6<2)x9C%ZPclZ23jgd|@+ zcqW`m*u<|ToLV$(srHz%&a+rnwaDQ3cwx@G$fq(+o6|L^3MpKpyVh$dE(entZqESzH)z-EFwP2Md#Dbp zmtQ|A0cB|!pD(pe7>^}6j{MZ8>W=4+n0do+eg9!btYc zinm8_JLI-M-SPRTwqt@fK2oH0AwYIpD~QT(qQM&BnP>Ax<>loE zb1P4FiLG}hU{10|?Ype-n0AN<|R2LC{p0ZOHZvI*^#<<9n9xoa|VNaU(0i z;iC%->_CzesUv9LlRui*uaj)tKaJR?jAe~gdNENl=Vo;MwIAY)^2~o<5~^D85d<*_ zOG%aU+gn~*+7^=|<|L19|BS4nVnl8-!;6iAmZE`?+Z(2Bh`!mz62x<$w~{qSK2|}E zvHa_?h5SH@;Ou#S5|p<4R&oC5`tW>tR5^e{!J;6G84~BpClzep%enTm-L)8 z8@^4!uQ~vHOWLnP3L3Ybd^S^s0_wXrJSFFSg2XWgt36+x?U7Mw$%dT~y}_}K)Apm5 zW=SOMqGUi<$RV_~{LgiTcuOSRdo3fAj4Kt=+jJY&V z^3|S39`lUUbw;EEgYLcb8d3$=o7co9bQqiwPEx*3Uai1_DaMfak}^etdFR0I9J)F; z$9=5333Uy3P&I1cjTtF?8bNv#{@a&-B@i!Q-2xErdg{jc6Qc_d1*ad^h1QtOycd(cZ!6!(&82%4`Z40&uw33 z3_G@IR)$}lzU~{ZHAdoVTKkUFjjRS&fyOv^t2a+>M^snUsK|U9Kyj8c-rMm)d9t+1 zV4tiba*wsa+w9JBo>{NYF?QGbbZOBp`*<^I>FAew1b8%z=r0$>nzin+R*jib7A^-t zujo7+8a>WhQ@fv7q*BF6s6D8mMO zm7{H^0FjfuTd*{0R!p;;PSXHG$^R`=`@8r1ukdJro@nw3R9Ni^Y$WLwRFcO+N2bF= zSoZ`a{#-_(Np*lya29-oF}w-&j3g(d;tn`C6NH=93v!HC?bIq+4$6 zIWAdmn=JP#LCh5 zAMX=)F+tY{;-?Vk$L7^_r;B9K{YKy|=bf=fFs6y0q@WjSUl26F>I;IMFIr;PpKN@a ze(p8g9KYMqh70nlOfE6>=E!Eb-f&cjtp^6sS+OVc<7+B`S1Y=OPFi}cnJ#oT&XmMx z%%OgB&Zq3)+S&$*0$sP0Zq(XWtQ$5h@`vkKrkfcxhhC5;16Qv=$O&t^L-QPy${w)p zo!(uKJsf~A7-lm+#k&Y}KbS96hP*D{>j!(Z{X|8J@K3x0$>2511Dn6Xd@No_@ zVX)9?3{PHymUbj;8}4iV{Ozml+zS;tc)S4Ps`MHY6Q|&7GrbrIV^zQ2y5O3qK>jw~z=iQ93$uFB``WIIoII$d@q)pxpFb6%`IW%VUt47q zBF6yLX&eBRWRY=U*#H3y88Ev4_;QD53hGwszCZS{+e=d{U%AGYBL1VaUn$QW?>H`F z`R*|d$4F&H?I!G)L?kegb|$0Pc^<8BbJA7c!FXdZ-?o0InljesPW5UzbbR=qQcUx6{~kn`H5O^$4y$4$5GCXu+^H5%Stnx!G6t* z-w6n{bgwK^g)3}l2C^aUtK?5EfK~R#xt{ea4e$&2af3%~cSvc&Q^ST-%NdZzvWNL- zL6BRC7R+o3;?B;0TWe>!%Epi^@eq$woE^kS!pXUw6wjfzxYbYIJ|l`g&}Q7&@}A2r z%{xV(`r=@-ex86kftl)S9pm8GH*?dwlQr@@UE8Guv#V?OOCMApGH!ZFq4w4s>fd1( zJ6s>x*!%&L|3~`vFaIIi>o#7?h1uj!%qI|_7_Tc_*|5L_R7Y@Pq(5aA@!!_aBIhl# zh`*4A^(UjDx}{o`zO!~J*35b(p(}k+tvbXyia_IFvQam6*TWZ{OAq)t@_YDA^tA3L zg=ElF!x~jfKF)(~=|WwB4niMchH0H5x2<31iHEI9vWl&Ie+1x#BCLjE56_xR6^h|c z^z6SCUnf>eeh!REsm3$cdVJvNCB4}7o9hJJvwc1up5`5LRr_3NDEQnD>X1Sm-)QzJ zLR>%|=D0&SZJLGSuB5m*iY$m+U`v&{Gf=WQ+^z_7>E+W9AC`Nd?$0~kvEZ1?hhFMR;=c7dKzaCq2xFl}DXZbK)-$Hh> z+=FI2FR`i4(%^S`!XMVJUbT>ScKr4D^OTj_$!>f=gD3iCT~F60j{l>$hPcSyJL@qM z3t<;7v6$kSPb^6<*|PxWyl;Avj`^pnjI=oz?ZLzqQomiSu23Z;5yIhMGd{VmV%$?9 zxT|WgytHyQOa#{D);iv%PJg5y(rvO33*1LHHP|l&ZC#`TAZ)|i)S~qgi^(ahx;k4XoT^}6B}0Ez_y@Tc>F;fls0DxmgmqJ+%^05r?wU!7#~x2>?f#wW+e`gWD<&Eb84&1b_>AR8Dh0~S!A|BB@WCJ4HlzNR)ig@xd#5>+#J?T@A_VxW z^xG#9|DLV=jgFAOCVLJlD#Pm=xy9~5%&Pv@z~E$ZHJ~TOk!v@b^5XFA>#5y2p|_n* z?7D0Bc2Vdsv?P)rabuC?$VX_f>nJ7(_Sm6#Fv^@A+Uh&tr~%#zFAZ4{Xttb|G@Cf-Ap zq9D0QF({Tk0C&1i9`sPj;JQK-Z5-qke$cVn7u8?*l?`eX1i+B~;L{oocgtOonwDhc zI#0EDd=3eVo>0MqiMy!ijSaKI^A~S;p7*e(PQ#80OzUR%FF7Wh`(QEBG~KbHmnXFx zNlyx2&1pe^dB;^&V_S}V-j>}XX9{{@ig8o)jL8YuX6BmZpNn~3OhMF(!wK3xj~3+5 z<>~>bZ(&QTCKn+}hYTv-MlVaW-6|f*k!R$4rVAs=h%HH{#>f9l^z%7lu(_z{iV&x= zzdQC*-zg~At`LVM5I;3Kw(#BL$#f-DHhkO1p*pCNDS@_VaXmevw_7DI=WUc3vmVE$ zFgB&AlU5wNFxd3D244s zHv)U6ZBmWf5E12ERatwPifldjqr0YM9e3`czdIuN6Hfyb*4{CXZ4<bkk*UDv`#feH@1&S>n%> zc2iF7o^q{Kes~@wo}zoj^5pVC{pqOXnyAX?6q80AhaP)*xves-7byRIgQeZvlxNhv zEAXyBt)upVGZUWpTr@+7?0#lIYcl7?g}yz1!C14fX#maJIJQLTh;wBZ@zHhFbnSZK z`1udp3Oxe|=Valrj>!_B6IRyd?)07@pXDqY(8S5(OxJ5EUg&Ra`uF(#-{Jd!g2bJ& zmJso`tThX4)^2B%<~5*3PsMzVysyazmoDNx)0IBB2CN!I4+&FpQk}LR=xiqqUZo0` zE0--8gH`%U=47$WTn;zA>lxjA#0XjQ`i>u7TpIM>d-ZqG--y=2j4Zcg?zZh*Djjl> zl}N$M%X@qv;jHPq%JADivhUaKC-2rHTgFc4F}J5fC1N(7cbZ*yEuL9;Io6xUxB_>4wSbpT z0-2Y7=e9O^lUj~4mOa%wv7OJo21I>1x3%QsOZSr`A-+^R6AyB8DMiU$b@CIRiiXii zu!@ROP~!fTnAp_$G`2-_(0q6Q!!F=*qH7)L5vdYN#+?H(CFraO;>e!ZJ3h?7&2+v% zHJk?SC^x=xsyR(NBk+vs*qI}0L?KIhpQZ+{h5ibwBEGlHMb_haG1WyJde4E~Vz+32 z;%>~1K1X{@?&$61hGdRpKCt4!#z8WTR>|hnYG%XZFQaQ#yOjs0GN@R>_7Fz%C9A8A zQESV}cd4K4I@vwy*S_`EU!K4{j%sV66&5oh2IAzLo<51twQiV-iQIPi#O=TM%o{Pyh+>w9D(=I)bZMnb4-9_{d=1AuFc z-+t-NW$E9R2v=1v)_S!IhkHS;H*IY1ZKNhQBnz;%GmTctYctQ+SOs^c_TGj&F`)%n z0n~L!-lzkvDUUGfjXTz%9>7Yy3_K4pn!iey9y}c*L%Y1`1f+6u=im{xnbU42YA!OV zXFJ^HTb4jrlL|hueREfm=?|pw-!f2+SGVyX_c=k4>U|~k%B4;tWGRe}w$^8L`I-|H zQd^1)^_l!thJ6rL35%G=UTup$&uss;tcL4vHo#DHk3Uq`YSV2EVjW%C7+s0k} z8^8-Z+3$#PC6c$Ng1$BmhDLCVp^^di>y`js#({5z7LUbq4M%et+k|;cQ8zyOu+k}MpR0ZTCqn~aTNAd1aU9xK zcN*6?b&O`T_^iyVdrH#B}YPqKkPo5I6-vXtm|Y78u9E&2FXZbY$#`B3k_x+(SQ-;`G+Me zo>HADn z8EQQ`LtC-4fE=>2fTUh6?vFR!+n3O8K9FZTF#t^2j=8K z%WCODBrs8>2L1j3=E0h@K8kyEVY{!aX}UJ!MH|`ls?_R0E;%l2705X!udQY)+OaMG zlqGwx*1h8xtDZec5KuBa-Q)fM1p0QQZQ>} zBT8irW0;8XKDy#OGVTMXy&`L>ydib{oepHFSnPsP;}hQDn*%NWy1i{g&BsXre^dA2 ziWaW~y?IXED!Go(WVXC_X>ptlN zWfCmcN;oe>VN*tS6vFyRS0^(jm!kYD#RRJ~5qRGLRa4I5hiq`cWQ=V-Mb~r8hxZ;; z|4tKRzMP+WAtFWLr@$7SKcsO*c$e{gxcXq!0YE^Qn>@eLG#36PkUFT~tv7+nORJfxR zlX&0d2cCNtXW#af3*V3g1qVa2dcTJg{3I83ik@{ntfYfd3%aT@VnM0DKmQzM~q#D zObU)q!QAQAJVeR{41wL2JZm%EPKW-o+yEuMy4qVymsBr%r>5k^?YE1oy``N2{JIci zzak?`>CdUc(neIVobNKuwbJ5?4N@_g2KLzT_HZ1_*9-CL*6Ux_0iuU$m9;mmzUevgc~x3?%m593Vlp$GFy*d(VhYFGOn9Y%A+BaL=4kP@)7V zh_b0Mpi{9a5qD$mV*?rp+Y9q>aNNmSI2X{%B;B~)6U)j@aI?y1PFa`L8zlwodQZUu z_vO5o-MW4^h;9p-JnYHvvA@Wm^_J+t1PXX8Iy9lC4@>zVpOtL<+6oOXSLqzDLY(Xfug?8Q?~N-K-bN@K zSqpNT_QwEgO0<9p@|q{xI65M3Z(>Gp{%~gkQa&_ZpwHkouV2UG87bLvGvoVH302@3 zeJ(Lz%x!NRvoSY^i($Ga_*;?AaUtw;DV)L>4BEwVuEC49k>*xC_nRcWxe6JrhFILy zP%_UkoQVT}6O#evz<%~cQXjj(mm4})ZW?cT#YnHJC&Ttx!YIa13b?G+2&zESM&9h| zJYvG&9W6E8bY||gTGypWhb)4r?N5!JDZu!UtZdc%zLA}t6lJ*6f+YHZquu7!C*C`4 zKu*(DcP_sYamQ;ii~W6uw`!sCuu-Eq%9pi8Ns4nr?`)Zqs}s}cs=+j(jXH$aS?OEc z!K%Ex@ZlYOMSB_O-a&bdb}M#_V4hZG&j{3w>D>M7v1aAx)N6@!1~<}8TVp13sw!TjF23LI4U#+ct>Ik#9jON#+k5)1UZB@5?W z(}s9yGJ9>KTd7M;RthwWgB>gpl5$B$ZBfDD$uG>~u1tIzs!)^WaAH<1)dKbWPs++L zm~-+s9x$Te4wvzT4v-p!QHt1f)snKRzb5A|F!cQN+2D>YeVDKrm#+uEaTS|(!}Qhg zQkfZc*8Q~->iUufdgar@`P|Yc*HS$PY8J*J=X6H^OQ4(~;Yn1XqU`E`vb?j_LcqdX z3QVvqo^k4Njxqg)J-69##H&6k0-HFgl~XSPaS}BoGioaA4T+=0hA5We@~<0gh;)2o z&AHcWpbY~?Nx%6&ZGzI-PgR_{4I^TlhyACnr>x6fHTx^veybJdhFWfi^*Oh{FB-3I zIdX}7(MZ3GYJB>NWf!4Hn%q6Q)|J~oV^u}%F)vTbY0}`eB`2?Ul1!%OG2xz03F*wZ z{8(oOj1F(?-Yro=6=pm2pXnKyEfXGIi_cxX1h1Fqo?O2}-06wqU!~V_z<##e zW@?}{jt2oxCA#)h+Pw6?`LORt&{(m4+5|wq{@O5LYK8%T+~FP(F30U&(^l(;A!6}| zq-=!s+>s3vs{=9eaAR7wgluDL$OC7F0Gi( zup>r6vovJ)TEviiT!{lJVzoCmih53HN>8=nyfMOR;u8Ca;5;CXZ|ia>lY!M}ZTlQ( zq(_|~Zh3_FeCI{!&I!pcN@8t)Y{(943UEaz?F=L5vzv59Pu*Ko~3 zSCT{2T5J?Pst%UAc?m~1DO=Exkud?KS2JqynZeE^^D$3SD?_o6B-&+wYt;^?5~SCy zt%zAultfA7ULuUdl-{KX&1h~lKFR6RbvwQ;{v6wT9r*SS==cYz|JRJ&o<2jff@esM z+rT_B4%^aPI~&4n0=qJ}X?P4&n8RxxPC@IIKO=H$`pt40vnWsJ91dZN7n#k#K9rjL zh;8A$D9ib3HIt-9`OT+w03&`L3Opu=rqq-L7nuUT*If|Q#LuOUOf0qjl?EzJm#|{= z?@E}IVs8+|+V6Deb=^tZOiAy>nh+r#+ktOwZc;`{!J74$tNn0Z`r~I2V*4pb&xxkS zpaISCSqFzr$QU>jDbWr>WleRo$Y1j9``9ebL~BnV1F5NaBtYa>;X4JI6(zg&fi))i zX)a>-dxh-#dr!r$R&u-3In#B9^TV`HS&ot82L<3w0?0_m_F57w*JK_`oZZ%=Lb+IO z!!cs|-zpQ{tz*BlQL@0BRC|4*eK~CrRN+}p zj8VZ6XBvI@*Nl9D@;;@2jT|3XK>u{;r+!rv|AZ+yjJ>6*wC18YU#niF&oQUyHq)b@H4oi zStl^>DltR{{hewJ<20{-?lI5%W>)eAUV~rG$^idy?s-G6Y39p!#n2IYZgBQd&}r#Q zTLzvN;`{iquTd#6O9G;Bdewxe?!{Rcf#s0Dm*35YPs2;AC;LO!uqlb>=#vD5b1!nu z*9-6a0a@jErvdlLa3D(7=EKRnhgTPLuu-4A-quwn*otxTEe&-2<~aev%gxvJqV@E! zw2lZOUZ3!#9!J2X8#A+l%SV?CvSG0{_d_osWK@d#`wll*F>;xVh{qOP5A(+~&OUL> zUC+PGS&Dy7yYl^*x5}uSMYGbR{#UW?Xai|h<{h%0OX1v;%NFs@9AHR28KjiQ#~Gl; zKaqIRsy@TTGu!ZR)SxKJn<1bPqX+sfDs<~lWA{*0)@e`I$nIQ-Wv*sVl>%yT%UE}j z?c_+5hQ~aAqWG^(!_{D3yTMfcX}Xs$;gSu56~oD=5;mUJyXA;?m0l@_dp6s{fqvMgFH|_h>Yv*JyG*YnHEg!?usB zSpuN3c{h=l4EIjn_Fn?HiD>uAWB_F5Spyl`IsCP$QsODbLN1Y+%iVHgQ!wbVK#)OU zX`=X*V_Z&mu5d>TAPXZ86U?!qCHbPE<+I1y|D#w7?BwEI;j-f-pQdn)50K5`nw zDg?9Ti{eTM<8zKq;&pq~<#{Z4VK_yuX+k}5R4qB3*3P*h$=J}Q!SU>u?$73&aR;f`X&e{ptrRGs#c_yk^Yr^i#W@BB%O1s>yxQ?Ia z;lo0t))C@?$KW}_y0s6Fsi21ncBHtcg>$sR`Y$n}Inx4`mU-lOc0vu`nVc!7dUnQ~ zEI=y|9$s=#B;??c53PokQw=P}D-gP7v07{VZo2@@l}45}P+Q;NJB(mk=z6Hhz%|hg zJbSyz#4DHOeWJ>jHgarxsteYyA=Yl;jW6V}T6|KRNl;g`Z!o)92*vP}k)nR-uZQiLaTa z8h{jocjE04%!h})Z#~X!w|dwF>zHx6+&;eMjdeVXrQQu>URwAOdcr>eD4EH5e-aVy z<&xqld{PC%+U(=4p*@Tx8mk?2VY*3y1$QV!MkEJ?|b zQvO7P`jIkEGZQu|>+x*;x88Bs@teqJb!Mc+bey8h&JVsQ9DS)^<->GnDokc~+rO!v9I#AfTtvyL& zJ{eFTht2-bx~*LFv7+djcijE42xDHK;~9;YokVa#6I6}_n%$Z;_$BZt3dd;A7YghF z1AA_Q6d}g_CfxkRy6|CaPP6y@UN^_z>Sw+>e@%B6Yr!&I9ZXl6t^ylyeIu@DY(fth zg^qY<+AinG0`%6!PTKIutda2W0%!f+>AG~|WJWMd{HzZf@bb8+!j)W8 zw)c~kHLdPgIQ0D-j>(QaZ+CTYXrW&gi44_?~CCOH;FO>y9d7Hh^@}aK@F~!O1^BUCd4S1G0#%iPAS1yNo8%mp0)Nw5g2r?e>2D-AP==2D^{DsG>VHFTO;stebmt4)JQHi zVB%eHd8*PhgTMvvFUe_610&6%)F7T8Zu4p9XKb zN+$N=f9j#T;Z||#sq@q3)#a5bzjNe;@i{rsc7rrya;Q!aiN{U-LQ&nhoxGoGW%ie0 zdWgw2Hqcm0a&k_?>jc@j49$(nOG*8W0>zWF(kyntt5`@?oZj5LM9S-CO~t-cQ01UG z5%Kxqk}=<{w|dFxfJE(T>59?$asD~=aC5##{jRvpi>1b7uO!1umtn5UL?ypRoT{<_ z^rJTYyyIAe9qHN(YplHW}eWz&+57~W@ZUpk(41HSjGOD<^uk< z9>?_EA#9=dV9nMGs_?=a`@eWVPpt|bqpy4oNJ>dQ|KbhAgTuypUSEU7ehaMTWy7FO&~bMP zgBUSm{-BwxRmjOs=M0SFdPftIGFR#6x&z1`oW7U733Y~VOxF|_GN}jM54j*{3@QwV z&&`%Wy=!EFoq(bCnuT@eN9WbMNrfvH7H;3L-!Z5s@moA3%us`?k74RkBq8ry=h(Ko z-i$@MzO*myohcP(a@FljL50wDS8Gvtx?+6EWzq%r>i# zCCFXK_67ki`Lh?ZvpD^|1;^M4Dmj-CE=Q(4!Kp|-76n6~`!K0*OfbGmLOI;e`#;9FudY$J z&Cp_4FOX2pbQP8oR5q)V`$7U<3K!<4tJ`6x|070dA0^SO z4P9>p#cy`9Ung5a;0xGIPY;l6SM#B^m2D-a5V=lMyJ`AO4TY)MRer~KVMEim4AY#aCr(X zow3bZ$v&#DO0F;)AHpB~egqJMT!#(j6BE{xmcG%waAp<2J2Ji?xn>xZIz`YK%jqR} zXQq>tIs_h`8G1!g3S#)IkuRtZ&ZZvbXdsC2Zsy9lJFv{GUYd{d{$!iJqDOUi(mXh4 zh`q7fK&N?jV^?0+dK$j<9%myei=Dj8x>>Tjavn9_s;Jrhaz*0dSq}^oZWX=hs^{BN zyWFs^9;m~f|AI6WUU^FN>7uj~1#@i3ekZ}bsr&8pnp;#0uP2n(X9je>ypRq7Uo)Pf zf*RhGG*-c3Qyl!@Y5FNUqe|4vQ-rg8*Qwo8d!`9~#Ce;^;vwQ#?r!dy+lnQqRL`AP zsN0JleR&|v_f}+OWnfuO4uLoxQno0)tqyV$#~X0H2zs^4h;`9`M%Lo-ZE%;5dLiqT zcHH0%de{ARro_Cj4z-f_NH-0{El%p?{F;u!Eo(dyM+uW-{`I)m5y>XpU(-*Z z+C27g@zRA~%3I7|USlObbvv=#MRl9o-n!sNMKc8Fw5#^{{GmK}#ynJ|#+}G-=n(Be zZv`+V>Y2+&N#6nWN20}5$#-4&=`?cWAi<(MIDulyb)v8iy%rLcTWM8Vf2Eo^Q-_z1 z@6lh#SWCHo4i5s$Z>JpFe>9l6iZRbEssW)Ss51KjO*{#z&ic%d$GQ|j!qQBI?+er8FlAxw?h`0iS6>Pe6 z@_z6aaDs|{!l^qDdPviYS^o%mYa~wTnw+&v*Z$vPL=zUtWEJ~B_AB1aYz1@bzO+@U z_r0WoMlJqQc4vbzYrcb%Xj7EPLe}$n{u{=JgvxaFG5+(y{`1*5!QS68>A&4XrIX;Y zWYSB&dW~5=^s2dpmK1aIo~gSO2^3>WfyNJ>m9j%4Bg(YNWI?O zo%K1KeM%|Jk~aFw9<3ooV#++B1}nik-q2UluFCGVkXP(~%EV-m^VkjdUW$O@n<|6T z=tq)l#+0Y0I~=6<0+Bkh{(G-*?(XNLVDVkCQeMeF4i=DSCU_XmSob^@3peTmS$?5S zz)O4%)brQ+(+gN9;^>P!%XQY9#hH(jV>54eMo~y2(@&yveHN{l#XxuZ6nNY*+ghvOQ4Ly3Eu?H%q z^v00NvtFK%k&0%=bT<>s`s@iu4?QwJi&%KJi$0@{#OvT5K`atn`>6#a0w)_w{tLkdtko zlg6HwlwZfOqR|bwcls^}`h}7?|Kie~n_ZE_%=QWVeShLH*vG9M?Dv$~<$W-JnAfXs zsM6B-c;d1*(#QlmJ<1+YBcC}HC6S`uUsr-dF>*4fWShiS4d>2Hj=`>RfGb{O(g_fZuEY@ZbTvyeLkmrvQB@Dy0$l@=Cn~drEMv18G8bc=5VS-{hT@&HI-VF?v( z$mHUtmNH>`N5^QIhs>|tkr8l#dC8ywv(xxe`>g#MXAWpiSlOfeXFQoT#pxj4l;CU4 zU&vihj6r*;Dlw^s!Sb)A4O}7qpS6yD5B%}vu*CGPu^r6^)BNPdtq_6V^tJ_Tmx}5- zx<|#bK%zp*A!}h{?He7E;>O+#9s|+QDyn3WYyIRbbC0(*XBRm&Z8m-ls(u!Mythb+j?T5+6aUIfc(@#nK6y+wT;pEOL}ql~v~4of_Ye{jQ$NkY zaZ^B?kpJZE$JYx^gO}}8&qA&!+uibCJH5l7dpqWF(g_O6>Q-4F!d-q-ue)eT zs}3$1usuw&S%*^+$qVz)(~vf>E=kGHKax+^ApKe{5t;=6#hx;}ldJl#jZzFaw?|U% z$*()hPae9rG$WRMdD2;@kzo2+IYpd`%)=QwT@4M>7{n?i)e*w9^j^Hgy^0E>DD1yp z*?;G!4}|Hxjj{Sv`W;cTc^Jzqf< zM2+8uOBA`cp6O_O517gXBZQcYWEvm?K2tyX8Zs$f`NWrQh9_ApUSIgD4NP%eY@4f#XC% zsct#On@`Oofq8l7r-9P(B8_F$M=3wO(t|wvaKaT-*?D?LTw1DCW`ws7+6MUa-6GzH zKKxl0>A0MWUg_}tc5y8A)4tP*Q5u)bf2NO*E?dZHse;9fw}EfRw)UX~bBl)48W-8^ zo80x_!xk*%piD8Q8c-j}y$WJb&J<$6rSaJ^<-sTME#m3v3>@6yQyPJSV4g;uGxqw^ z6IRKTEHZzn&6zk|+mdTLiGb!o_{WR7&(hMK0q)?7i!Y>ZSJ;s~3r!>EbA%^R=Pf!k z`-uh|?sbas(r=LKp)QB<$rdGRdf`DDqi_FuhyKl<-wAwLGz#Me1&3MxcKN&|u;^^A z{C{u*P2&OR=xd)liNxfeHy~=%@kwb>8b+|hMCn3s!M%7w`yafIncwNHUA$_r!RYQ| zd-=7`eS(FQxA;mQZ)dbx#@2NEg$mR}@&1FoA5wwgvDIkdVebG{w)?KvtEOfbedl(I z`!}sJYCfc#b!no`IJzVp?9-nf`Q+u@b#a4_Hv2uArsth2lD*^V)`B*>?$~iS>w2j+ z>BvqOHGU0^9Y@2%Zce?F3f@uhTjv&9g~W8hbKKS;kYlg`U%)+tB@ez#`zE6Loo!lT z5nJoI>`WlsLNQ5bQ?1)@@TRrE%(tBg-iqI~Qh2| zt@478YWZ!3?joiSXe6#UD@nC&7M@Orx-RM09-qBmbRd(@8%!hf*v+Npw|cbdQ<#21$nVcvpS&8Z5qIiOZHGUj`GTf#bY+CFZKWQZ_re^*yc5hTk| zwo!z}FY!*C?o#Sjy1? z*bgw>*4}G7EtSa8@Ae@BDi^o7vr0EN^wGvyz54Cy$_nwOYUTD!x_`o9^|RyQUpOlZ zpR6U=HJ(M-ayBaF;p$(_@KD1l^ z`wG<}KAQ)~0_&n+y^(EJ(9aKJ%+RWZ5XN-(?p#Xq^`0}P%DcoK!H-ATb$KWFW3iTg z96%Q&U;a1<>hO0#go^As+d88q1TrYJ(-&-^R&hTJZfYv{~G`PFSr;M=)F1C z16!XJ!2QGRHt8zRvLfSbmWFFwzPM=okjAa=10QeAbg>G0afC#x9EEckd$@qognp zx{IHM!O&`NX^jA^5LJPX5)T(pQuVdYnfa*tH+ba!U02(omULG`?6*#AoMSnRbRIrY zgSZiHYcRAf*&+29!F&>Z_=@9$owJe#PF;`BGwkj&J2F>c!C*$KT zNY22rC;Z)}qzF#b3nE))N7h4Aqduy3l;NO9-Z=ZKL_ zo60|lsPWkOl)AvFQeFEjDRH7AT))y!5tpLxSa0MCfUgXq@%a~QZ7TF4Oa9S3H4zV6 z1Q_b-@87REn^RrGBvmd)E^IIb4*O4Zu=HEVE(FpJ@g6n|6}hgsf*f=hx12yO}P8iKoR+}(qFu;37aySuxy6Wrb1 z-QBsB>63G2rl)(-{k!+u{Z@NZyC`|;Fw z$0T_m26iE~w(;H5=A1%M&^WDS$&M*4R$c-&h*mv`<^$R6<1kDoM^M^LQCO&{q&ccl_q^s?n*7eh(^8#>~HIvIdl?0N$x^g!dZ1g zD50D}KzrNq(`TN%@r#%>(r^Uyg*RfvlW!ybJ*|x{gkzhTvxk2Xu4x)^qMti zRB0tZ53g6(c(4{V0|&{EJ6HTRX<|@IeZV`k+S6j4Zd@B;WlO6>COi~9rUkq6L7{W4 zrMVGdie_QnZM9v+$62tCg!uwyAf-}fV3bEMNrn1}8!ntpl+_BS!Jyn&+-5cy%)CjM@nxSI(2)CYCJ#mZ(>Y-|9y1Q~L%~Sd3?U2;m?4|7m ztE!<28!ZES^Bpc(tgWLrAEL#IFvA>$`vWj8317s9`HC%ET3j5&&E%%iN7&Bj60I{L zX%W&Z7MVtRmKL4*(W_6%u61WtZLoJHWlA=4{HVYQrfpHJD)=05(U>}!fQjjEjCZ3{ zbesMCVJpn@R`P0|R^>#`YfJGp;bjMjb?)ZFYG}!^s#?u~Tyg~v?Uhffpi~xpJS;a_ z(y1}xI8IO z&PqK|8=vFAde)pc);nv_OGXLOAC4bWiHf%g=820D0l0#) z&sUZeGruq=W0olUhwJCB(qJibpV@^9xV#N&{wA2}p7O!nl~YEWPm#lgDfsdF?hBO^ z?&(+g^aEKC7vus*ZEkYo6*{NSJr!1e4uVkx5Zn5iTFTndK|Wk+HYqF6^2#5(hI&M# zPUNB5GMG!fX_Xx3<{IUbV=<*4=N%FrGbpOGsvh@pMrFqC*xL7pjGSLuAha-GLFXYB z;<6T$PMXZ-(Fvu1`Dol$g*vXT_M{wYYDQ0VA381Ci7}XcwZ-A-=~;WC!?9@}ya@0w zKik#R#n>f>rLsvr-2<7?_6{}}bf}hMj5xP4ytn3$X!UR|hxge`cHIx-X_gkBP%j3B zHPfP(ien7Ql~;X5_@AV%wkN$D_7{cs)vEv})0x&nl^N4gYhrsiLT}Z>LTN~L^n>vn zR+ZNLlIbn;rBSASayYLBU)vX?v;^j)4S`E$Ps?E?W)V)#xjrMN#0rzZ zxWwD59lGSbX?K%SkPKn;5!Q5u35k!xVM&SIO6SJC(aqbNYnO=TWc>0%`C`?_@hnm9 zAe13C#K#uRrl1BpQ{f-PPwn|dT-x^5npBn~>b*7nya7EDK)$`Uh_x$5-^bdbz5Rxx@yoAy+^*J4D`TgM%_#7>9mEE8+>o_A%{V4X zu?1)zIcR+;OjysCibFWz3o!XYai_BNx(2(Aw98R;?Ds}BlQ{Vh=s{V90pIAm+WU+; z>yYuVQ@;B_z2N0s$TgHFS&$40qI1qt>Awdk&u!j|_)3yrmx2*xvn(8XF( z1at&GILP#;$3O*xQ*ho#fwtSrHSXU$LmW;Fa*l>B6P=O|+zNRP8O)h}h=b zkagCWz3&`y&s_(;ZmB&?E&e1CNj4Od3Z0T-Ich(d^qjnQ;|%Hbe7J|&1F{Bo#**|V zT@EblIWblcL$J>(=gbiJk#dXS@o`;s%rBAX&$ab;HhLofXKDiuTf^sXViKPa>DQ!h z!dpW-c>IvhE%FQ{1z8E#_A1KD(Smah+P!;Uh&9EKK#{V`?dz+TR&^;Bs*dcHPG-@A zrE*C887Vla!yo4&$ZEW~=M*Y)ST#$Duvq3WX!?h2>#{k4FS}j_FwNOJsr|7TUtT_0k}rn%2z@|Cs*@hLygDP&DtC%r5Ca{*GniGc z4nc1UNb$iQU6TBz-vgnrb~`NmYfc9J-Ie)@ES zQs<+#nZ}n!!TR=Cq$fF{h66aS0?4Wi{IX{>wmWR3f$TkA5iiK_U}%e`*RYM`&FA;V zA%qUz9XP3`CE`a$G%zP~N}a(*;U>qs+s=lhCY zd+_qjgG${s=kucbdw>5uXg)EW@DlvM4sM!$y^}1j&kSHR&h>?<%F59Xhk}A?qFzKp zs5E)&+a&YfVJ?p-yI3~!SI&2uNafNDN|rVSvY4)av{YC)Kj{DqxY8QVaH&6v%IxUw zlD%$yo3Iod(ItH30x}`XR}TAkcC9NxK7`wnwwtuk7X9v*P*B%$m1GUhVSXlS7jVLlHsm-XG488^^>EuIa9ABz+V+T&NNMvHt`B}b-x*v-!t*9+#fcHS*C?&9P}6QqkgFC@ zm~S>32|Z&IYntn~YO;>tu2d4Xs`(#gnby-=&gT*?PPtdF)SSDbPgu-BYW;;qBaF$Y0a$tF9d zfo%Tcg?k34zy#UoU;tOvS=kF`VRx%yS&M2 zA9BMcdIpMvXjo%Q&lRUrrbucn^n{frmFy_Vlmn^|5NvT+iariK4f#PrN(5I<5k~3?Q{cHKlQ~s^a&6|O zB#vANsA^CE&f?hnY%qCt%yx)JYNBB02$%lZ;cyFS2l-nW^L<4NblvyZ^uFOCVG)C5 zJUl7m4F>4dgDDUG9o|zIJ5A&Hf@XlJYra76abE-#WtkjnlU1f-;(-^prpJzZ<%>eD z!`B2YkhcavVJl56YMt8NI3QgNb@_Dil;+i(AG8Uf$8+GTHZHo-&@M$gn7~O zRC53qIU|X~`o_UoHp60XQz5&6Ihm7C633QSWuFKyThr-KbY&MKLqYj!KX2n`i}r|+ zlgGpd`x7sN-5c(=ohEq9>PeLEhGPelg0uQ1lH(%xj+v3L2Gxsw87BbATE7yw;&1XT zD7|%r@?CC2Do%Q|izj{MHmmqUlrqI0585kXSFfPqAX4+;;E^z{CSs+Mc+}Fk5f{E7 zyMA@K+RtL41zz-IHaP$C!&Y{G{IBM|d^D`|;k%Q?KoqJbBFr$?*XhvP`efO;FclO~ z{8D@o(c-Q*b$AYV<4uY~8Do%i9b6 z-o7z+tnm_!V3(|Aq7gfAGDl5htCWXfwG9uIYJZ0;L!sx=;Vf~yp>i&@ zvhUuvI3u9k0+hyOKEy93T2BNuLkF$iNfS>l=c~;Z|9rOAjK8GBuTcf-)mJhf{46IA zFb2A?N$cwYwx)K*cdHSw>$ckJon6dkbu!dH&O@v>8B^4pQ}oCiM@akwT~!q=1|iYZ z)NprdG8f5Zd#^50SLC{-!hXh^#i|R&Yn7F&@yS8Pv!ZY(yHm&!bVfAu=jdTt7IRGK ztp({(k%@%}RvbY?WDc+j0*+6Kav9cq>vsltG@b6UaPrN~Tp_{M<{z|;rum)0_`YN6 zjzrzeVVvwoxZy(Vn~v7CuWIX;hf2SGeRjgdn%zZ!|DlCP6GoA{V~d+piXe?8Jj&x^wuA@|E^zi^>eyqG4E`4XlfYEJ8uD=de7g-wmavBh!@Zr)4Lh*^;OK%xVVWK1!;J{ z{Ec7HR=%_-sOuw_*I*BMJ9-wyyxC=0eGBSImL)VjkIvF&>Gm?L6}W()nsKNxSF{8l2#kuOz;2mDblZqWAX^j@s&^ z@nS>1OO|&(7FZYc3=Wd9Dl3;eX&pV&DalnY&wCi%0O=A%_&2JR&&KWTSq=^L_h$vi zmWq@ImZA`rJDRlV>ZcjE#%yQF3fQ4?S0>lZ|Cc+w@Hi&7cJr z7TzA*e2+7@>5xAtE?n2QTlz}lyL`Y>@KwFasN;v%;Orr@Feh@owGsf54dWbeRhWbF zIo6;oAjwblo}m1=x1&R7u)c%apY*4}IuIJTMcBbVnI!+FRhbP*M8J`p`gf56W3d+{I9|Nn5g>+ay| z8kJFlk0m)-qV><|=q6WV_kwGks^30jl$b!$u+h{>p#16uKoz(h;HsmHR%{lvlX4WQ zuBN6|fR3g=(s8_MD2~NeDN@2Fzqmh@&7_rVts2$?5C*elE$dfix7 ze6yxi4%dRiO`)Cu$W8vKfHZ1Y*(ao<)8i@&@{BGHNfj0c21+#P5fY*Uh^s@*#-~el z{I2ut`vS|B3WGF8tf_r*x;;$Rbv)%(*GAhb4-PaB^#+1dH(fm8 zun*ldSmsz{n|l1A;McKyYdkjU9FUHm7U>td2Wkyv39U#&zqOEvJ;m^p?yD=O46!4! zi;sax&s;@kQaK5Q3a1{$rNiCY*SA_nGP^MQ$I~?NnJtpa^ou&(mtXzebnxfA@b?>O zc2IAIsqlHL{#y(?uN?}D_AX2+IVcJWEwW@R4fa+f0;SRZ10JtnV(no@|2d7yVwS9r zm;^#B666(+*MOSiC=OB8a@>1Yh)}$fuNeMif@3?C5miP@MD{Jlqh*iH$m;~n0{wSa z+o8?RW9?5yF%vjF>$%R(r8md&PzCe(eK-^p132l`L((%*$#<4QIrZx^BL(xJ_8gZ_ zt;PNt7k^D)|3I0^`*~3Xc0las#edCHkx_#B!h8SBo$U;O^%QZj(L3JZ@KH*{+0iMs@FgVXpaA1Pvf6_lrez^ zDbG@O`Tb>IszOdqDn(z;+N=P_F%bX0Fc3{9?cxUzSc)8qFpW-#_jsBcNB2s(#A|A5 zO!40We&ZoGq++2`cCDso*exK;+#eL~Q$3wIR5v#+k-?Q?-0lN) zY{1hVgE~DurC3n~a%(h5&8VqQF^Cb79hEE4Oxl|TpPfB6+tMF>p%xXBLOpa&o=TOiG{N*E(T27u;5ML?jQfjF$K^T93Kg^p?>ESesdqpDBz%&=bbv! zzxjjT+3o+I>Hmv+%9o91e6ZM@=p^_%FaPiE!>59h#{^l-Zo4_G7tT$_Dn;@;I@j;+ zlU4;q70Opwl{QT9cdzc>FMhxMO$a<+nt=pV*Y6C*-`z(>0#Y$p1$pA|6XeXyOgpZB zbF+K-$Hd4;K@}C1ijw4Hd=)jpQe_(JJgEO`Z}kmST6euLfgiwpmC5`Vx{gIis8v*` zTK_3~*6{A~pu^Nh>~~N9AI}?q9>E3DdU&*w!rt`yc%>qIcvuF9*TXIUuCmGp0QITN zVjTSLQ~izSB*ym)NtN`oqQV5X>m`a6fB>Z}py~xyng3h=;}8N8#dzU4D{Aa-T=}23 z;D6b$HiA=VX3Q;qWt7Zl6vi#*U`GyTUUFxT=1x=Z%g>IY1Z2-qFj0xx{>X zD&dYf^u?n6L5`;28RJApfP|;7K>>(8p(up2Uuk5 z2M5KQCg?pqJ*Q0obFP_1P2v#g9N_bf04%bAp&`B9(QHI_fK3c@asByD+iL+}U?E1m zeD&@#K;hy8ZY!0{m;dB%{I7Q9|F}b*IaG!1CkkP6Jo5~lNUI`QRV2Vb&Jva9iC7qi zFA-XzxhbmBSd>4owY8-b4@hS#04bw>q+&7faL>QE1ieE?Sebg&XV zD;qX$9?jDwIZzNwpUi=qAMeE$9Y+j}b%?*OaO;e!%`@BT&3BcBSb&Cyt2*>fv}Q#j zVqu9%ao&6#6cF%^y~+LVQWm(qCIGHTLLv5SrFm;VJY}A}FL$dJQH;R8Lz2Mi~<@Ta3 zSEginOyJ23k*7^$rdT7OwsaKjp{#XBweHCFi};&S8U^jO!?-!}Wq?y(`T50YQG!Nw*)UJ_op+}+fOU3-#$3QP0RVRnazu%Q!?D@MpWgxUB}I4dBgqtDz}AkSKm#1>sR4GuFM88p3B-;z`DUYHgu#V<*?gMdwZ1s0Dz@(gDR)9 z#cYx|+;5pIrpvsr=+r4n9e2m`+rvOgN=m0}+}s)*MwIVTTy`mUK4IeFNdWMs^p0Tc zvB_dJg9QA#D37Sy{jb>pmGkrS#_a*9G++OUR52v+^H;d;bg#VJ@qo5&*U%jPgEv0GrK-lr- z``%J?Hztyj0sb8_-g^`y=qZG>I~O}*DDm_}wwNbW%+|6-mids0tN!cVrv`Nb~6 zqw(=7Rk{;HRc;&fWJ83hUqzbygp;zstmb5{ce_l6>zO~rIeiNYiwa4dctFiX-?~#Q z9&J!$WF83A>yjSxb>vYvn|!SBEl|kMARv)t|GD!2aQECV@6s;>rmC@Ks$pG6N+eiV z*qv_%dYP4C=3_Z8PdY7?Xe@(5Lb3o5udEMDgBG3631+NK*|Xh)TKgIgw|+~N^z`&| zfb=GMGBudY8OYlm9k{*x!$C z*C+eX9lPyqW66u|dw#kT%^K0byq3ilJmd)EpR5Ya^&;mjNq{N+i~#$j){Kn}`IoZ8 z2Tg8$+RuK00D13jGEw0SWWm_n_B$UC(P}Z>m7rGm6LN}<8G1LOnDuX!S4dO7KFC%cT zwIjgib^bD2VoVB?kRd1> zA>S*P#N4r4L;ki@0aOE|*|W&FVi&%%(vT!pV{UU>jj^^33I>0)6C^Jh0o>6(0;WRF zj@RQ-^_n8qX)Zu=9gTf6huyh;eL$sHYsbeT^2RyuuJK$)<=Jvq`itF3Sxln^i?w#A zKZgbtj8`6F?6{W$5LcJPC8yH}lds%G92r|!WoUQ+bDvMTGLDyD9F6&Og5Q0?!^a=z zve0cm=Erz#@5Pf+`8mv&Fm|rbN+O3;%fq}Tw5FK_9|ME0iHI+)4(hN4tbyUUo~LXH zHQicjHdRsu&`cW~4sgo#ri1BQL;yB1affK%Xrx&&eSP@(xm`6imN?}IFny7#XbsjrT_6r_1&ASnut<3C=sMs38f3p=ko@I>@DV|MqOy{5C1G)*Dj~U8HT(#k(<(lw zaw~J)`5JFu7jyZD)@hPKQE^j4vW_gd`1m3TA5 zuc?ud;<0*mFREXBla~YLdHoxF(A=`O6G61m@Y0a5q}g7X{BDoD5hdLrRko4-x5h;3 z2_*QpKsLHXHG^oPKCQ>`ikp6w-78z$Vo{)}9r{rfJ|#W;r>z0FBCiKjN5A*47kNM_<39L~6VxBP+O}p)p%f z{ygPj|#$?c`PRTTy5;@j?kZqH> z^8=!Jf*8w)n`Kw%0wn78Gwo>tlbx(yq(B;#EG*r_w71Uui1?) zt{T^TOO-DAH)%{O65w0 zi)qlf8|~BJz2hq*Gg%rHO!OupAb8Ff$7iU_vd^$P!-yU5^;XurNtfcAYMxwOph8`A z<3^$G1mF~0ye1D98ch!8>!~ta`O~r=#Oqyj$k2kmO?^PEHk%6bczSS5V6`H!00`~H ztw@SZ?$;~+eC5;Wz#l5A}a^cC|n7q3Q$Uk`;+`D6e3*uH)vx#gT~6>Y;>-*2k zx;k)-lAb)glj{Pmqf;xpc+OE?>{OB+4_Vr={GENC9XvZV9zo094zgHX!Cm?>RjX*G zj?e7*_!@E|hGzL$Co=C7={()E*ILZ}&`3|pZlK?OI5$HcUm|IrXBJ#JN~1<1R>r*- zr{D7}=s!XL&mpzwZoepbfM?%GyMEWj$ATV+ze!O+m9Vr#YUX_yg9H+({h_6SdQ7wu zF$X(OaLQ~6<^8lM&eLWTz^A(Xq0*|vd2CYdSkY@beVum1RfI*}S4s{4< z;U&tL)1=4;l~r8#xKw=JM(=4{IetF4aJLg3hrFHGVJp! zS_tGtAeX~<@&QHaN;fRJP}dv$%7;n=542*?b-p#;8H?J{bYNtaO`lZd22eXO zmb%B%dkUm5;LOK9_a`=aCsB`cp(`gnt%W@wHg>PuLx<|LK<^d_2A2r;fTjY}j&Plw>AiiG;Wj5m+{ zT4hOq7GOLVwor8dZYFEgs5|F;Pp9T$KJ7!+7m-gcvjeT_f`Q3tU}Ti5`K(dd*)=h> zKPre^DoN(sDK`7K&;5t9%>fgjY^+s`BgSEWn&0*6FdM*27q;dC-pD9PIG2FgWD)AF zBKC|a;8en_76D~pa%-KTJ!4~$fSr+zVhTWA&-Y5fIH_R(6A?mgg=r_9j%0g%8ueWf*)Wg22*uMszG|TOsccs+xRg z)F=`ZN736QbM;G%b5*&g;%%=du%!_q^VZGp_GlP3vtC=vn3N7<406`?*p&8qz+>hnek z)(m`qm?z&C_&zTbR;?DvtOx+k2y7M#71t`p!}*?SkhDmYphlTpvyE>#lLsbF*8bc@`RGt-zbhRkNdluB7ENTJ_6j z41JpfAF#NM^^*_GWyGM)eoGATyoC6g!h~R*#?6fr`qCbdcmH*3nKy-yQ!ZrbBSEE% zL}2q>I0^v&_^I2>`!_b?;&Zu$Oj^xT1y5I-?}iK+_coT|y2UEYMjMvGEnL@IOs5ef zb9(Y~(_e9JkTkE1Jh;2aiCDi$M&%Vr3klt$Q8{_eO|^LQE#cUDt``Fk5J?>8y1Im$ zzxlu-%f-@ZjO*D30$#i{EtSM@he6wymyv1?4lF-Kf*i?2vi-*r5q`|ZuRyCU>C0-5 z2bb!hXliA-t-<68J<=Zsl0ub+0}3mX03Ln2hg_1{iPdtPQYZAz+TLFAr&N&D77K_V z|JHi~MD4U$X%><2xhVl>GpB=21&?N4*G37bKJRZZi|$Jk8=(xY#9@L<2g+^4fpp6% zMswbWn<>K`kB(IuGc#(JQ=5~ujhB0)7wZ_eh7+a@Z`CX45T}qdDGrZv)rMjd6UD&@ ztjJ-zVGc~UCps7keW^}1jP#Qm&>Mk)qQveXn(+fr5NamnAEzHh5AjH&;4LIjY1CAR zz?^_!Be|y}X>vY2rH|<#6BN|)miH`*W!C*O$|}vRZjP5ojzKUP43Z#_h?K|wz)_*1 zFfPP_R${xm9uhCVlru@2SfIhfxclDaJRds%pPC&BZX{SK?ZW@#hql%V6~dNG4)yY{ z1znTLKqUov1#NIYT~|BS?)`a>aAcm|-DCyN(|dgx&mFuRI3Fa0t=tMUV~fdvF3^jM ziFxE6K{!{oX@mWIRKe}^m7!j}M-rgC2*a2iVdd)BAGY`Y!9OeyvKWgN2dFg3ggpdH zlbu;^8~!X$Sc^i7VfWls0D( z5>AbMtQ|ZsKIJTZ9dJ^|MNc2@us=&u=m2LSw5XZFFtAjt>1tLWaYndb#9U@YFE%8S z>#RkioC;Ab;E^HkUn7^+;a^^U0yC6ivyc&{#$ra(GRA_{3buakHF=zlET_0qP!Jl@ zFOk6JoRiS8`n|rA3^DU{^4H)Q#}^i&N79KTdu5SILzcRGi=r0tN`bXno+(kT1MW4J zGrl}Y%u8u^rJGXZ1es`|IOB@Y-uG^2SM#mvBT){~&d6Sq+@G!znM^V?djOR~bcpNh z1v?vCo^xm5!`+p*7v`2Nx2LCPwV0F?Qg%*GubxA8fvVzD-1PMH@MnnU?OE|3t(s20 z6xptKqXOLsy1UZ=^%CfKwyYhwN<%juRHwgj&kIV+Zf`tl5qFcMRjW~`SWm%k;<@>7 z1z{}n2FWQ2pVJ{rqtQV$mfiuaP_4GahS}NeVpp*j1D&AIxq6i)GCBhOUoh+cGNWYP zLO6`AYI{xcJ{`*JEm7J`CM->jHF(w*ti6-sy4glq@sJ&2OPu#LYoC4}UKm_^cfL!N z3?r4qM!mz5+6qSkq$CR5Z0L*b?qwwn-JJ zPJLQbqsK<+eu1K!2_3AQznVH`MrG4vs+$k{+h@mu&lQMzezXa{ z9DG{jT-#|5EbZnhG24GOo-NP0Q;`K%Bo#PhU`rh34~zT`#mFX?CJu)oFLn1F7EmVl z<3`-}yLW=ugX>NMie4>NA`2Jye4vojobPtx+V;s9%qo+`!e|b938|<*Lv||VQAKdzcWPR?1g}7g}N>efhmS(+ZUR@I*ieb94v}PAz z8-!?W=1&83j@BRL>Z2s1i+EB=H^m4u%6HYXX%^5H7W?X47xDIT{b zHxLC_o8%>0;1WY-ivsyKb2Bsfy17wN7!A&6IjX{at^+`U4{M$mw zXFn)VR>z^r;^N__wJPHIiZb!wL_osLILCdxS$qB>(!DbC+0%6`i>W_Uf&YF|_Dk3m zIUO~PS{QnEp{uoR^+THZ+AlA6=vjr5vMr`E;t&02)>hAh7ppf!{>UBqz98^9*)B>u zx8TY3QSx>#RdN(lu801x#WHyrQt`%?6$DovRp-LYFWSo;ToEOy_BA?MQdE>ODlxXu zFgMqrz(lGnPt>Fk(`aL%L5S7QL{wLHGy<7dpow#jR_?nC@A^qU945bCw8L>*YTghuNkA%Xd@2m<XPaTV!PR^U3=g z7tTgYp#J5+^V$AZ^Zm*gsSR0U;b9f(We5O@N9( z%4(4a#D<5zk&3UgSKTBTuBd=OaZMi&jkbr=nXH%jOs7hct2pKx9qHX4E~ZQ?u{E9e zB}smX41Z06|D)UZ-@cS_f#g{vXr=AVJjai&@CQ<-Wec%F2QD)-UKAFuA1GSyv$WFs zwsj76uIsMuPMA|NE}VNG+7UtNk$+bBQ*I#d8IIe zELLMCaafUsBF}B#nmrG<-|Lxyr>t_v-Cd9ms7Pe}=1pw7g?xNPyZk0=yjZqPR5W2; z3*}IB&haqa$G`PwWmmymOi%B}c)+r)vJifS&-N(!U zY7P!|W8^+A_qX?T)+!t#cgXmdbRT1Ba9mAbqu=_P&%Qd1ONZfC%aJ74kXF+8P<>Mk zd6B_l!ILX*xgDwt`EYS@{aU7VXh{6$_@9}rHj&z6wP5Yu^2us{%RIC+baCfCWlNfJi{w(#y}0JLeHep+Y}(-~#6p!JFo44xoX4-PwJ@oVkBi$zNc&C&KAy@; zjDC1`IQ_YhkWfBflyAKo9jhX^%q@H9bn)tNA(2cvg@%;}8!-xqM;TvM?blU1o#;+D zi|2RimgdXnj`q=mX*9}!5R`CJJc2{}C+lI)w6ZlU#B$I)CMqfss|6M61zj0KO(w4^k0(1CdU3Fghd4h z!KtQpYuDMxbQNrHzSR&4lWEA`GYe+v4%P5B^gO4-Bx`wZtlsa#J7tl9Y_#+8W6+F* zlAdE9&~GW5`wlraE54^eskLX%0fy6eK fkbR~OxQcshvyIgSB$eJp_6S^j`{Ltn zUoGmAvv|@w*C#(9E!I$y6Agv9Dk)^%v=|||cWh8#sj``!v+HL_y2DCN?r&~xE;b5f ze}o1Zt(j&YJMYhc+nFbunP<=!a}LY_BQdmU5|@461;PZ*zM9S(n4jM3tpTy2E79B{ zO8J~&K)}qF5#I@!1EPq5WKu~Y{QUf4HS_+yzQceDr2iVRx@rXM=}B2O+hAXqU}64z z0DAsO&8k@lh|qEXt*XSP=p4>J+1p1SfKU^NXkHIMOMj&4y4J5?w-I2hKN{XJ~bVp%muC58!ooDB#XPG9-(;ghw+phovhaa1MM}vPNR8&BkfMXW0|d}eT~h9Wk;N%yW5>GIjJ}b z#2@J8R1Z1a@+Xvd=h_<*B2iH}#?CO2kFQ^oQV-yvgsZn_nVS(6H6*p})n9B+i5Fwz zVoOJiU{9>6WoAp}Hp(I>x7ARPE0KKS9Mt$xSE#ukQ$ zhhJY=;ZI3%*~rhAy2cZap&_dA4haj(F@LXOtrawe72NH_7*@!kQ1{MS(zv1QOt-wUE{P$ePXK+#EUV_45 zg$vToMosF^N(=*hqd}j8{|N7U1%3SNrwSNg(YWCc=dX!G9&KJ)Og9N?im9q{;G=ry zA8K$$^<rAavxI=M9D=W5$%T+tbvN#!LI+f1S6ML`w= zNiK3A(6mM4>wSfZ^tJ=fc#uSgnhI2Ki4(PG87CH}DJCljYBEz8StYqc#q<6I_U85$ zhsmh1r6-cS&>8Si6vuMViU>A%Lhj!GtBptgT9JX&=hfBH-jXB@yF^ zl|QXC4e{mq8w#Dp2=cD2y*-O%0fkaaI7yd1gIUMrJgQH+vT`c$RhPjY(c5ENw!a)$f77*ds+ZpD`s7pbWTApi-f($qQf z4?Me;feF{EX4mz(8nnGRHG6t*l0j5Yt49 z5?a;G=W@TE8yz(@xI^1fAgyDoLP|Gs1Ln(xP$u`-=4iNG)|C zfB&FR+>xT>`_y#4pjtH@qFRo}dAw=~R+N0JN=UBSmcvg)`t*f7PXaZxs3b0{%uu&p z0=E_F!^stxAw0Rq=X3+4+O#U{L*VAl zWpcPrdERH`Szr*v7R)Z?d}LoqOzaaDU^>*GMW_nTs zeWhis1tQ5}zn_0DXY<`8;%1O|@)Cd>yxm$lh)RqUFPyUcnpj;OP1XO&)-l@*J}{dH znd8?)eMv_7W^dnwRMfpQ;XpirG8guyl(TVdAzZvn`kw zXaZzmPABy@#{o~7fNY)Lpuw!`PbK85w~NPL4H+mT08G;raT?J8(N$_7fh7&dNid#D z@!6oVF2I)y_BMmgTdlDIYe@nfCge0$I69XgE(y4F-|YhiUSZc{t9_n$*JYK*no@kN zWg8X;eNsPAx+qFX$!c=sC5T~5s#)yGiDm^pAx;i=iKNpEipa&iTb&!P5`AtuQ-r!8 z(U*q*(qbj)iy~o@>T;VeyfdQX)BeCKHiAtj z&-nh!M}ZezbZVI?ZoWX%qMYVCWO)}C4(RJU+0w)0JQsUT1CT+*)!7NdwtsSyQt5;L z?gUcCRw^!_z!At5F=+*KrVw0xDeAj2TOO7jC#u3^E>QL_X(t7zAuPurow_0dDP(H>q=2*f%zI?nFXx8>IIp>Ee+A=UpPu}1vooQrz3E4>oMvfHEM z21?Hyg{$feCzJ*1C6WRK`q&4Phs znqw(lmFtkl1ozJPjL5`^uqz#wp!@NmnZd5_Sg|gJQ8go%xYmF!4Sj-o7hD(}|riB2$?UhNtE&BL- zAdBoR(AD6mXPEyXv@+Pef60-o=@#!L;Z2kIStsY%P9*XYsyDTkbAJg4;MtS!>Q9q; zg7wO=tTtZnTVH;EXjZI!2RK_(POhKYWhjSNn_w>XhLhrtMy^?NkJDdZ?VK3m5w<+R zOrWne2cenl#KQ;bJTFF(p}kSpkc{unv|(|3mpV|j+r?Z!5+yg- zTI67%Hi|eD`j&Mn0dQ-S%S$o{lrg8~FH`j*LR54tJ%xEAkDGQEfIh zUl&ky1r}>LZsH@AgsF74nKyPm0$sQ37GEuSs5CH{bQPM&W$5b+<($~2VXjbad_pscaISpDmhO&x4dT?~DKX9T zG%5~B8CWfw1Q=uw^ltJ2$&PNaWJ2!94iN+dICU`w_aobC9x za#3%{L`XfGGNLW3+Q{lmskqDo>BLQkS-rI?p!mV7B;r2_NwtZ5Qc`ppXx{Pt`{t)7 zmv6E3=1T%XgL4yE$GQdUB%{xpUdP8{prebku&}J}tqBXFoGQ$lXH;QERvjM~lfJnKvVk;m*2o8k&-79o zny-{!jotIQUO~JPwm-DEU(hISAnmJJU;NS8tn5O8gaY^Vvz|aBir67`5IS5B^f&cy z)`Do>^>6t;TMKsi@=>JY!gV&+E?d^K_6RA(I$R`Q6&Y5k7VG!K=!@QkR3F@pb zABm}5AMdcRW8)BHZR~OI-fz`8dWJ>C#E5>pvy*2o)~if0%3Q=_jKf-=v4T{+eZaHm z9iksbtGv7;nZ4xRyd&@1$9)|TJXxzUrTAFlcwFED)%ES++v&W~s#z=@R8_(Soz1&n z@RGlgkA5LQ|0`_$7f8 zak|e3tw9VpsP*9$F42JS*!3v=6Bn*QvQ0Rq#%B=4hU8nHe{psHovZ62Sw6eT((?~l zd+qIxYRvS1*n7{orqZo_cmM@K5flNXqZH|i^sb0VN9mzNrFRLPP(%e3r1#!iD4~Q< zLQ#-jr9(gz2t5Jmop(Dr$C-J~c^sef?f-kfC6Mgwz3%&7^;*}$TS5xbuo5u;L$Un0 z*FV3KDI_NE3#<_D*}D4QT_+Q`j+KBS;hlf7O@8c%zrFI+rC>^c!uzZKX!PXSI+>$*zu zZ|AE0Zwn{Gb&)A;DA0~7H}Lm$l`$qhrEl65T8d{fT);eZbkEXc}I#y4Y-vOLY0(?YT4CJ`)r`C2pL znRfMA!siiTpK=qlm3`Qse)+|x>FYmz#-d_V{QcgyJ=}K&-&aN^P(_4G;tdATsq!1k zBiPm{e718J3-g9^FPxv83+R)H8CkxN%BSk-AoY5~9VXBKwij?b~PT3x9;ovjaPqpJG~{o#FXZY z|3y^b+gH1p)h}v`b`qOMN5v>uzE+^nQdMYw9T7#&=iQ*a$o$)M)u1`U4a&BTj*hH0 zH!4ah^jm#*_we_$y)WGwitgVNEZV={pUaDPG&Yoq$;x_JQ&UR%w`2G7x1Ua(A@38z zTcEr6`)7UUF7`2Lzt!yPS0G?W50lR)z7&mirs+~tQeloV6%4@!5srJ-pHfg(E{Sp9 zJ1vx#jaNltocicFNbEwtm=JgycCjzj^eBG#6XXBkymekkyL+#*nmUR2k263n@c2CY zE6mGsMWxP3=f%bRi13dgPqnYXtaX)ChP2tYbR1h7E|4{=-{ef2(%3KW{y!WH$SGjA zCPClDe><~%dHA0{bJJG=@Vmx4+1rP9~s7h~oT)PW`o>>{@~Y*nm`C(H(DG_E`77Xpd=YR_qUSlq=eDYevNv-E_hjP5T9dhabKy(`60AX zPsNT;Ng`U(u&aXI{cYva@sO z<`-6sz<8}7>=uK_PG2=7JSg^8*BT+mSwT24U;lmih(hRbfE?t0$|k?6lh*l<5>> z&-rhg*!bd^Q?f$|PUc19mkQ6>u(G~q9B^B4TEP#g{zy9^yqm{-_bcw{=QlonNzP8UJm?J5 z*5&sX=okMrPU#<8hrZdbT01F@;QQV@#236HlisK@z4688sM|}}V50-tH_IBeL?cY_I4vq>QBBpq=6UtqIR)BhAFd>4QziJb z=%1)RBLUrX8>lw<6-WEeSNOg>ba?on;F-4Tzk2TfDp~Ru_zpMSx()chOG%(q=J8`- zSg+RAgB_yTPw&!9%=WXO!l|39tFcj+)<3Is`4}|Wk4EvFK7HEdO}&?gf(HmSL$j*u z>b?4+*W`0QhTr4;jq2G9$57|Xt_>{=z4UQ}zq|r6U1tF|bkwc^lJJw;bOfnM`)y#bB!DJh6A?U zPMmwmSOf)|C0#%$&GxqYw}wX6vkXCj2sP^g zbT6=(Dpm5>Ua+bU2x+L*^J)olVYran{Oi8dZ}@_zLQX74Xk^RqzaN<=DxZ$XNK95! z)G>uG?}knsfay(F;?zZyc&4W%`0WgyAFlhV_E!h>uG{E>*_MT)T4=O_>ORT_obODT zgktwp_Qn@8n0b<^c#N#(yN~1wT()pSbq^Z#JaEC1Mvl;@62E+oePg&}P8Y>M?L}^V zH}rloa(-TGi_QCtP4_`=T`1LxiFS{i|;mV7Nxwh#0+i z-2*lzXO3{6*;y(K1G93oJ9q5s$BTWo?Clk{hw10)cfu@nya$S*hrN9FKZZ*zj+VZd z*kl}-IJ!m~D)}Yp(xurEQ6sOOnYGUn?$e9ZD{Glug36-vZ`x$XOi3#x_qu|RlAa5X zs@Imy<*}`bzrFxS4#3~H{iyTZD*BpHj8>I)k%}dIgUU9S^mfoe#fDxGTs22TByE@* z#b{uX(FwHPbNBJ}HH^&w)6jSYFijI%VF}r{)OyU7+dIw5y1ofMuTV0fcTH%b!qhQ- z!MeHQN%axY6_=TmIy??8Qor(~k3?jIwzv5B1YCz(J3K#6n{Gc8)QnCUR=xM;@)H73 z4Wt=1#Q%6=0mLy}G{xOpw^nI|CcxlPM4;L24`&GCZ~5d;KxSNR+Y0hZ@<1X=t|Ww9 zD>WI@>i1Pgu)U%tBbZr+emQaHr7*kak5DW7UI3C-+bpNNJ=uN|DeJO2ZX8QQMzc^H zN(Yyk4^K&91Hvzo^`O~KKI)FWoU*u9jSZ;F;`$Iya0`p>lw>3Qb-|93=N%9)jo$dg z`7NH5`6O~`*#5fn4i4SAid?o*uHzS6n(IB$n)NS7><`6#c-`NS3f4YB4H6a#cy1kT zxaZu7Rr5ce4_h$d7qAoQWLym&P*sUYm!&XS{Rr6`q4q;248x+c`F(DeDkp_quRKbt zvmjrNH$RWw=<5Ir8>HHykM@UGX)=stxD0{PJA-HhHA!pMJpNEWB%s8J$$HsOhRV%UVyuD33=&@HJjPbY5?FeJey$^wu zaqHF^lvUbP9vH4|m9rEXiof0%v6Xh1zN}Zj&V}l21Zse^)SlhQrUq^hV!|*M20GROB*Ui0i(lL7iG>T)1=pMq>@9t{t`x+>~Jq)1s%(|b8@v+ zyUk-ojR+GOYW8}HalF3eR8>-k-if<4l%fZA&YmJ; zcI<}D7Tm!&!lZHcE{cb$!9uqq{@yuSn?xEUjg(0mxBeG<+7hv+Yhg}p7OPH<^FHo4 zE$adbE+CCb)kbEsv zh|t#3nBjPK_UMhVX;ZG*47g9XCIU9jMSi9uaL5`P*j1<+5kHo1Wqg;b$k3{;2N*y3 zStu@y(gnYUV1xT+@Brzn<(u+{Ck|MKSRHk&_TB(pq3JD*OVBC5NjeqzEQcVbR`EQg^4jDM00IQQ9c4 za*9MTaL9E$>Wucbv#Hx&5@%xemy4rR>BaqBBtqbkY;Q`Tu~hNTMuyc-^O{#xEDMb( z>eK)l^Sb$#L${#FaDl6qCjs$|kgHNP z(>Jw{p!1edXUip{wsty>tp2fV{^W=?zmaT!ruN&w%eL!TFixFBA+6J<`&&CGNwDWl zwUj-jl!fg_rVj9`suF%BJ2e{461yWa;Xwhrt`e*3ULHG9yIFm8x;8L*IaU42RVSU` zD}wKB1BAt#m#$A8wz%_u%Br8<*lQG~*MN5A!5j@PQHAusqvFXYQ3|G$+Kg)nMGjQzOKvD_3g%jCAM!@uUke~knX4!$sU7<$(a;{M&!22y5N zw2q%0(zXC*HPn}BJ5EPp;fytaQt}r0M@P|-=-ZC!PBUc4?}&)*Ou&|O&r)4#w`UMz zs+_3N@jj9!nhoL$oONq7#`%svGX4P6n6$JsHQUxHttUnTqpjbAufRCl_#%LA-72q& zQfF%|87{7JjS5?pioRk)*d}(Q^Lztj3q*YC4&^{#kdo=qK99>$7&Cz~2C=~0U@Qtx zmn973$ zwYM$H=V|TO47_78R2U zX3Ed!uxsXpk6ddCkb^S~Uv4!&_v`j7hUYCs2hYLrQ-hPQs!-E+2f7KpEjr78J`kHFP`0 zO+pD*!zJ4z&L?;HCH-wIZfAu0JgPO5nQd@$mGEYv?pCyZsiN!3P(dQ<`v`5N8MVdie&a|7R848x`_>|!j{?BTIq1gmZCz5M~$|LD{HdKenl@&`54m& zI{b56@-0u}%SM@ZgKTqnekhCmLkl4gKhvVp4bFcHgSvV8@*~x1oVMCiCh_*HRPsIf z3)Fig*{g>KbjuKTL+FV83R^-{AP32w5#Sg;F62-tgzQw7F|eZDmNw%CT3425BdrOa zbaZmD@b(yk35ebY)$<;i1s<*yA3c0%z`Q&hEhc+Y7=MGh=qWw!1TN0P!STWHyuIgf zv*+HzjL%r0R>4SN`B0V<)J?ERMIYHQ`sVXz)R+qp>=hbqM4uC>PR+`$C@4MB)pn~h zx*~4&l3TY#Q^>9hNm&GRrZ7Mc zJsEib_#VF+P|FaU76=>atyd_C2Y7$G0FSyE?NsDIYIp zAsQiM#~GP>0%^lSm$G0oeF{ef_&TA|4sBWMlXl1l+S<%M$Bskw>{|s(C;grBvqY7v zktpw^Ypkq8u5W}X5jD(VgusagFfeH5UWNO%(oGD|4qRK%MY$h1x z)2IDZ%Rg=?P~01@fA`3*b_*wu^PW+8TEMI!+he?*rB2C1`hv&kBILe;N`zD$RA4r2 z^Os9E2`X>%qcC)RgFUbZl3W%H6GO2BBgu*NJ+p<5G4VRoY0tHt$zs0mUVzP(F!>^1 zZb|}+S*~EczB=e~K|v;4Fc^upMlLe4un@+n=XJ1e`o8V1 zUTLi^(v~OoRB)eI;P+PykiyLff z?YZaMS*ddsdl?)eY+K@m;krmo?T<9KYBIZ5nC~EaoXUZxfQyFkvtlekktAhGc2q`RJGwtLMs+laIxnS3V)7j}DbYPbO|P z8y}mPxj2oC47GK13GBc#XJ=;Pi(}GI=jPkN;$vOM_<46=@)*e0tnA~je{V>!=0k#e5|mFj8d*Cmv-l3u4)NZ zfug0&_l3LAt7zz_w4#`7%JN2bpiEed+DEhXX;mOm#GaO0`Ogop?(H-PkH^{_Vfb)V zsc>(+>UIkGb~GE^oN{CrL^jtyNnTO0EXfJNI9A1smh2k+&@>_RbK9Gy?VG_b3h9*F zH!<$cUm{qvwhPkLpgSgmUqI{L{Yy4Ie0`ft)im-a|pQ&?Yr zzK(XF!I!^cOW5w0R&J{`hy3)Y8+NW+oX$FfA7iS}L=C~iGu3#r9o zU{Jj`a(8CNWP9Z_GD3S-gn(!}GKg11zL867(WQadcG9Uyz}1VCF6ZNoJW>MU=b_BbiKKm zM(pC^uweOE4?8(|dpGI*+mF@z2R!@JWshK2McH)?449$YQA*+QxjAk?BSq@&QAPG< za@}2ll6qIL%y~wVIOBa5uH}W>j9$V{pJZe@x~BYGmu91@sxldKmtM)+W5?-9m{{4^ zMwir$;3JxmRujf_N8AbZ0p4)T?3|*vcRC9j%l+06tcq5}`%H$atSrs*^O&)EODs%B zUVN!1cr;yVz7#T~v%X|)kIwWqUt$GZr?h(#FZ@ZP6Cwsn=ofaiDix$M)!?b^pJ=r)d`$V15f9X~)NS0jz~Qtk1t{p~Au3V@g!@FWcZ z;ocr@P^p=*6}=!fI{M2c&-YQksl~JmV&|TGUpU~=X|DFwd(|9{NJ@ugWIO>}_PSlq zdjAzw@V|clf4kiuH!ky=?`3kPG%feY`R+vaTV`D)08b8g$p+AC*!KQ41=hMhOX21k z_ATp=Nc}EQ#>shAANNCw|M=A_pq$^CC$ZjkZ5`m!8(#a67E|wprgxoS9>`ULe+Z!b zcf0(b|BW1lpF(o08HWi{P8J*TFIh59qpUFNNzzL#-u#w}`Sg-xmip4`W3cCq%Td4U z3D#}T8s~0_^m)nxqNxgKL*3^4_ou$>)lP4DG|zl_&q*{gc^^NYLm^n;V$JV`l)ey-DO5S(Ba@T1+)bEm=%_BUR_LbR&Vb9qhn>5wjYQsiuj=MDa+5eH zT0@H+j%uc>=TF%5D{(hY?%~1@aCHONjrLq{$AoCm%6i^|CX=qX&;7iDasWd6>T2E2 zYxm*wJL8pVvHJGa+S4;LU5;dU9DHPL)2yAQ!-b+QwW!s7HB>|EjPt=Ej!f;or9(Um z8+%(NZ{2;5%>_)bmU?;h25@O$Z$06T6m0u*peQl z9Ae;Rquta-yMjO{a@W=nyFU-!O*AoI4Ku2%>D(GIT-@&dXjXhs-RHdQ)!VVOV3+x$ z5UgJLte(Bx$I0%a((=LLBe}Qrp{lBic4hNgTUCB?esk5jscw>UrXP2po2DtD6+Yvi z9Ls<%&mjqH`P(_yi(oUIFP8)2iqo>A%Mo{CZdpbbzNTRB00?xGw1!~Tmf*<%MG!C9 z?+%GC6=&K>0NmblLZMv7>_HQVhWv?@6rNxug?r(gY^d+G3u{5XiCup>nSbAqzo$t^ z@Iv`ir)xF~9g2sJyFc0#Sy$Ji5nuxdB-l9l6=eX$z{=y!TVf+s#}N?^-RJA{${_YB zuNH;9C$3kj0lB~029sn%>ETo5yr?C}&Sq<>XJFQ*s6vXz9IGf`MHAN*O-B3bx0zc{ zVJmp#H>>JJQnNO3tGL|Y#@cKAYlG!0H3Mv+;l+k!Hu?u!47XINY$mVm$&;8m_goN_ zT=A~^GU79OlOkdo(}G%!ii!$b{UpWS$q}g*2|n6Zi$F>1NP(&!sMgJ16wkR=a+q=# zm0G;!y3E7D_VkjJ*G<=Gy0zSd;Hv}nCn=kYlTCJZ_VwGBZ-Ny2#oAlT%{o6%;E(Ao zh1YxCnUbYEjpsV??uA;+vV9e7oFGlC&3xlyES*}JTcqUr5u?{s-7v!YYTdoi$SLXl zH!I`S`p4By$#0VRn;CQ(YEf%~;w}%ZGA5qx&_@_t*`_rqt~l9!y}mpp!4`0yvGj<5 z-s+={Yg&oFx7zSl9r^H((Ajb48%G;==ZC!QND7M4kwe`!XD1ulj`Y6anZBB^Jl;=- zyy=c!r@5X_-)yGuB4~Q}*ywoBWe6BL%xZsp;Y-4!2vW=V>C;9O+Wqsi$>wy)?$;Q% zUy{yqaXZ0P)EevRJ8pow2oV6CG<&Gjeje0VAc>O4Eqhr2A!s`;fY#Z0J={zG>U*u1 zM}~>tso4Iv&0rlpy?A#DlaukX(@CZ_Nq6-0s_WEuRCH|&gmlK<`LowR! zxol7URBe@2UHM7aI|3F-$!& zGt*#ItPG`-y1%dK4{vO(UublkjqIHpT_POQcU1(E3$lq#Et1P`+H>%4cawdde6qhh zdhOo%ifB}0>sE7fyQq08TW`Z|&Fmaq)H8Px9mW_Q;T_DU&z=KA2Fs`C6(D!}_@tO` z*B=$xw+-~xFQo)H_BOVL4i|T(oB6bMdrH4d^fPo7=uMa@A^ev)W`fE1)lZcP(zE0h zt?d{*a22VK_BiL&3TqwQNx(rx=c{@q?Cc4^n;wmDj#^t@J~IN)#(b~qs-5j;?%WsJ zgC3Y@os}nU&OGJ^uT!Y0sT0A2oCS^oYbJmtP+6RbI})-;qnZR<1>fOopKkfw&W%nK zxMb3}z!r|X5a}0tb%R6e^=km7vY|>99W~mtDA@(7dmDX|i~$1S3eV&b!YC*pfCMdB01@cQEr^m%&`tt6z0JsH>#?(*P4Y2j3roRHl| zvmP!mNl;)`T8S>wkACEe1we(Rs^PJN3xoQBtwV7idh?+? z%aiXce&|Ak1)hd%=kW(bl!l5DmzAYfK~9{Ljn`u7%1y3N`;-{lz^018o5n)%6byYZ zHMzo=%UzKArXJ}N&oQKJV)ju5K<0bu?52haM!u$Dk3>a3Xphv`9XFb;uNT-4)ks2`>?lGY zIfY#zsvA}F?rfK-&iPxN0g@6h=h_}UdK($*c^qux%qks&jpOhHVpM5J z9mmrJOZNnU9SS&&7Jc-o!uBa$aW|WA6!mcJss4N^WK((eh&w_nb_ zZ;pSaJvw`H(KU1=ibv1~FD@3$bY&6Si0rrF#H$!q05EMgnEQ0U>Y!jj-kBdu`JY~q zUI2Pu1KwN~YMacC%^%*}I5~b{=#8mxon?2OT(TRur>(6;zH}fAHUt(_-N=a7!NDOS z?(%A(*plbuem79gOkIe5{DQFUE#46;506$vb)Pympf!Q$ z(8^sly7GzLfIfl6AWnN&oimoo;^wdG~itoJS3~Fv|UCAt{_)zjM^qvSW zUScHdoYJC9bOj;{QK)(7ec}*oi0%CBQjvtW3Q4wqDK-}>vHnV8 ze1}iSr zojK`jkMSl=0(V|olRtGse@+kJxcg5l^!*>?LHJh|zgFidOtxdsnv4`nmOUBL8NxU4 zg6=r!0lI*VgQFd{{zV|BXtxq|K(M0kX=7fcz3yl3y;?d~M>uB!YZV~$z|I#AdpSe4N05XS zbG@m2K$pm1vsrR+)pTH9D;F=X3jt{Aa89^cbTuzo?{^em-`uIgXgr>yAnBq{vqfvK zdv%z7Wz^3z_Ee52-7m1TL;07}8K)APy94H)6O`V2iYaSI09VQnJGQy?^V%7Y)+bu( zBp$~(UIb;98K9%j(en2lqTCnWsgRnA4g>&x5++vJfogJ3zPvt+fM_ENoNC1Hz4Fx6 z%aD|P1t4>Icf2jshd$%als^<-*mNztP3OVC3x4u@(GSwv5 z^($?t>34Lb8_;8#*e1Q5mG1ltxcwkpV_|uKlroGi*ZQmVu@Li^A(*{lVLb6(yH_oL;7=E+@XdKTYz zNtn%8QLw8z*{=hHKoc%*vRvkV0VTMqne)JeMIUHMpJ%B00o(KKlw@C_yTe}`MN36mSG0)u+ zZo?YQucHV&YWG!%$QTeijsWq*cHGuvsQ1@{YE9YKF!3goESlAsQ`oQZPI{#j4U?GL z?klesgCKZmc5-F?n5G6hkW73hA~+%w^O1n7g!0x& zlxsunb_-M}DVx4mba~JUWp1MBmvJlz^|iRpd8k)8phj6GD-zTi?gQ+a@10B-qaR-9b?5niz+5MPYdb9 zNN+ukuyg@W%Eww4v|$+1`~){+%gs~0w7(LNwRd+Hxwrt-Vqs8RwLCx-WMJ#H+sK~k zd9~qq3l7lKESUz1yR2NN278uHKv(OgcLMI<_jtqW_hAzNQH{%&tr2i+Fs(3X1CYA7 z;oZ=q0O`Zq026{efj+=hl~#LzL*ZO(Ef}3wfuu~uR!<|qVs%|jax2OPjqKJlov-uQ ziXdWelj#v#F0@+K`^>cz!NZ{|A7s1a?W5M`9BScVrL<9vZ z2lL0{N)UmZ@)mWUx;7AQT#Am;RWesQ3L35wAvKSW9Zz)4=;>T+qVx4Xv#Y$opU&?z z7Iw7oBO&G?~id|VL!}Pq~ngZnS3>Lzk7Yn zxc9!EL%gR6?nQm$Q8Kf~_6o1-VZ$;kIkr6bM^)+V7h;S1iYKEd@#flf`-iZ2B76+w z)7tIDuoMSRqPz+HRuV#jxhr}bz8lf4XXugZyTOpCVbS|QOer9fJp@l8kGVxgW+_^! zc`!s-6-cMV1sNKex>Cv7Ef}^vY8)yjnN7*1-KM2u$ZB7=6+%$8)wHwS@ zp$Z=Z)J9wIGRpxr+G9l(73Tv#pC@g(sotES(#KUm4SJyzUc0X7j;$D(T`GXbtgUIg zF_N}fwiN)Z#XVLBi?qP5t*qUfOT^Wz`4b|G8;(7ykG9bmVB0?4WgGvh5fd-;32PG* zdlOUXyp+mse+ln`UflqC$!Uv84i*(ag?+?U74c`KeW{r&=XUFdp$0av0seubyV^m z)p(tMtGC+K;Iko^0~+MktA-RAX1AVAMJNvP2z%+&??USHA<+vs?k02mQUfKT&bn|T@G6%nK!1%s2Bx}H zL{~Vy(=!(yTsQq#>uyI`^fhY+@E>U3AX~fWVOa=61 zsb;yj+>4A+iW^`#t*$*>?{v{uR1EY47~A`SD9kkuAX6D5(d!{8LI^@;@3(h#ML91I zx3Bt~Kr3OxeBNKq(!PT1*RM66g`6DihzDh~4nIr6H8?M8yDy{%SZUVvTUTw5TW71K zO1XFzjbk(q`@IB}=aqrcKQY$D)h)a(*m14nd7tA}!mjPrDf?C1-O{aNOUAGDv9ux* zi}u~=>4(H|fv<0G_#EBV*viki19TJe^Pz=w7zb8KLS}GiVFX)Tw!P4#m0k`#RS)Fj z8bj-YQNeqsH=*nwPVvz0=Ud+FXg2*@>Fn?RxjLV(zm$-U&WQ#3>c~)q!IbSdpJ=s5 zTCNc_x>1~xin868Ab=&)tL83YObBMMv+LHygKfzWXO%qS^f16iB7`P`*HIc63vZ_^N~} zT7f;81(@O&0q{hjoqf6|=)i!Qv~BAk=FOXPS8hCdcGMY|dbDD`UGsGu4wsYY zQT*5SwN;UsI>XB9-UU7r^ZJ-IG47MPT%R!kh(S%gmNFgbIJs{YytsfLZeQr6Cw<{< zPj{knE=1eH3k}V5cVhOSgFov%Y|PMF+oY!cd3`pGhlC|@{#^trAcffa&GJT~IZKV} za{s6F&8cm{zM(MnScbbzD(&sgsSP2MqRXQUFD1wQMoY!b8H)5PuvS@G@C2*=K(qZP zKRT2x81O2~ig-lGJz|EIi^#!#YR|=X;@4u_g>jy=jS!c1VHm4Yj7S02fIxL0X1g?8lnA)@EjVHGo}}@b zv8PcKJrFU=8!Id2y+Ya9(&Ytq^?PO%ym`k#h5iV{dW`l55W*t7ydZgXti085`@q_p zzrC`4i{}IN*N#eZF8qD}>m2Pb0~945n)Rz5!Y!y>$>@f+>GNIS>L%~?WOZNtRHos@l>$KLct zCx;pNwOVH*Gi5>qf@Ux?R0>3Tk3i4$qq}*9bI)`C>P9XT(dDN3@z(gS0Z{JP^gL*& zBOY-_3!&g6BWRM1$3uF@axGsecHgV(6&Ll?-H{6&W`6kkpY8dFK6X_ z`H+8Bj560q793$TZ%KTNw9xzKGKxo}*;GwK7Ru#^a`g$!pf@gu9UfkbaAoP;rWoK8 zusmI?-qvXxNVV(fkOPVtA*@2^zU1rSGD>xici!)>|I9}(8*A(kSp6)9Fu$=$PxS^D z|Fi7JMV13OW2?kP2+C^7^+eO-!@ckVQ1f~Sz4*jNVL?I^VR@1zcD!N;AdHYjJ^g&= z!3$vU9QwBrKug%fb&kzjYykCTx}qQ!7M8o%OzGJVIi0*HWuV;20n8&Soriq2bap_T zP_na;5yTtuxXE7*9qs(PyF^uDpU_2{0aQ8_1ax3S2mvg^8NzN_?(npLm)f%Rcvq+H zigotXG8=yo-afT?aMy>-!N>jP=fcs$3YKl0q|Tc^JnuhC?LYoaCi84u06Dh&^_=D1 zofp%BP}2d~=*OHJ6HogjYA$lP{;`!kJ3jqzhM0|Ke!`4yW$|{{9L~ zUry4GSyl_@~%XioJUPfoTOti^V)VT5FR?P9ubX=)4nZ!Ub&$xSOeC z7=ZdZUd$N=Ok)Ehu4)6KW8vXZv8%>V0kz&rl$xWEK-Si$7i1k?JCp2yBZJ&g?A0l- zT0}fB))xI7_X>^TuxO{2!m z`{k|Cq9WEGavChQxXrDCZ*$I1&_bo$*G*j8fFaLS*tVANYw{+*5XxzJ@93tN0ubwydwIFb)eZ0W9o;oevu)7c7( zAuJUL!@Mj@ss?~_X$26l{_V~;m=JwEsZLQd>vF4=jbQ5)JpCoNuN6QwTVPtEoj6Fg zz}9k<(=*}5_^Vd&5dJq3>^HN7WWxlfQ@_yk<;IbK)m#94>t|0kRmocMHQDf0pIO`} zN=uV5a{GMxAW)(e@YFjA$RyNlx4trC3r{*l8twoV;Z=Pj`&LjWz|dQ69sswC*|x2m zWCOT-OYzEv3UoRpcP1#ds-$<{k(o?XIXtK={l?1iKiB`yfUE!TUkep{nj{!iKZ&$E zsgc&`rq=bmZ1f%XVi;3w;zGYx4m|#9lWuq?QsbP@mzIu-hV>4v>Dr~5xhuEKsuC+m zhJlE8nX;@OW-vB3hJ?i2lG)YmshLY^ZPvo9A`k|K1Auns{hEo%2C6@TH30G?fWhN_ z3KS=*pr{B#9@TF2L<)a&lLdMnAK2FMPIxRAt#{q(9UN_4%)?-lIBKzl1Ma)~E-|`AW)-JN!EzwqZLo2 zw>SX7zHet&EQw)|^tf+jWmTuzP*tUiw43DgZU6(BGRyg`@zQuPdQr$-7u*EL>({R{ z(#zM@bZ#Z%2Ykbd{gXrPOU2aJ*E+Yf#AvHOTT>IWj8ZvZWoNJaO;YtQN*|OdGrP(_ zT1QA~*1WE%tE+o$ZO(19F9DA&O^c&HSBSZ(a@(1@kY#evCx0OS6XsD6m!U$4@H01#(1KTyif>t2W(R!b020H%>Y z+Ob_J4PAUW`g3H&|9Z-44Bu)z&bh}JjrSuJ_U8xsPxoe#{yVC$`1k`-uDIYEcnbo7 zoTbDd{_=HSB#*kT?sbOH*1EPfAxeY+4b87QSATQ3WSYLR!gK|F{4cNbj0-@0W~coZ zI^lOGQ9v2sKxnG{IV}1ow_63kfDK6gf8qRFG5tR(9H!#OlZ!va)BjB(JP()}((+hS zsJ;_1{c${iUcR#Xe??@!-&SAOSAwShUp)UI@cw^RJib*(M-GGUJauR8l5p$S z-@||RXx8e>!AzD892XIuqHV12Sfq}oVzQ`OV7IEbSVz(CFEu=$VwrigS)z@3uQwyki`en2sRuSSc{h zz3JYk%-%_7fh8(8hdJr2s;VrUs*SA%K3X|%rGe2C0TNlhYxL>RuhXQ(_+;L{92lV_ z8*pwXYW@6tr#*wW!S+1e(-A*mpb(sXc+|bqOl+QwR0`i-#7^+0dJE|o9UMS^F}eU8 zWs5p|QoaixJmAr{z9GYz%uWLVBa5(+@KD`xW8>AaGUtFUaFwQZ;Vw{4Rm7wRq=rpN zJPpmiig7#;G@U_d@P!YsheiXSR90r@bPh7D)zZ!v?>u&##k>WqkwEL9Ewy+8r-|^C zh)Ru152BOkJVOk8*ejVM!#b@O-z_0o zO02d(?)zgplS(wgb}s?sRimLD&R@G3irsR>J{F8~-a^>7kA9HFLi!F}rx{m0SyE4| z>yPZ`p^TnvBZfysR=IIICu1nGHO@dJ>03SpCdsfq>pN;pUbV@@}18G3Bo!=V`ZBb(TrxD#;&+=`EHt#Yh(}F$w~3apZ#`< z={LMHGQa)Pm%h)r01CU)J7b?an7@5dlGt`e1S1 zgu|z|7sQ~v@7*3UGX#f*_O9WkXDIk5Qd31g=e&Q<;vT|IxT*P>o1vtvEaTX#=D`@mboTh|3_AvO9O^S{uay|;Y6%B^UAOd( zsE5`4@uQ-BXkxH)s8LeeaJE9&sR`i4z9$3!gU^VZ)qz7h`CkPdOoSB}sMEBGI6BC$g+?R9c zTpb;+!N&#jTth>y5Tef0pU>#lchwjjDtI3qXM+t2hhhQ;D>U?B@t|gZY6DKr2|7s+ zgF+wqVn%271gWIWiWOli&CvbrrK<;5jvNlOqb9m3pK@z478n-LIO7KWBO)U5qVmeJ z?HRrHNhc}ND^n!JBF&3n2+tw03yL)|wY*?gY{F0;bmY8dx~JaJW45EVHvRX}wfLdQ zVXY3jg-K^Z1t_#$jaO`EUzH1t>uO+XywT8YbiLK+%1*7woDf#rEh^+pP+Z()m_h#4 zp^aj>WO1Z|Yax;x4h()d`A{8pw(KH#0BmU}Uxnbnc_e3cw@zmy1o33Z!~HO6uhXLc z0IrAVUSJV^?`1n)8;Kvn5Xnn-%z>M}YCxkNfb4$#A`qls?NPVOaH^yGwSDc~kdX7^ zypcQET*I$>l{>16pCQC%+tb(4pu4L4{3iA*c&{B%4Lmd zcQ^@eSP<(A4}OUjvg-4D5MA8P@jXLYvhuno%=2`8B7|PBszmy&f7qp#MPm8A{yYQo zZSj_zWJ(xZHJM$9AOo~jRGz$|BPZ{=_20RG2X7}Yuzuu7%Ly_E-h>HIC2 zjx`k}sMNz*Zg_)Qe47%fc$a;murQzwCw$%OSO@P>iNRq~ojg#N>=rwt-V{0MJO3p&012zo}QhYR;=xb;i)pRv$wG02_1s)X;=HQCP65_@i# zkA`}1iM{`v=pdGU@ZQ;BvdWS6*}Q}9d+!5>S+n>0_vwiV<&M^PS2o{ko2;UV}SKdPj1-muk8<#*L4T4Lf7?G;=LCqIYmtwLqj zYj=wXurM+)IGfgfv)u~xrs(Qu=`$x0;+~a}Vg1cM->zx>5E;}{p1v$a+6k2~P zPa(mSrJ?mqbNqUH}&L6@j(R2btzP$<5eieiMdi4 z)wPi#i?Wq{vb4M@1>w6FDQrcLzl|O*jor<14dt<1OhUZ3nLaw6**$_qBddU_QIR|Zx(STK6H z+$C<5J2OqbdU4A!1J9w~V|~Oez`qyuhmu%m3T|0xK?3{)^5)oLjjp02MlQZTM_(NK zOa+-*A0k(3sc_|O3(h!gHG_Y#Ss;O#0`V$iinrq!lrFKnC-rly1qn)e_cMLRh)1_)ktvm#x9(Wu?O89Q*aj zc^iw^hJ8+qomJk2qy`@v3^9_XX`s0Lu)om2_P+Y}J`u$Iap_MheO4a_VSR*z==4cn zk^d@o%bv&X9~bLppZpoSHQ$QMX(CM1US0L~o45&$gg}(PGmIS991*wtykcc{XBqXS z%e=}EH~j=ZET|RQW~BIfFtK5$5s}gFDMNh{54r3neMzTe5E;T@!+jt5wtgT`?W`sa zZ%^Thmp0|VX9^A-mK**+46a37D6-O@J`pG3&XqYr>~TUkK3hMmR$;+3zh{fx;q zYGOWlZ6d^TdaG41uR{ByP>>pG^Hi;;(t{-^JJ{?M1Zk>>W*^u`%Aw5F+H5!KGt7*X zR?XfESPgZqE=&?>Ev9&twf^kujrQuZQy@`3qGZ>}V%8Tvnfb$Pq&#_K2&E#ZAsmRf zpTuVq`Ytpjy;2v|@98n`u&Mn+%zVPZti{0PXeaKPeq`y|J4qJUoew@5tG*e7uJ+5K zDGDbVxauXFE44rwnns<@&FmQz(?wJ^ydBdcX!U_7pUkMXcEZ=kawQi9b~y%o9g)5z zQgw&<&PkQc?cIezrT6`Ba&0oOwuwHxL-cfcs?T{>A0F0fsh0F=ZfBcD=XieNSHLUd z`^dE!5}W%bPT5v-`?bV)Wl2_8jyntbqV{-!sR1p(ru$=*)*m$R^PMUkR1c;kQ7_H>(S)?-S)>WZtlmum4L>y{Rjaz~HiW5w z2QOL9L7Q0R2Ujl>SKRp?BxXN7M?}EyrQtd0!t4JOe|J4C;ki8{^HYmhb_?t+WkHE1 zIm(Hk(C2yOS(9P^oxw_-8*FFs_vpV2R`u;gCiBx_S*^0w=w;jT`Wk8J28Qh$L`#$7 z5Bse#{TdD{0mi-W#78zEH{n`k*<&*gWr2)kX&dGUEW(}@K{j%~Q7p9IE-zAU>2G~J za_G`~i}YUaNb{7B9LSK@Fc?_{l2s0bN{H7Ye^F6u!r9fL;^M5Z2@hYY#dkW7l)jXJ zoi|vQxs)C3Xi85tE(>SDoyJoRAzq0p+}+M8x&o@fVLQrxJ}3EP`Mkk_7ngE(rdTJ` zGoO)C3ESRuG7|Kpo7FHK9dVN(#rF6YJCD_6aKfGuy}=EB8(W(sGd}k)P9(9x?#E76 zgu+tJJbYcHO9m!KNK*A=RKh4bpQ|HF`>-gT3N~u*f0d?N#c#pceD|!OVA9{P^j~oOmCHDwRL4qxhh)Fce=p`0p2#rnc;Og7quyW^wLLI$0wwy_* zg@vaT%e#*x^ob4gr;D+NJIgDQ6nc=KtqBfS4JtfAYaRoxZ2c5ExKnI z^fHfERB9qqXVucnD?jF%Tq+^M6ZkJ`u?tM+wb(}5ROFwv*f9C!YXfN$DO@mW3i|JV z1g1+z4DvyCM#>}7&6JcZnrCXBIygmHSkUtwq^}I-u8FaCKF}w%NZFg{EqjEEoAn;a z?(e5ED}76S;EG6WQMQZ?Wu+_I6RpOXaV6C)j4&yw=}}jjES8w{QT@V!l5VW^YwnlAKYHFBN zm=9LBL|4@TL!blZt%@qi@cl|&D&{F8$vkJ{dy33hS&xI3mIaSjKE#^?W)g|^qi5!2 z>k=)}iq+$}p41jUX2v@T_$n$Xa&FU=f23S}Kx&Cy=rirzEF4(QOHF7|UYc0&wzx&h&2R?~(&bbar=>8i|&hzmkU8n8;RTCwiXkm}|l3vQkvKv6lCBj7&E7k_4Gk9kBM7 zYc@L#UG?i9!l&c*WP_KIVXvONYtWK=_RP(4(1q+K%9(TJZ&&Cbb^2LLka;H8b>u3* zO8jRg^|kK$PwOxxJ3G59F4bp8nwnka}7cSAfA;TN1^$l4(xncL5gvlMjx_8!XFuvDlc!n&^inX z4$ctAX)^J@jH4r45YOc_!HH>oIRMWlsfOi$nltqLLhj%f%kJMY-KAHZpItEdIq4u; ziI9+&*gE=I!FNN?e4h*-h;*%!!fLO71hX1zPGg54d26gv3emR5FmMKHlM_0o4Xs{A z&z8e{Sxnl4yIyEN)!RfUec7{yN?=Iw}*rBm{UWcB3GIl>7F&1Q5(PJpf%FCTcs@AWu=~c*kG8lJiims!D z<<*3zPl)M6;i!P-1PZS?Nr`M<+NAnrI z(ZHAk71iz+q1dt;i~9m^=rb1#4{PYw>8i%|YQ9;~DKJ0iOv_&3Srq^z|G~}$&7vwt z%Q-t(!CVJbE0~GJH`(k(*;XXE5mVunyvb)fGuG%yH$4I$9?Osacdclv*g>i zT&i%%2??1MjR;wDC8BJdds#JDTcUL-^Lrh#yCv!yne`4|MIf`zQ#J;M)yFYPip|Iu zBlD36OVa}1+=E6OHp{9#Y}?zx-GFD6bj+V@%m=CipTm$$N-eB{Y>yrkm?=AkwzX)R zv$S)h5Ot+!1*^kP@Yi=6j*U+G}U5o_aU ztJ6qw58PIr&EN%N=3gc>bH5@KEK>YMICO{O%O|FHEfYA`UGr$5Ky$ zI8FY?(o6o=f=0-*-d9~AqjJ4(;jh8L#r@-Z9nD&F$6mapEiSV~N4A{D!eZKqETiG) z2L0j;DFwwB<+J83KQ|z&l{pCZXr+gluwaJt?*lv<)GO_aFYD}lgEk_v9QnDlSK-oj#_gunl$vHTf-UM2!>j)~d-9A>(~*xB>V2Z!s8BFBi=Mt}e%e#uUV zPbfZd=1R(OOF|~e{KCBO2NCu1>8{)!n`&bmG# zx|t6)WA>#vV6$kOop`u*#FZ^*UN|bwFdds#m zu}ZY1rI9>de(}O{nzcCpYw)12gk^T$C}*pBXt6IpmZDt;KHibnej_9q^fE|kT9H6q zua_C`R!2+ckJ2PhuG8J;Td2`4Xq~vhvG~4L@ zO?E|iW&(W8VXI%Gj$g=mtDnE3Fw?r^%cB!s!jaOg=%ed5qL}z*-d#4KjvfV&%ROG+ zzE+(9WvG+T-5DHVe3wTW$92jZ>thw$X1FK&oFIoly|}w5duGaBbJU~0)6kz{)ZDR9 zdfgs&X?1nApA4DYl)_?(e-ak7E{;u+Iu_PIyZ9&8O&WMSQzXWa{Ppnuvf2M6U=V!# zXl@`p;_0$8MM>>jL1K(w3lP0gQbhhwwWsbg%4J0(h7czM_5+EpJ9HA+RlhZzRG5%=#20^Js6FGi5q)AVnXh~r z#l*nCFm5vf$=GKg>VvCU{3x$`wP8L#;ZvVRXG!F-bdyaIf~Wa~dDXMzxzt64W;6Nf zRoxb@pKAOLZu=7__CSJS_1doI^q__7YJq}Dt2(r2!o$DcSzb^(Fi$p)bIaQ6OjIC= z3es0t_HvO*TD~%ewzb%EAGta^A3!N&&(w^mjAm93KXUHO>w6%^dSXc2r}J#L7eBv* z-=W&9Rob%pWU^G){zUWr*g!Vyu|<$;p<-?R5{J$yZ$o`O+@heaD?FucAKIA}z8zaK zg})`@Hc@0h_54&jAM2JO1oijf>(54kKwmOV*yh$iFdOKF^bJ~az$d|_ni%x!e@njp zW?|ZbGe-xJZRWPvih>t93WAB=1O?i{tMOR^F;D>no_x&M$Ku_p;wq z&b=CEjhj#F8OM0>aha85i(*vir>fk!*;O4GOWo?5($KR#MqC;}$t!_@^|1GziTnz_ zwp6@ug$DcR{ML``55lHj_B5V3DoWJL1;ffqwl@XUi?^N?q>|lo@tHU?WVSh&FS_io zK?P}#+dX=vS!5U@(4LbVyOiJr#1R<9HQmvq5xk~RuqGDrh!#>{fSKLVkL~ z(8>6R;S!lk-wvt+G0FU&b~?(?t)ErP%e@$-@S_auDtpjQlnx7B#iyBUqmDPAR>U-H znx!$vDhRo}=Pp0Kl$K`C`;)ZWH{f_EYdd2&>?m4|U3G+LJ=u?4G>cegU92UGXmkX# zwYsD)?P+pZ+-nMh@ZX)}Z|*PG*Qu*GIdX`a=CvA6%bPrT3N{}{i52|#QMDDfVf;3w zr{d@K%$%8~H_P}t7a{A_C5KI&10VTBAsHp5o|2*UYaYBFp#(jET&9-VAN#sPO^%Zp|s?GM7@p~t% zn74zQ)5bGx$K}d&9~!X?B4o3*FrhX?%UBnb=U!aCr z)W}Gb$);JI3k36X84;;D-r{~8zr8a!yiZN(OQ7DI#gA~2nJJ}V!yn?1$4iI$J8gwt zt)E9;>0FbAe$f?H*g|S)K|fB{8m}((qpj36H-}sg+traHqQ||w9ED5YPxC#Qy08QA zN);8-@6p=`NywMu@aA4qY8%YViy#$uqUog^pupwC=ayY@hxJsqnz4HK^r=c`(K`hEcY0! zYQCW#EZQ1*!iV`*?9GrL*&&mmk!=0wCDh$Dkq_7zyGP~Fm|Cvy=9Om>q!Vt z;JV$IOqXJvpF_#rT_iQH&3D53Z=4=1dZi_ocdjatTRBh8c0W8J3-&NJW^|RwA5QZi zgvrT5;}Be%9@U2Q!+#HL{8e2fAC+9d?xXTfDtO&kNGP9y*cD;p4r%2?2N=XU2?uR_8 zPm|c5V-ZnMAXzjQVJ)-UI%#V)Zrw1{xY^#)RmjSkut;{=Dd%p$HIO?Mu~uO#TB1a6 zg?)+PW7b1{n9>B*RF2aGL>%DDa%Jdum)~wW-7kC>wJ87gzktC1xI~jH8sU~M-2E71 z_*a%irs*x{l)f;sds$k#mJ#v&BgHo|@Q_W)U^M1n`)^nuksmja?d;1SB9!Flk zemyrcA)z5iY7Ph^H7FfKFW0X_(lO>=RB@hry-`)=8Yi8%XIp#X=va!?(O7C~Vr(|k z+{C!H1^)C4=5uo;g%^EoNKyWMQxTP7;D>6-2wuzZ zXc#H8RyG%a)(q{JwAW>1WyuBlhqbcs*;b{w7t^5qg$1&9&S*9`dJ$6fV;- z2bR&TdtG>^71p~W4laRN^~Mhwp;~MEC;A?LdAEO&4{hXLG29=T2hbySj}IX zb|EI--#;Tc&h;R+M*sDQ|7?jDF<-lJ!(hv;2Rj)tS1YGR`CaILe?fTMANXkp(b0}` zD=z#UxtQ=%XX0D4_e|<>$eeuOx>!^QR$e}|zA%x8c-na;_1(u)cStKn-SM`%2xiE~ z4B|Y^EOuBEZEJVmQ#j!DeYlRzE}Q3U&KyAAj$19;7WX--<{w<%F5cemIQBf4e@?OH=|LDyBajrNMr^W7TrD5s$F)@46>BE*sb2I#?q$QcGD(@fr+!yg zWa{vCY3733pk(eV->v=vJFTsJ zotp4THp_py#DDnw3UleKj6>xdGPN0mOa&sdaI;!MbdHl;mGt~w$))ZyO*ZZZP zJxhIGFX19bytlVS?e$L#i*7=)3dVTPKmLDf1@8=l!Q{R8lCGNhEaJ!|{z9>%wl?HG z<77sltW(KAr#grWJbuD|_o(Nl_mz`#d`C&nl1PwZ&XxQXZ# zS|ss5UW?+wC9p=Fywa_;gJ^hUWNywHLiitgx8~Rjb2x|xQ4DZ1Akgwt-^aDh6l4F$Y>ejSh(xyc8NZr&xB~8mUisn9x1UA7 ze*3S-@GoEBpY{(EB~;toEz}hdl={X@Y`XbnSK?vtXceu;bMGekR*_St7Z;}V)fc~K zDIU^Qs()suQUCQ0y;(1VRRt8`4{`rfJN@PHc;{cS-eoNyy7fbSdG5etOX`N5J1g<~ z->-NB?Aqyez1GTy|C=@cN4NJ?H1$~oo&CD*R320P6l;Mig@1850flC~sL2aH-#|0v zo=1;VOJz*~)#3s_-;W%*=G554L|IA>o$R(W_2$wSkKmdENn_f}9{AkQ!a#1%(UD>(Bq%86Xl3P1OC!VVkV-~|!OZ-TrF)_PyYvT* z9Nm8-Wei1=`|k)Q|fG%taWC#S_j z6tCe++W3uD6J}U1+qj6u%W1FCgh!ZsE5 zmn(Thxl~8=ncsY9cqxg`!4K}Ln%!~6DpSTz@;(v$jGET#$(ozP3gJ#`8$HujBb!+- zT&D7nD8WhDppCL4+i!OnZejnc?I|kavYy?zg1Z~KR_8!MBlM{jXv!RY=8XBLcl$5y z?H3aP`8o}b$8LUgH4CyGra0=Q<Ga|l?zQJe&cR84zvhRyfF15L zUuxV%gWVgoYU%1ysI5I(6QqKA3e^CCky{X7o&VxJNh#dfc!6C~bjkYqtuS@E$#mgs z?Tk*2qb{4<VFzMK({mW<0hUi+qc7b5STrp;89iy@~eMyJ1?mV0uQb*S&r(tT2V;wauNj zYEy&Drg3dAZ~y(19Zsh>DQJEdzVf~@6fZe5!&|TS8fh;TPp(sKj=Z#VI%QL)Z}EiN zGC9@eO4L&2?L+6jpNv?=b)33$KQmHk!FzJr^eT!!3Vjfo4i3_zi`c!?!ff~4&_caJ zVj}APu%{s&;xq`y1pyZuqRQE#0Tf`mxlZVA-Q*p*zVw3j(d#6tZe^c^U*k>cTf#f3 zMtgtk!ir0DYHMrzt6l8Ke>{066ZK8-Z@U&l21U@pt8`k|eceZJd`eFznuW?&t8m@V z;6RBN9d{0tl+W&m$4s7zlaacJ>zX$a7c3qc`?b`bl295O#~;?IE)6moO~SdC!D=gh z{y1VhNJJk(6)u|Mu~T}gI6R-)x3A~%l)92galTifb(MQz=n3s_FXA)nOCy(|j57Z^ z4X~*5J`@Ud*q&|*%K^#-H`LoPwS#<_vr|)I+NOjBKMCLa`YOG8^~$>{;^4rUfP{p@ zdMJeOFE+`4$a*A55miIHCa)FbtpzO(se#Z?3#}XYyB{Ukw7j zmMR(+oNZ{X)xKa2deoV7a<^}Uvoe zY?@45#HKd)3#`y5YQE(q2F`k(=1%JqSs7Act$!$(m@t94OC>NL+cG|$WHy)|H_5)A zrqcyRb4@xE`BjSypKGGb$N}cKn5HA+DDS?vqOmkyRdzt=%oRc{7&GBaUqI&QIQUKb zw`=(io`MV8HRqLkMp;3FOIgLm_Dd5NQ`EP!W#d0(p$2eB^6XYe931B2x#4-WN=;Rk z76fQp*xEVM2r%sIS7uDP2il5bmTo%$x>7oN$V$45rEDnNQtaxlM*7DEzYAgRqQQvQ zix<`N>!XWUagltV8#p{tgT*z$)UX`o0w!f$pdY-_X#@awfdrl6Y_X3t{&0KH_S?o?!!@Ul>n)_ob-Qa1|!D zwh5Op_w@9%Wz*f(F9kwWE!_iP4iVe8+)t~;$HP+|Ewz|k1|nz=t0|CM*(muWfxC%W`ah|EJ5m1@GInOVfDO_hj6IFc z8TtwH*e~Xms(3}Hh`a=kgyzllcFgBCL}4v6!oXh&b{$#bSu;f-pOCeM(Hkmv+h;X5RZwOF&2@G3dSkBk_FOvU)?&JZP}+<^-~>m?ZRmAs-Q&QiG2+5C z_%$m0+eh+N^e!or^1Xt1WzX9CNLvT4Za&tJ3Cn~2XxrjWAE8p&#mFUl<4!!4?bjg# zr7rUeJ=12nstC+2a>(78+DsMPLG*W68R%*JHJZj#} zL19yO;56(ke-Mqp<}LimG5()qBenaA;hs~G6!P6*vap-%1=w+Y#q~i5lPg zm&XNw7Ht7FqXuO1r5|51++X9aPM8noKL<(;Iq8zY6eTiEyMNM8eocD*U&)NG;!6;N$kt0)0&A)LNz`__;pcI zPh){r+2fHAk6&LUQ}~52Rng#!D&TZ+=Ov=7r@jm2IW~|N@7!fO<+4^>7V|ARJ=xcD z&Eir7l4%eV0t$C}Y8npa(xM28D&GkB$X`CU(%Sv-Eh8i#MEB_WnuTa z{19)Yd~*HJx4WpHKVM?(w9MQm=k{Cdc83r;Wm!%&5j`%>XFxY2vuywobCz|jR(;zX z438^Wx))-zbrhcNH*Ftk;Ns!+4i;$5I!H)JEW|z^8k(#+)!4Lo)7o{Phlgj}CI-)P zto$xC#h;iua{rYnP2+Da=eJDrcR&0;&koegoJX;}#cmxgHM)*nUeI~FEEZ&XgGEm- znrY+3glZqgVau%G$mI-+y3La-HQO2!AzpPt-2EZt^`cXor-a145cfp~?g_M$)4+VE z)Vf?atfU<6*~de*vqQ*bx92|c*@ea9Y?^h6_kdr(`r%ur+ojdze&>;nC*C0DR5 zWd;dEQI&u?^G;uYxRCp5TPz3ft$89^T3XDtxWh-)3SLR`oku<0f2}*(~B+p)OnZ zY*1Xa#M_PLHJ}_(Ewj|w*4b&I_38$CWgJb18afrWzS;6g@oOT35mMQLAS2np*fA!zLxbpw|%b#L|Gc!YTtkecv$L1{0(`W?Q8u-wECH=`vZ|;@;|>s!P5zbp1Z3 zHn>2|{t5#@{`r}_;+^^^dYCT)nKYs_I>?p_ob8MkU%;tunKygD+Z$yQ<5j&SXCAWJ z{4$e!)O-@+eqn&(&zlh89WffIpwlHvJfYMxB!z;3=In|nfdaq;GQ zN*wE3qF)VD$Pj0nju-3Y>~q9Ja)_mAUaSa;b}%uDkRed~NPF$Xsr-ex_~xijJu}$V4ua?mH+w zG!KcbWHyjA4in{sd5`MUR`|{+9PyYK6Ao>=fh9 z$krP&K_7lPbQhUiN8dg}+=0+crw)KrY7xlP(XstBto1wO-x!do%;FH{b-&yZSN4qk zXxj=6nnrSHJt%VbXxCF4w}g()s@q=aBzW|^tc(aN;~`rAE#O?cfVGZs{1zr5iU6J^ z(>Jr^Hizswc1c1z?z~^EQ7f#VpuoKk^cmq+6H}?A>M>LT_DtMhFbxbWJl$Oyi0Uh^ z9F*ax$t0c%(l}3dK!(z?L99N7c?iLeVC6<`Wx}d4%(_5ADg!J??gnX&=>QzY<>uIm zPW^tjj9x1A(|hk7bK9GRW&?1pSM`@&k|4TTMTS?{fb6&YG+a+xE@a+t(C_N4NPXWN z;Nkq8g)Jdeed=8Tt~*@{LzC;{j{qlW6VIc>bZuN^j6m+MFUAsKo*}`LcVjfhCj*s&74E`@G!CRL3aCSAz*dr+CL(H= z=sE=6Oy+Am=5C!5B2K6Q(onV^QVK*;8wP%q?19+X`tqh#Rb^%C&txATpR1`hq91%- zY5pN6i1*tu{SQ+7Z4yfd&xu`5{9GSEBW^Yip^ALgpp!V; zcC2|JEJabA+nnm`;v9bsp6(~Fvz3k^-N?dcN;oVltuW@rxu-^LAC=L9PHUf1D)BOi z)h|pBon^Z}bDG99YvwP`%$RVI|5mp!SzkDJJ70yP-{@K!8fFT-W4ULP1ItwuQFSe3pQj_5+BmIDi4EU!eDFzHO(FN|H4hjN-YllZiT31bMUOuDk?4_U*aW5w@NrHOm-tO!X)T#k`Xv`n?+Bnc4 zBo?=5YM)3W-WnCrJNS&>=Cx#91!}}bT=$y{+WA8xCwCh%Cq6BwHYZ#_Q61amBa zbbG79?rRWK3d{U*WDH12#=S2tu|e)+;g$e&BZH{T$>T?%Nl!Y%k+V;oHda)<^2*JB z{|bfHPju7MGl5Wvh?gTzU6pXn6Sfac!JR z498x=t;ePfdS}gt26|LtHyUfg*M4~56ZaI6KR`bo%=|)9@##b);SgsSppMhy5(BKB zvn9hL6!e~Hzh+6P53hjbhnJJHMHHjK?y&+v&NEt^9rHy>472LfkUDwDWz1lugZXAG zgI0zqMz6v;a-gx~XZX}TLLc`K&0DXNZTHu72p>O(nQ^87g7kfE`_&Qdfi6q`!r5`B z$t)nC-zM&LFomx{%3QU4kAdMjy4=)rSf{S{`0H0uR4~H6qP!e12mKLlDAPW_7*-8B zKxW~80*bmJg$NJi%h&w}asBxkDw>}XcuafW^H_}BBbk0nslKq(n-$z({z#MdHw*i> zkKCCIm%zMS29e#+rAla`;acna=#$Z+?&I6Eo9z$DyW=PQ+VK304Gwn(it|yN>uZLJHjTpZgs?G*? z8R<^7E*xvzN_cEcT%d`PmY-$T6n5SD?0nO|0{kB-fH_4+!^`1h>Ulu{0iT^^byvCz z*B2M#rXsN?Lxp<0iCQSQO@(=~cDlqBmk%x`NIkS?iSy1C6if_0+t4L)`i)1VeL^ZoF|N$B}mJ5YZs2<>ySeWh9YMgvF} zlL9qQr;?Z7E}*nUMgQ1bo=@?L87Qkg-jXrv&y5%f`+M`(1o5K!1|~4uc=XBhyY%h1gDA41MS5fiOJ;tY7GPK(BFU0#!Ju_cKtlD zKl=s?SJD<<1WATr9wzz_cY(!nHZxr*Nx-2$5)@`|tNtrjuX0hvcqg52$XGR>tQ7`( z?^ON#gD5%J5qe32PN59)iMew^3-T{s+^hjQrCTLH@HrFc=7j_5bYT~mJT+;HVY98x z$eTW0^OSU@=7YIzYXEvBy=7`iaj=#jTSU`^=femwX9nD z#HB{kMNYWC?@`D0vgpma+>D6VLq^g5HnevQgP-MDeX z6s(Rha{}<3Dio0fGNEhu;prI}Mwk63T}G>ItUn+OZ*iX-9BfW6qK0&3cvm}<1Q#1= z`bFK{h0by51Df&^>~i5Pyq^H6R|Ppb;KoMnq&=XSZWJp#BJIXFpd7ahrEghVj2`RI zcDI@3cDaYNmr_F@x#mO2t=%bq+TL1^qXiK8W4zf!9A{gjFPj+o1^n&iqB1T7veHsl z!zuI|yyfkF?`3ot5;r!I(0iiB4UvJyF0l|05y3`d1Rz|!@LM*yIU2>UW3n|NWkp4i z14!o!{vmwY(TRy~IHBz9p-;nT*u=FN1eJODzGk9wl3k^j+YX!>C%ZI0Omx^?f)%MM$x4e1cT8`cE9ItWX9Tzy}Kbkx{&1pP2If2psGx6iMH~dR@{KuC< zm%YJwzED7);UVO3)wRfd>eJXVF^l(*Q`)UuvN>QtMH5^$F3xWwN=k5W@D$3>DIAdmN-ss4#&2j)2uXeHWj8Ns??~VsaP+|=QayiscdT&F1r_cU zcfWaU{F&n0s2|bNYo1l_^{~*;v}wk!)@|3JJV`*F8m{%r%{3A5+T`?2L`&G%Tv5%k zm4q+pK3C;pjaWqyY~e7zH~6^0s$NP4gTJV~GucY-wW_a|$h40_H*9{N? z)4_ZV2Jbu|SgbgN)UmtTg2O`W4qVv_)#X{B9@rhz3OuM5agCAMx8R}aZb(Y7 zk4=@+`ndy`=g4f%rB&ls&Y|F*Jc>1(ImF}xCxzCSng&NETEjgby^>G_V-&T{c$jg_h4oYR0S zjnlWa+1_u`n`cc2N(4k<50u8@8be${rDJU$kLmruqh!;OiHP8>KakFma12A+RwY*xZg(SESo$=K8>rpd#@!>ECs_+^}b zG2cBNAknNb-e&R*Xu~UlEZ*?o0Uh1DbH>17Z`bU!%dr>_5--~dET`zT%3fX{K?RpA zY0$cF;FxanT8u~lrtTiITK=bouj-qahP*!`ip!_cr$>9MrfXvr*sQBZkVuRRtmk`Zb8^1fTzf0Z zaL(>x;(u^-R%gl3_PX+@=DErPcAjMS1nx{m|D6{5)00H&UCm1XeTIOUYU!lL!CEjH zat}0$BO%jELQ&{Md5%!$$Z8?;T$csW)YL0)#@AxA-kvwLaaRX9t0zD`)0591Z2IZI zrBC~K%;lq&C-(4&35q}VZyM^jQg^Dp<*ame$<=fr@&G zbi6>LwJU5(01goU$iNS-m<{SHHezMaf_@HVJ#wY@m~>BnZ4CYtApnF`Bt6uhr(!x@ z>9Dn(n({R*UtQNl5^sBF`n6Jz_{uS0@r5&}MaWVE!E1-2Jhc=A(Ea>=SWF^3Cy%UkTOZ@oV?(mn{8%zpN3pyzrueU(Ji?w?^IhzkfZs(QT{<>KCt0 z5(^{Z$LD)qir)1t_T?Dy`LU?jbZ0;DC74-TW1oCn^%Z>g2Ab16mP0T5{rgM&AqeNq z!$YHq^2o?R0OVyk0GSaFzJP|p?rz0fTg)oiS8aS53qWtwL?>!LUz@SeYSEea$vId5 zZGaxX1prtgy^DcY>^g^RaCEPAP1xvCPin~OjQhY$W3osedi;UVLYieqE*v5~*0)ywrt@$?Bx|OHR2a*>- z_8S0Ygv?;No;^+DkXhD;fV&oT#9bQ;OqYrMKBLcV=G+}%jF-Tw1XPzWl=#AcqMT43 zsrKRkc21aX5qcwY#gMP(rlum2 z#JB8`#l??pxVgA4i>Cg(0ug{nB$TaXe@3W3n6kWJLwj%#F{tnn`HE@k7M`84dy(RRllHE{|su6;2>G4G7^UF<8ke&dFWp8IYFWPKdL z!fiT}WGQc1tAHaF*5@ZDC|esGa(gI8cbqoke%o1^L6dyYnS8#O0`X$hT6IK3nMvIo zHJS6u`}|8LK(lOC;%$kB3auHVr{$uTuF?FwRpkx+|2_Qw99RD`!#k6gH_k``&LWh6 zVf_ASCTCESlUEzZtRtQKbCs9@beS)oEc9G1p6f0$vLQOkapi{?(12GO8VAIdzsS&A zgd-LR^*B)H!d{I-v`&nsi* zUf-Eg+>pqEmujsp^*#i4Lo9QQOTFy+(gwYhLeL$U7OG&qyn-U9wx)8y-w-NtS66KS zLqu$nuTeE@*tx2uRN^qIOTcHFIN@P_6`)&>hr4cji!qwc<$ny1Esa`_5`P3uPEy!i zc57|b#ilkS<(jxm zb{$R=N_2q{sx!lBV z7UQK-mTIIp$ZDYR@D7sQubCH#)Kst4tD<;-Rv0SG!R6V#5g8dZurDMapox~*v)lF< zsq`QzI54kii9gnvNkJITk459~Bh>NRT(gCc6PEf*L~V6w~Htqh%;KIcUos8>Imci{lhNi+42RQ(A0 z3o5XMgTOvc`+Bhu$zb&;a~n#aFL$@leJ7W3aWCm+JR|d<^|YCw0ul9{BN`g=SvPHM zAs~z7O<+8bzbF=Rdw>y4+zHslT!gsIR^NhlWSE{EiSF59rEDmTF|A6Ffbu&}^e4~w zV*LUYZ{a^L8ZEJ=P={>g%|BP_`C>1sdO4WvThMvZ)ILmTva(>T`oebz&Gdu}-Jx?& zp&{CeiYr$JWu{6#J!QYKL8=k4&>V52{%$BxXUVR*M{EETg4VyOUz(DRWqxqNU*EW@ zKso`$1>93K1sRgVC^}zxAvNa~HKN}6a73O(h~CQYo5R#tUpeSU$aw`BcTRQ`jGkP* zsCnuimbVVXD;n!3?J^o+W8fma9BG$-#KTpYInXj^f#EO^b_8rNiI=aeX6;#M<=zK{ zo_Ldda>T%146ByR?$RKG)aJOntZXK*#OUnR;`Vy8rsg(+WN^Rzf_x5 z9E#vlL$khXxOeT=JN3x8Q+B1GWlwRW9!R(|vZ1P+rWdLfi&gpB+7NgyLwRyNk9yM6 zCm!93oHl;wHAUch=sRT_2ln=&>_tBOyUgP<*;O3XA?BN1SJbckmP?XZ;&>?GZ3}uB zUeKK54PC7!zbWj>g|eDV2Ay$ z=Y8n8Xc0$fokoi1LvP5+>Z~JTE@aVF;+_WsbCvbAnOF_4UiB2Tl%&NQ5ZgWm2?fU% zG9a%HqnXUYq+(qS}FU$tUopMs!(~bw1|cUkmJg+)EPl63e&DX>yrq0 z=R=XB;2%DDTE{@{bFLahWy5Fi|55hc;c%|o+fkE9kcKEhA|iUCcauVNLG+eH&qVK? zNJ#YPov6{n=xvbbWt1=&j6N8QIvDMH?VWv2>~ntmT;D$~W5)Z=`#kGe=N>w^m`XDh!cBo=b`1Xf$ zUrqznt!sEG>)+UKIL*^UbL)=H9amtsBN22pGZ;kg#DO9fOiRV}q0=YJQH2(_n7lC; zp_BD#R}eh&1fztL^Kw#7z9?|f96&1i0oI+RoOthc*ysRsxF4cSmbQ~vq4qO5YWaoo z2=%tjxC9N*V1y6gy0(@qq9zH<&c&0;7YFqn?7wPi{=pCqHA&VG+g z0~Hn#1y&TEH+{8U>x53Q<{+ ze$aDYaQ-wa}`#9oq=rcZz3wl_-X=l4SG zL4RW)3d6=br_hgu0ZK-(zyIOAX^s>#ux>Eh$CHNH^2bm4?{BqI>?8>6d^tKGXg7Qj z57vT`S&r8|QJN)jD3ogFWeFkp!md$R>9RQGD{kV_J@fwUT6@p#Qr;fd=8he@zupf> zuf3AU**2y>aQ! zMi7#eMs1a=fwY=lGv7X_Y*FBmlbPF!QhD6&!sE2$6s(LQ5z({o_hY&$Xmy%mSNXsO zN__nAAuEORPY{`?iCk=E5TIvd_d&=KBPO7dF>YA{%-Efd1q-C-mzmd8npKhlv_W*6RqW}Fnzzz0DZ}iiX zK)T0st&++qp16zO_qA_1@aNY#qOq0~?`QJ7&mV>jRK=#;W@pbY;IaU;S%WfN(odZu zw^n4!*qz`vKZS1Od=Qn7w&On>{UXT)5G8qC|92zVf5H0x1LXa6j_D&#-3>RH1|iNr zlL%>z7j32jbpdW44g*om{%OFav=L!na4r?%Jqq31BOIGWaT^3Y-J1#|(aKDXuVk8+ zqA2h^Vu^x3iJCq-3G_{ELThVd7dnKyk;D z))HME5gBPBba&4~2Q&+~`h&NOBy5DY^Y+8Xog5q<&^ce3E<#kM%giBO%uWRlcj{b7 z0KzNI@vNQ}_vvfq@FL+toq84GJ%HmiN1C**1vN)+iJWJ#E-Tx6`{KT#z+hqnV_uCV zVkzgHMm&95VxuHORZY?{MAG=BHCqbJ-hg6{U99({0&a>wa^J)7%PY;rT}e&VDi=w2 ztQe;ORuJg4=rT4?60qCyoLTnPVQ0rrmkwda3JZKGp-c-%5$9gtxDdRjevS zTW?XE6`v=(A+C@v_)~~Hbg)@Q;Vp-!@G6x~gWatU{{HzklmY&1AJfz_q$epuyAiJh zRX*jM@)2LZy4Tm+@d}bQn?tJnq9ATwp*BQuOaeG>LD$r6N(Zk+UW4#X*jVX#jM=v@ zN}ekW(xIgfYihpT*IfCz=JTyuY}au-A9hHEGxBx;|*{g_1H7;O(+SFD~|9zd`BMGQ&Z3XQIyW*;?_kLC1{P)-BzN zRpuhTmcoLs=0la5W_c=wB%@<*UKML??vnFKay&!m=|2O<9G|x)(`sA)=Ri?OgS&^$^Aj1MbC?PgzMQpFYK-B_SE1pnVBvXd$_;Nc6-1M%Mk0 zK78ySNdgBF`5pznI7#aN6luI>95L~M6X}@}E?U`>EI3;ASvW~D^SLkYofu&NGk@@$ zB|Xyr^6fP30U*7~0pNM1JaQJ#=OVbFkRnd`W((C~rMUxy>og7`KE2A?lznNeEJ~z2 zU$z9azyFATgN_KHPsirZxkDsPKO^lsD}; z9`E$81n)AaersI1EzcmiM&ItR*e8jXd)trTe8;}42yd=KpBVystBAUbjKS$dTfxpF z#R=nNF}3y8ZEsje`v00p1Uh}A-3K4%Y}*T+buviTOtq(T{MVr7Kjtazp-HEPtkps)Ux?Sf zejp?-DquNDX?YQO#Pm!t+{^iLDZQvO=3%d>#~!p>Z4^>%MtWem>IUCWz%x6_?$Jmk zt{BZag!;SHSxtCrI6;rz;uuz(yg6WiMY>F82rI~saTCZVj6JH|u*I0-3_m0NPQ1W}R^n^~Y*?_)ChjgS{j+iJzb zC*%l#+K?07GVyY`BDxbo*JYfyXsO(M*RHb7T# zSYlTWcAtJs#KFC)=N=&;sweoE>HnC+;q%8}6Hp#W)kHgL_dVZMvXouU}USYYTVaag$>$9hfu{_w$VOFCl(Aeg=P$<$$R^Eisy z7k*r&Zaq}yyR)*>W|4EWYah?zY`jnzl339m!?^(JbiEYQj`K#ssLCv^?p5DsUgZ{R z6UnOZ#_r!K9&8)R(QXD9k6!llr0^!*VAEo(Qrh<>kl~-&2FgqQR&{_w__aH}QYf=W zLZ%m{_PLpeV08OM>$@agT5n0h z7X?XCdhZ2w?a~!pvsf3;WB8j>MX+ls;0^V zo@-Ch7a-)>?8a@|?=R)>pKP4RuZU2~(=5EvJ-+407}PUtDT+Vpqa(X9BURuN4J>_U zxAH<)DCpaJO46_Eox}q7u0#z_r`uiOzJZas>x)!~YWC(m@9liL-LuJn@2fjlSnzoH#Z>TNQ}u=h01D0@ zZY6ZFq;h>LvR(|z$Xea!%mk(slnPwAnbBljLnXIx#k{}3SK-9m>VeOCaHBg1D@WXb zV*10J=dL+cNLJ^lnQZ@^4+RoXZ#q&!HP5XH$@s<c}nhmk(=)| z%H^1A5pGVz;baW^F%D}UpQFey2Oh#S{=h9{-69HkE(wC2xeX|`&2 z)$`0KvfgYD&Whiuutu`d>b(QHwU@WDV#}gYhBPLg5|`aAfKhED_Va;ea>t;)WYa@8 zaI$D<;ByfAcXxIr1bLQA~z{qA0g%6@Su~VZy+rlFC+!b+kouf@3wdX^J)u*oW@6;U~Z1Wu}ukgY+*nyOl0YGbHDW0?ixeKs;BDzRG z_7#HE{=3nnZSH`gTCANb&YP)V`nzE&Bl#o(zPDvsyyP(q zi!8COL%j|Bs#&O`QsY=Hlv)3H|8A~sPK|kZw&^u@RIPR&YK}yRpg_S4%PWl<^VP|AH2-rJ%fA$nj4PfbvZXZh&_es_ zuZs-ifnGOzmyBNYO}nTjDzTd`b|JK*aNAXT{6)X{rDp_=P6dTSRAP zvl02;PUVh9Imq{Lvr)WKu4G1PwP?!z1Bt9%o24LO*mXL0#qNkJZ^N?EeaXm?aAiK5 zCw_9xLBys@{1R6#P_oW^?$6Oj3=cF+2u}}6L9XpoFVV1Sl-U4x(HlSZuyB3_hTDUs zlkqBdB4T_&q-L@Td{8cI)q8L8@zyss`pF_gD_@#W*O&u4j+`g&RNJF2SE$G$@wKlV zyB9AS4hzYzflQe_k%%l6KM^PX8R0IAlfsPTSO;^aSO+o5IWsN9jv2Iz;#Q{XEY9tI zj__oDD$MX&xAah*_LKfpaWhu+(yAnPCAEB6f@q1Ow_hL#E#=D|l<|RU&m`r6zHrWo z8mEZFBJ@3N0^j)Q`2?$EsohLTj1w!}o-6#aSA9`+vz48v5@1DEb<|DzzE^fd>x%>u zzl&y5*P{_AU=lR&j@BDqdJNwh4N->`-MlbRGk^;&L9Cb^aSZZXFS=$;-0;8x$D1tu zpNFhnxpU>%+46RBuFI9xx@<2LbSxzhVPtW}8#sp-;ImX4w^fU<@V#FIy=DLP&Yw=i zIsDuBKtlkasGI{Oz;x-YbyMEf(K&$F4*gwS~zx;pd!(ERD=M)Q9-KRmLUC ze0nWaP`=vm(@nx=D(&qA)}68RX{JNRwFq%{f!W;Q!wMw>7mI=+Z{1XS)#>iL{f0%u z)+0B*39)@3NxuDogz`bJv(sW-vTs^cz4uz>iX7oPxl)s$%Qx+NWv!0-zCeu+u(#|E zf7r6B)Wywp$1_#S^GHTsT!gKMg0PjzwYxIDyh^cvE^m$6VdJ!0GHbNZR*KXUHoEje zAtW`YmRQ2dWOs0?5bgeySa;M5$f8D1xMK-dlq1unNDgoX!PtFpaS!i5>dZz-{EhL) zW(n8j-S@PhZ9tiv{I0iin>+cLV<*Fn@5ZnW^!pX8iV&2RHM!F5D|hF_vKy!VQlB=e zgr#OME}#@VcwY~9DZsRwheE#+P!DR(d1YXqcw(Iv-BQBR&}ezK>st=VIlh(#+BL5Y z_&Nzm+vVigZkgPexDZFQZMJ6&weG2vji*1l{4wVTZY%SV`t`~E=Kx(g$537pg>7e# zZiRM}_L!~H{0UF86j1WGi24dQ%S9xar$Vjl&7b`1^#9?W|LuniHQrHe!a9f@%6^dS zez<3gUv`+zLw5F2vwghIZ>e4A+sycJ^NegY2Kabgb>Hrwnj0yZ-Q0qKvy1|^GG#Mr zG={l)q_Ic4k{xXj6p^Ogr7038)kpvMP1+yed-)X~>U}##uiiLwmvg?6OjEm}H}P~> z09(!R`<%bS%WfkVIP^~)Zpfg7G2U{Aleubk0m)x!090m~* z&HeYB$3v#@@DGNOF5HYhAP;;XIr3Q)hhzl$H^{lBF86juv*hR@(Q?&wTT)G4Y`;Ip zUnlb4e_N7gJd_qgt<~d_X2+MkP(U_r+)~8y-yitnH`e=8yS1@iv7($;Iw)|ks+=il zEt0<;PNoF1&*6k zB#VJIihq4E;5T0_LZBM)_OnpBi%Pba+DV*<*~U^^MnV5j=TVAI?GxsQL_u-{)^iS+TDO|g&A zO@tr|tziA$Lr07K8CFmJeq=vB0YQzHoH;qM&fJn+SJLL6eR}x&b^iBFlkWPiC!YHr zmW&YcIuv@OqjY8Y%mqM6z=-iIWQhXvVQu_Y+&Rujn$mwPDJJu=R(%M(@g+%l`%!yuN;cyw}bPH4xn#_FWTLHof;o|9Ce4LtKy%>Q_<%m~n4h=&`Eq@|Tn zlI~B&LZB_L9q7eR>iG+-_)A{&2)An^y#fX>ss_NaY3-Htimzfo8#?bL{{Nnb#}8Cj zIq2HMyHj1>hFB2be)v#j`_bQ&<;NRBPAhSXOm*+i8-8FwyTB_Nsd(|rn)!wQ8IAe< zcmONe?ts5Bse}S{i3+f8BkM+7%j z6BxEmH1I=c6=Tgk$1oh(JIO|0e;3ko_*VEB_)#{XNge7iZqlNgzbt2ef*dt{Xo8;Y#9R^g(P z67CIf2z<<73#fJb_rm)IGfh#>-RK%}?Fq|)St`|85}LPc%JESC@e$w4T+b_B-x`IU z_&7$x#5TTdFWagULtk^9b%p*WW4~Vd%J{nYeL7u{oTs%28Y@feP%9#5tA1e&&9b|1 zoWxY^Zu~pq5wG9K8ONHXn4bJSUvgNYa>L5fEo6H26RYQRLBN?UJ1eRG?K~e7ZMRBP z`ebU2O|*^)UT!U|SQ`VUK#;BIS-?s#Wqxd-Q4k|0jKGqsDqE2K! zDuvjeS#2P=S{X0b1!{a;?UdajdQXWVMr#~v5BE{Wkq**IXT|Do-_ckMZ?MN58|}7} zhT;w+m^T>bWqI3 zG=4iBKJ=vF$%01(h?4uLvoir0{MsCT$=cq49S8_N@>vhd^jc2nZK7aQ1F7SF^Xy*X zFe;81N3=kDF|;sx2x#u-)NatzW;K+M?PQLQadUhl8?+D-(!bC#@q}Zm^6kVuUQ;hN zXyL>amx9<-?|pT?#NK${qnJx#y_Z+2?Xm&~)|$8O0?|$h$EvV~A4`nqPN9d`teQ5h z5N3f>*F>JNtLF>!xU^Tl&P9b4=w8#a@d8@_^-jh;35(SR9La80qze6TIoJ_+s^rZM zcLcY!fpGpzylR6UwX7VQQN85$m|6`$av_uL$=6kCKh>3#Wp>$a~=~YPiPSz8*Kb#M|?!d}6;QVL_x# z2wf8D+?#cFDEU_()^nYivu1S`3UcL$gL|N^ZMObDKLR4AjAOVE=!Wy=*7nsd(KAH| z6wWu)9>|yHMH|IaK6Dz5MRuN~c(;%oep+;}_^MqWIPTe2IIwW25y9Nmp?t2!>qxr) zoWF_@OVtWjsVu>VwVET!>g7&(X0zU;&jcP7bfQjr2DgNz4ZIx7Rz|A3;2fl1s~XG% zt20hG0i<)YSKJY&;EJu*#P_uadnD@;=;Dx0kw3p`w7^}8A01$iSdEZL#`VfrjN}wQ z--t7s6W*l=H)Nvu7NZ?VtXTogOx&>BsjpfI(vILZG?=}q)m63Zr>XeGFFW$W%~w48{6>#Llj9d=tI|KdjLhb6UI;cGsU=T9Cy0D=I&(@YS4ORchX|pdn_nDsN>*Y zX8BLQ7c_Q#{lLA!UavrNIw{{#%{J7Y)@b)suft1v>+jYmW|RI>q&z7;#5c=UZL&}y zdtSvl5LpXs{4PrfHu?54fE?Hzg&fV#YTF;C+@T25V|@t8_XX`WsNAl@SpacV&?05>$(g%Fszs!M^$Y?y7gHIkseNf{Pr} z8P!%C;wI098CO{z&W&d+mSpC_b#KlaPp6v{$*bqNWP{z^EV^U(^P}z?C{(Y0LRqYMK4!l#ceR>sQZd5!3-gPE$e?X*dWtueY86fk>Z`;hFsXsqBR3gC#b|T z1f*z|qrX+O4ObYD`W++I`g;@wYQ6GtN7OfU!@x+vGuug>48!E7(dvS+rTFtsE+poC ziUFX$5Y3nyFd{vXSg-w%?W$ve{uTEA&i;(HOgL#JGrLfi1aM>vEAT&_BL0F|om<~P zlx#gyQRC^uvnzwi6fLxQlsWCs+2f`B!YQ z5c@ia)!$u(IKm|4?Ig!R7qeRA2382AS4&?Aqo+D9*lNCnr!#$r?w3!AN3`ZX_0Y&E zYEEx0#~#(ScM&74Khv`jX}qukOAp-=eYpbz&voPk?BAl_5+XIHIovz(=ovicZ!YCm zX0>de6FtN_HgcZ9t63Av*5jg9^}NZvOZ(_(?dBqQoInD$3NC3(bDm6PV^B(-2Jd}& z5-^9GB=88?F)F$=;kEmuRDwFb(Zljy^5ucX)~m%~@+`HA?uY`7@=^~zlXpOBSJlSe zEJis(cGfTwU>hSu41njy*7OU4oqJ(X8k`B8N%0u@{`3!nXp<7_f3#dugyU8<@}EE4 z3VJFUpy_>jo+}XKZ5ns-ur~)qu3o1j?XB)#4z+mkyV_+;zV!6q2sz4t&cY?rS|&|c zi$Jl7fw|oMe7;V`_g5mdi$ZlW{q9O*+fsTfJ7Rc8d_1x^Q_ZzwdmsgD~hJn;(O_2H$ho z3wrv)va;HBv5pk+T8ocE5_UgzQ>Z8T?xROpfPw*3dDP$*D$>vQvba3-P-m^$`y=XL zYa_?MO;`a!{cbhX!5P5X8i?lU-pSs`Q>aqh)r5vQMUs$d)-*OD5bRU;| zwy-sNR3a8oe5*^Z_4lI&YNhzNQ~T~zoz&r8jOM3a)}h|@Y>)m^<-EKY>~W;1{K*U- zPtrQrRhtW1mLbG@Jz0HPVQDN2!lC`(J4yFL&Qc>3S3JLaQ7(d{l!u6ODU&MIT~9j1 z#h@2Zl>nE67PKmgOJ9{((jzRoq_xT>?TMeCYK@14_vh~9%D$?VAx-^z_NJbUiZnx& z?;s8@zq}&?5X|CmfZR$(b#$P$I!t^&iB8C-Z{%e7$8NAEO%lK5rtUzAC*q||4B0TK zus60Wa+INdHeLm-7^Yx`lU&Lm%JMv3x>1eBN@&=`qzHnCpXTahMMOW6F=SU8EpAhI@OjN5$TZC1!C~2U^gjf5@g}7>=D|+T^7{!!(NKQkG zWx&MlUZ#s!DiY4()*^`Iv0GP_hBicbNq(b0gZBLm4+@XKHxR@vxkd~Y+aGoB^7b~E zy1(6nOu)|K?o*nKhwdLdSIip3HB##X#e4Z$VIG5emOy+XAMgu9;qhq#K>JhKF% z{AwUx<9e(-!l7NNBg@25(m2!Td0BBeMJP z!Uw$lmtV1Jr?_FIX6=CU`8kKdyPZVIjyAJNbym85ZrG&Uf^p!7EQa;~fO@+}1T7B1 zswIzIji9F264zU8j84KNi+He{hp#OdX@>+`k4uW7j6-=E0@&T933)E`&!&-+AH3XJ z)RhVZb@)|$<~HMtR9P>5dG&I@rbVw#+`D-nSS>z)1fkQZt5hJ#iYc463004Knz3z@ zo^}9X6JJTHTKz>wEvQ$ z^uj4;uQJ;)4FA3ABdp^H+9kP*p7wYp37i)Io4)z`6?lq#mfU?I;=}o2CPm`I4xw{c zbWM$P`V!$U@WBU!qw1qQ_TIB7-+0XR);*vJz9c~3!V)!Z(iiTCRZNbS`&8FC&{g+-6;^nSU$Q@us`o=%i} zOy8x!!Q9yw(ouf=g7JEyX}%qMP3ke$|tCqbs3sJiffBFbFD;tGfQ^hk5c`mz_>ylcnj8Js5u2z+4zlyLV?((2sqkNyps5kBx~Xd)^4S%{}Ny7LDb11pMCiK#X_kGOeJc04EEq z{()Y@(b_@yG1)3YCTva9zs&Y;C-3abOhLT*X{D2mIv0Qo$*Wb0b~Xpu5NZz31PjZT zZSW>6B!>^RHnNg()fB>Zuzkkj z+!qOD;sS}O_DKoRlojXWNWM57&paDFSU-ZNa|wSG+e}cbfc7uextLp*~x6#s@t& z(slrB%g+5Iktv&7XH)%Y;zVD$yctqErPR3NPCb5;F*&JQXA1ph0VcAWGHqyo#;MeH z)|7pnm5|9Mt$1+Wcd8O7)_?DuHL~$JZ%~l$lRz0X1xQosp7S_mpsrV7YI~k|_QQ z984m_+z}-IWDad2h_;FA=ZNp@>wkv{9r!;g7T>2f;vF;E838N0*KLgo!$*sDwBRJE zu!p~2$CwVU7(-TKU{V0yr^c8Cukm{5#b^n_Tz)yDGLrZ-+p{s{?G5iHJuwlav;w06 zthhRhNcWc?Q%=z&Rj%9u%+`GS=O;A$do1W+M5c+M=j|iBxENmB&^#X^5xQEd$JF;Z#nW#E375PQHdzoREGO#?4I;>vABRf-XaifHM~$o?IzsTzoIzpNGj4 z2BOCkEhpkFm}8ogL>Q&Gl7hr2MKssuQ9t!7)+m zXnX6r^=vjLB3O;~XP7uxIeCo#Dda(QbO>!_6@S~$>?TFsiW-cta>}?Wz$6_voUc+C zXnTm;$-REVjHGuU#rHI~ zwYnWPGAXyuWG$?imlO!DWWh6m#^qC=Q7b!Zv;=VJD7Pko;eE`rEDfiYL~NlN`<}|s zRp0*z^Y9?t?4RPPbH03xX@cAP9UK&0LiGjaU=i!P!2-h_b4g~EZ9K@7NFA8ffqbET z3D@u9o7n)e^KJ_>@sbN>2C?rTuP6QK$oQ(U^?jKD3X4_^s&la|zuLWW{o37|s2BNf$ar`a2S6ffKEn*&D?xDp^QkD)*or@-mxOeo z6rl(MXc40Tlr9`_Xg=L6^*+H9_ByP(d-v|sZIhq=1n0?hPSPg;-zFwB*2%fPyDi1d zfNRO+OB8qN+!%xMY=N>wWaYg&l(0I%vqXN&yF{0gZYK&@f3{%gp(K6G6RmrGoSSrc z==1BAz&QU*1om1>&?nO>1l@%<{6vGxEufR#JAh%e#hMZ18iB+2U$&-LMTy0IX%p68fM0Z5L`~Z*K>7(Fi%&K6Tq&1}Gj~&BLGor0Zte+Q=(1IUc3J zfsOWXvtT@~gh#ouv$!Jm73_sRHq{Xi(xM)8CIu9{G4ic8BtgmOEw_H& zd$3Q8(nzf}^o9@<)YeKGE#$Hu?kKC6$QNE=sngXxnp$lzv$`wB5s9Rx-GWsiUOx+? zkMyb}cR-U=gaBSM5YrxpZ;^WK(eESei#zSPLobBdYiw^>v|oQRKmSTuByrGDJol}I zt8+8@c9U(w(n_|3bD*i<78`DBV-k^(r89I=+HE;rrM=eR{jK}hA;ost8E{JnjS1!S zJ%>!1%K7_#-bmx0s+int^dxv^l>3j{My(Dyp%-U<7yeqi4WorZZX8Tx*oQWldZFSC zkn1}Nvxj9Y&fH$Tz^JU>bm2Nncmx!EAe!O&qR#!3V@m1QX&Z8k!Cal^iNCrJ)~Kqu`4cv`z^x@gl2RSW)u5tYZM4>$!g5 zwL?`R=4w}K%6uUHfuKw}#8tkvp1-60YZG_2;pKXR96(ZO;e3vBU5W6Y%+v9`+umu3 zrT6B$%naIG-hl$(b@kpW9WU^7fGRUGRdHN3UODaP-4vJK=WB)sdaHNlATEQyV=N#nZV*JNCPA{agCzoUaSf>uPQ8 zG2z$x>?s>1y|!!GD1XVMqqAiczEL+WoE(3?hBSLUYFL0`08Y2lC}b}-I9bNSpw!}axPrfJ2d*&hWZEE@_k4`9OEaKonZ z*+L-*>4)Oaapn@vds--4pzL7lL8jNr$VT|A3mKo*e5>x-1Es>#T$8)ABoHwk&TojA z^d$7y7wMY4PTx;B5xIdAag8?%nH5hzkX?5vJhn5AvO~B_gD-i90kjDj8)n`o#{`>z z(u$C>*=xTVFSJB3OM}~=-QoRmJ&1~%roD8>$2NpKr}qIiD~GHnYF<50BiDGPNV77g zL|K%tvFiod$&R50|KQDkTt+;?*Hj;Ovc-#ef7HZ;hB+%0Y>i_rQ<2*%0s&`}z#t+8 zB-09Zj%^gZXwT7-LWQQoFMEB}h~rP;qz0w+xE31ES6-U)lQo*_WEW}ilu{NGS6K6& zQkgvjh{LH5$moR3S9l%iM2u6^rh*3*2R$lLUEtmb$Mv-RaRZi-N&r<+OA)JX0b~}e zSc`$csN~>lf};UfVa$P4ksGuA^4PbNk2G@J8_@EF!d@F= z5nAD%j70Neb$BzjEu6AmJz?NA2qo6!)T;V1!cb@g6t}nDmNk(Fph9XRC?rEW(!ck6 zI4*Ap`kpSQjo@gX+pwqrHC)fr?n-36l-?3ZiPcL~`du6T295kFk-k5#e%$ewEY|-4 z(GU~7vP{3?x{)-9rdg3d;W`Qt;ImOtjuK-v6fTO&X;r^#=IL%#a4_JiGb4ZgDth#0 z*e|tVAqVpF)2T3jEuP}G@+e;L)06TVIEkyV8p3$-A0e2bpz;3$B4Fc?S>lm0x6SY8RpG!5k{-ak`Kp zEZQ0!?75VcVf<+ZD9t%MQIf{4Og@V3&=#$~S*rX`tIJqOvZ&|^u(mk|zJ)b3aS!jz zBr0P50n& zy1*s?Tn7ysaXL?m$~53`wI40al5C}c$nT1>)7@fWB9b_mNhL{y+utuH{;C!pw!*$5Pb@v_s5jt>fg1@T+G}m75UC=uFUIM9i3e3RLlR& z5>X4djos9*@Lsq2QrFFvJldr#eol}k9Y$@vV@677*Q#1^((qlVPBkmAwP8IJ=#$FT zu9tJMUmsz=z%BIgALBj%jLDHI6psu@5M1R>`nI@2F9@@=-6Umj#)RVyXAkYIC40s4oq~AU=@RdY*0T{oQ(ooea z@k%ZuUA(ZDB^b?P<0P|Xt9E>QlfW(!0#q&6hqB`Hg z;Cd5M%R_}Gbt_bc)Xc(m3lFfhjxI!vs}q$l%fOP=Fv;%tK0D(uOT*U4KHvXzNPc$| zL2M*06J=Bwi&ff-k)o3P*oE=PdYCz^SNM!EWi%prdSLK!H)ml8f$BrK1l9Y)51$tI zc8^yA49D7~#-Dbc2V}{|%0a!3I3lD&Xk=$wLwI?~;eQlrgm(}EjGxTK4coyliU$W= z=5;GAW9?*3{Enj8)h`TxX9sdS(m-f`PaA?eQJ({V(@Tc;T=WW;N1NR2*l6BY*!1(j znY|7z%FRIXdzqM+;>*?~^zb|teyv@#cpl5_?V62LfpI5z=MZ6@jl5Yd)xn`99C#MPrjgFM!F1l zN{p~T0F~dyfbWvkQhiIG)PP<>r>Gi70+&!T`rQ0MK|lRbXvvM@sm5k{)Tep6V5z_R zCuflb;0$gPH$YF0MO&03uc1Y(6%<0man zspHasRE^Ur8!$Ejf)C*nk`JOsKRHNoU#tEWPxoi?DZJv3!elDLG5ubPLDm^tlsI`? zopujsE;`u)UL<}S3=q7j0VVx30}EntqSn4!eUOF)c=_fNMo?#=Iq|*Xmk%n1vn%X% z_yrw1w!7Mi$#$(kvEA*c||ps>OweA zG=QUb0<$0#C$6sYn)QU3LugMC&5j7>O-&djJtc$EetXIq+I4w5zSR~eB;duG42R~a zvvv3&+-SMI_u5NU^9T|1l}dSu*b4Y2Apcw^UF9!GltO@VI1B zxUlEZ!;Chik2kH~xPY78v$=#Z<1wsQ$>c;qu(22{PVinQkf;tm>J1f6?b*HjAlJrJ z7-eIm?^kD4weJKth8_WnaOX_M!>*xxwl!efVH&1ar`{ZC4_)B^@9iNd1td?iG4?HN8nCd!W?yx|(M9 zDu144^l6CLs|K;PRq>7i9dU8{UMO!&0c$Xunun} zLQhll9BUNmsk-pC;ou!cnB}+r@MYt<{s3ajrJJ>j7VsuuK>(b(u^ z(Z7|qpY_@Y!hI&!op}O1jb6P;g}Ks0cOq?%k_dj+*aO)sik6(p5pT?J5|XkcW9PFSQ}vw~a1sR;z=ObgpqMj=M3 zdjJD@0UWhH{k;J-T8sv?fd}jrBXF*!ZY(-%NCA#f4Y97i)4Zb{tnv2Djxeux(`$?2 zym~WiL6?Z*1#N_c4A3>%M4m_x0_3jl#X2tCmOQK)OS$GToR$i9+u6A6R09+us-E^T z3-<;RJL@|tTAw-?8tc97D%R~jwe(S~oLmtA*OG96|4(aZp>wjD9x8e`z|LesCuSJyn+O2AjyxarPTZtKlF_(I+SI4N7jet25S%yg3U^RZ3 zJm=Kfr+($lU8UU6XeG_OR`ldvGu0g-Eao^9HE=ahLv zEUu*HnqM&la(euZgU7{$6Gg!iE5aBQ0?x#7J##O zheup@-i3UfeoDO2-Dme425*ueen~uh9CMxZA#y4C8d?}G<3MlRT4UN^X9`s_5lM&!F&iflotN_3YPzD8gN7yX7?PhiB!E?Ynm#FI!;nFGl zcDXJGDu#`6UoWT8AIvZ20}p@__^e(Y!3OHxcRPMALDF@^H>W0wP-V1j!HHAUX|KcF zO@7?$e^zi>Gc~sa|n)< zDnPw;ahXa!t%fzb?ns5_shH}qjkkn2k%%=oQ9OkLz{P8KW+xNoL}a}u6A9nlJwGW5 zS|*Z6B_Za)SdtJLd2Mg7w5AHXf2qZ+fHhr}2=D>A^4QGMERzXb`&(_Cu6Fev6I%{;&{S$Z(Zog;l$@l!1L@%8ymOo=+B^IWRR9Ud>LxJg zS39SF>Q2wc$Db5Iyyh)BK%d#wqzIZ~u#GLy$QS;FXsz}@0CtYE-laa?Ybh4_RA}#F zZ_VO6`z+~lwyXBZq<#dWt~!-VD?qcjHxQdFez&IHZ1;@dHB*{hkB2PK8~_FIa>o}4 z)ss^sQ_*pgg4poS8Iuk@H%*ka{$G1v9tidR?k@^iqGX9gN0KdNk1$$P6lEWKh+(p1 z-z6p4OGwtTWf}VtW62>xjD06Uma%2u-G_didph^t^ZPn~pZ<~=@0rj0{k)&$^(?RV zsBn0HVPX&M9ZwpsLrjC{3w`bv696Z#GBN$$xCwP%%T(tBnwD$8!w`lz<03U_<##1U zku(nGZf({U$=COeZ$XehJTe&Pzd6XfQ)QQm)jrYxIZJu~fFNY~>#X98zR+erlbFw| zy$qS}_DP8Jx?p>h4K%~*&gS!Dj*&Dzklmj`BDvm2m}?`jllY$d5-nNc>}aHXk)8g- zjlV?#m3U%BNTYq6A4Q6sj`o?4(YKTTiKXm1fZYFUK_KX~Eia>%%f*Emy6 z2K&vdC%?vvk|~Wuw^pD#wQdm-bTagflUFlJ!~|8&=Gb8-<|gEDSG2J*iz)nWlc{&A zSD9xUH|_WHOWV#KFSYHl!)-xP0pmJ^ubeCj;jFI{xY?lsKw@>plQT;>CH;XmE_Fv` zDo!3}DHWHmC3zIT5vr!+P+Ob-&Azxpw0=@xHR}8eUbJe)-GvML7koc$N1vEPJUewn;@tklw?h!qG?pcacZpDn z9h{o)!8J(!r6bSjNM>0_Cyv8;CR`GM?##R^Jr5Dv0le}L;s11cZ8WOa4w~uMBaaycg;sa|@{`i%Uc(jp;wB=Hkg`uEC(i4enl0QRFpCSnpXE^QFlT~XL_Gxgg z67s+RV)ih(th_@kl02Z)cjm`DPAfF;6NCBd9%bhBURFvu8m=`XZS%EMWd zuAct=(}lCV9c>msRNRg)1gfIgH!%`;e4%L@SGbgWX&R95+RgM&U8t|u#g)0NTA?Xh zHh4Aj)z@3BnJ-vX&L6k=?IB`<)CTXA?2?BH%{6NgLvl1eOiLo_iZycI(D{5Uu|YiP z$>&#V`GRS>9N#2RGVx7pPjAHZm$=lo;e}|Y>cRz*lEpi9&L-d2E2A0CmhbN>dPH-a z*0vczU#}C|pDo(w++jA?Jg-nm8`)lrWD6I^6PYx>E4^IduA&?HfR?HLYq-RFmzDZgwQ)J<5TTI2F-v^>9FW@e& zdZSpQV&>-g%GQom{gQzCs}5#uA&U=*AS=-!a1LyWE@_YbwOz~-PztxZ%i^Q)c}3Ib z&tuFc3}=#nIZV}3zIap{_|Pp=(nIL#nC*K{0!>yye&Rj_AOQ}69?aTwZS19daiG#H zT$@N`KY6m;v;z?#X8W5(YzA<-SoROs1SbGvS-An`bCkH+4lgSASasK(VuuGXqdm~} zkTJF$^tqYifCow1x8;6k1wnPwO7Fwv5=)a^N+;Y_?xsrhUP+IZ5RbX10?&HQuEJyk= ziwnOk0}emc$d|=C1t2x7&t}xk~{3wP&H*(LS56v;~v@FjC z)gePhe|8uh&=X6%h_0(v;;5zf4XtUsTe0JN_j(=ZNr~3JG0kA<3+Yam8#gyb%kGrR z2gVLqUqg&XqQ%#1eKY)Ch*Xsg3H6d`VDoT` zZ_C+%8uR;crv7jNs)~|_$bvlN)#!ryua;u%K zvA%C5Ha~2K+ekw8_WGzHl9Kt_twnM8MPv}Kv)yQ;w-X?xJ9vCckVyB5qi4kqR}h-dNh0yB^aDmem<@Q8e;B&h+tHc8`WIw3Dh+cf zhbyS0UJ@Q46OF*Iimz`DFKKk`(*Ww`9Kt>b>5uVCZRjnGHCZ)W7=0{a4J8R2cl4%; z7NLrZt}D+uQ0vQj*>->lF%bUXoCyfdoVsyETDhF6k7nh#=w*nn&wtZnD+{wcH5;Dm z*kaW6-X!&YU%mwOfN8{K>x=Hn_nJHeW?`?YdTP=)9g-g|ia>dcgRT4e&4^8Ce+zY}1${N6?oT8RE;4jI1_&wjIdu48X`y2kcC|*mxPW z;-t}H-~0p`f|8YzG^Q8{^1%S6rb{E8=8K`5ky`_|_H;?yGe_`U3TTSH-d7aL@GIt*|vti_;7HJ>s*wi)sl zkp)s+jH{_k?hdh5_h@QHDHre`(o?3%`d$@K>MBP9N#6?~E+rvkoU4Nmze3axFe;lS zk%(mAF##FDGYx0gq|Bzvw%xKkbAVChH1KN|!r=bPpa%>}zLC@M1VPcT z?t6VcxTZ03$S}4s=45?*;!vw%-Q$BamC*jS>=E@`F2@|Wu{31@j+^*1@f&*Qn)hk^ zE)|(3zXd@@@Nc)lE)P_#y7PZqESvYxOMKfeqQz~-cYTwf_P)n`zL8pXWMJ$20pOJP zkyK1UJ(Pa-^<&z#3gYMCrOUX7K-ac(&BPYY#E*VW7fxCZSXGI{Xq^flYH`eot*bCiU~0=O#c3( zl;IiyFJ)EpXC$D6BLI~wGsh+vM2#rl!&yzA)X*k+(GQ^yBJtU_xpIbXS!tx`gG>GH z+pg#$;%U^wP@}hvvCO;;JhI(JBq(H*hm>H1H?dgPRnJJlvFfw8B82lEVFbOe*I^3! zO%EIi-=f{jGN_hKRmG%b>9|)~Ni2!kC1yQ3K(66&^IqK+&C6IwGpHTvt<>!$yV*RH zQM$%;ix_3rm3_5zYYpA^HqyS|ajx+)71DO|av!50O7Fle6V`5^UB|ffI047HKFP4j z!ziQ9YyoSNAeAKfs4Jd$!RvB4HYV;4RRZgV6B*@t@|Up+ITj{O1ZV4Cga}bTd~?-v zdf`p^J;seZU{L~T%DZPlIY9Mir}KZ^);}@{q-3HN8*J*_pDz7crzn~X-P=ay91UOF zUv+g0`i5!?-sa}yydfwMoQ(R$Q_p{o#CBYiQvU|kNQ3wc#leQ`<;l-3d2X9d*skSy z;AceN(`r5#C2oHRUZQW}k%gE)|B#Sqwap32uX8k!3FIHGC7@#Zr7gZ4xli8Q<0=pi zXBON)fI2|ceEZ(=bYFR&A<$>47jPF^jlAGgO5C5(0%GhYZYhh;C|S~g8JdB4sM$VX zt6soK58!4>*Uzd`W$bt->2UF9la9U59scyZVo~?I<78HK+U7X=jmLw(M|6IPv1jQT znF!O*f?x9KN;=$Edo5_9uNEhnRJAC& zO;T0vNfI|bs7&!rIazTwcgJkf?r)2`MsUt9MXgb05&cIZ<4sLkcFp^<#^Ec1e@^ZZ5I#8g*!{~KmJ}d+Ss>*5kaB@2XR>H> z(krDLxujLFmD~O;^t|lyD-nx+Lo-|8+bUnR@3RfNxH=qMZeV=X({^$Wka9VoZ=0+b zupa#ViRU6J#35s}5oY`V*wb_$1>Pxr{dJ%bkmP=Kru#z6r843R5(|x&`5k8U(Bd=D zgFnV*Ki%65jJ7}vnUHJNBmC9Y)~LU^<1P3XRdrdq-1UzWgjeTAd>QbI8jDjsA`BEu z;JW$}2bnZ|z!=rPMrOD|J_#edqYZP}&OtP4Vk|JZ{}-wFziyMuK~W3VQ|fi}$97S- zKX%h2_Tjv^O6K`0vV9tdGJ%^@G=SeoMSv+m2EZbPPuX^s3fB!f%iA&AhNy$+fbnzD zcqG;i)9W%{pAF1QuNp!WJp*CBtutrFHnKTYjgM3LU69}L3yR=%m|z?SKI{vZbS+wJ zL=;9#IM;$p&wl=U49g-o>H@>PZaN%Mv+FZuSYp%@9y+^5AXW!g#-|tvllh_XTrb0@ zt+{$AQ0gr3(7pf*B~wgT@`&c|3;ce$3JB$WqyA5HmRYW9d++=86=FI|H+$J_CkyyJ&0v?vtt%bN(FFZire(-&zJ+dOY7!{yq3U#+PYhy)pq zzcm_603yM+RFuM+xv1x;ph3XMJu84uj7{8bGAK;Psm7EX_fi<9U<`E5`fQ4sI2VVf zo3^KM0&(1n9k>Qmx*-HS{2)$xiP_);)X=JFon&!ac{7ZQk#Zsbf8D5mO>X@K9@+gb zf`5Oc$nhg-Ar#jWe`(_LqPBFqCOb}E3qXK*ITDO`ZX^Hz781aw+3BQH?2tuE5J$pD znqxDrn5w;T($vc22ROud` zalerDQ2%am zwt`9%nL>8-47Jwfj#dg)jyTl0{*f?Ua|y_pn;v*Bu{IXhzGxyNu-RqWlRs6{NjCa_ zU55VwZn7#t_TT&ZtZJf*oMqFW1jX<=Gzds0JC-9At-t4%+5wmABM+4&9U+=f;;FIA zphO0EraFp<^~Nu++ot89f+6|bkQz0+RKta)yhYka3UB2@3@KMDH86nKdbp127E-+sW?Ot>Z zBQ6Kt7>42=SUu-VBvJdBKRw{DYVv=)U}?I4fmmjAsCDvD&Y$IjfG~?(w5%>NWq_y8 zHj%OsT$~09_18jZXtz_H4fztLM3e`_$Mi?uC7>s|k70(PtkL0yE-;K{nyXE;W4K>m zkgJ1D83qMcfPIA9nM<@jja7gZj3mC*N6=4-BSUt~lEMg`L+*ninVpdRk%40N+hg&Q zZ}(|Hs!5m_oJ5hchAe;q76`)0CYM4olC24S0CR1oX zC3vV0-UC|Ix5ug$@`@%>Qh&$Bo#4~R{nQ;ZeJ98135m%#q5H=7YnD+HZK)(balrpX ziUwNA9)B4?iAm;RhbRBMi$Tw!WbpFuJuN=c`WjuIYI>g%-!{qT#-dL1Q0Ds-bXrdd zO&Mb)`fXd9i(%3#Nr5#8fv=HaiU!Q?@aMGXFMb;yzC)BtujBAWXu9bdO9*%p@{n5L z5>q3J>35mGl_kI)!l@+Foohm)HE*Z_mioxWwxE-j4WU}1873>%JZF2FCql{7@>wzY z4wv#fRtOec&pDWVesw+@h(AsGiwkK#zvR^vMrP?hfzHn>;NjEs{tgVK+z`wiI)P5G z9&OlxX^>_B64BPn7-^!R@gh#921uWc7SXeJv-Cg0%;5)J_rj2)jjZQO-0E}NN?n~z z8e=_B)O|paXSgyuSpMC0eTlMtQ?(UIv?NGszO}Jxg~t@g0&0m__A}Cp5JIb3ZWkq% z67RtYx~@y;WDu{twY6@6t^Kw4l{yS8n~WBDzTXY z)R(>s8xX#~L^t~&cAqmNL6Y-D%Ylb*a1~DPZ@DhEsj-6%FxSrg^Eik9P0j!J?+{{# zuj51%6KVAGpZ)i5p>{-_Rd9lh(n2sHKd~z(lAYc2-P-cZjFv``&G-?k$k!x{)COU* zdeO56&XMz7t0SFeE+e(u7Bl8fJ@1x830OGtFJEW%aQ3y~*B~ zdLq!cVKrt{-G_cOX};{7hzPyp*2>UV18l>P`3}o2`Gbzcel{;lNjM`*d^_fxfI!aB zkbca^d1jFkhxruTklDIFhgZBlg3~L^=Nd)8j%FQ%;I_L|>pq9hac1Vet+Xc8{TP;o zQw>TKD%yos>@Gk9%IC^6eQs&0;ENZ&BjaguaxSj-eH zW!q_SARZFzBiv6)&ANvl;(2c4&ABfsuanVxO5dA`R*4*7AgHq!^68+bqw`^j@t$8? zT+GbR4}B7Hnu9}EEHOzT#tX=^AFt5*4kiH=b;&}%v}@-3_Y7{Z3+E&xn7>YIkQ{Um zK|)r3i}9;&uL}1PGk#^jlj;(M%A!}r65ih0T3`pM?<%ewU5*Irx9gs=b6Ao7Nb zgMo#G3cOi21|}wa$<(Kr?TvZdETB=7&a;4*F&9cu?&;}%zFCo)A?2ZJ+3!jZM$>>} z^1j>9q3bz0Ih>#K827eaKNlpWK7-VYA70{W(dv~*WvK?=t25AiLHZw@z|N8%2=;q% z#o9vLS4zE;^>!V<#<9nP{NtNZsOr5V)R>>2@975gu~Sm2Ay_}Ax+^gM;2&?<+Ye)9 zA8sGW^(lr8`&f_=&0^e>K$miUuY&gTGXqZD?wL4o&9uDYpFSWpgQCZqK56vz(VonI z`b=l;AP}inZr(b)m%H-w5kO?lX%P}?R0w^Mk^6@yj(7$Ou8rvT|MVbak5V^s9ad8Mr^i4MhH!oFh0gu)_lS%S?d_^F>@#~k5z92fJdG*!o*CmI zLXFMVcKTfvcKwQ8+3j|>7wdhxM~cA62{+6>mprT zn@1^?HWa2vV>IjuG_g-7$$qG0%NP57wx@?yC%T=~k=o=K^K*53RTdu7q=H4#7?J8P zq(c^dPxM7o9VESr4)r8GY`^=lS7BEWxlRW?&H0M%<-~V2TcPrzNpfUN^UeuNh9=;c z`W75ZB#VZg-umd3qP0h@zn;M<-#?F{wwIk2K1T zN5s?Z9@p(hh!c%I8SYZZ&vp%_!V!bIGo>X4skkFW&HMNIY_c@o=vbER&0H+86I*3e zZojLssWYWbEf(ef@^tLUAL5}mK={$JJtrZACz95_;Yb7HO6!?D>N^iL(n@Mot@Yy_ z2#fob$0pdCi;ww-DSPk#}fz_s8Lu$4Uj;7B6pxA@9u+iDQiZ zYv}xMdp2bYx~%CQ0q8gIF*2k0_;uZya;Kw>Vy}X+yJwDQCUpGmB3)ro{s|3?9m=L) zG4d6ILXr8$y&4-mK9BcwV(HHU&~ZbI;~QtvqZ%?O*HjSbMuAxO9}@8b5lx13ce#0! z%sAvq>ajiEYGT%)3|KvWezBS8%ut9n8LH&PC(7MTXEpQCCoJwWf7&i1?$>HMSpQw5 z`K*@h9uI`N^BU{V@Bdy^Ov(rSZXWIFLfgm~Us}3rDZmbXzg8t))&d9RjfR*O}aDJmnR zp+i1tm@PJ>`Tn~nyI20WV(iM$Z_x!JA~|%7i)$w}t;F|w{hDb$b;wlbHJ9L%l#*2u z+#%t&Np{ybBOTk)RjZNQaZL_&i)OFe&5(vD6&BOwmgqEHn$||3E$G#L>~g~Xxl=2u zNx^N}scl>;W%_&Fi_EYe3rA%{_2c`cwP_j|UlzOlSi6RhbF1-;qxWmJJ;WX0#OQe+ zP}COSjTNfYmA$+Zym$nk44Me^3x0z>y2l5PKONM~Xu1#6T6%I~k9Oq`eHP0P9$82@ z*OR^a0Y6s=dJP2krUGwI?C}=Y#>U1}n|>reEyf=0EcJD@fl88G$PPW71-O#^ zJW-7Mmg5R!hl1Z-J-pY&e#YC!wPW+!Bm(+x7V&=m{P~nh@9)1~Qd~Uawc~81@KSI4 zkGe<6b8IY*#oR}1Z{m_osctUr^|KsK&Q^PtW#=euM;~HiV|$~TYPOy5(B`XsBiC;+ zQ2)Dc6MVrKR$UzN4y=a}!I^^&wptRM#ZIbYxS$&Vz1I;%klH{z~J%O1*H;e+D}tXb;GwsOP@cRTzL&>mZb4 z9gK0AyYb#>aRM*Ie@X$8WxQHNHk|8Nn5_}y*L`lUe&!Dk@(}l|du6N;mpOfZI05{- NaaI0G`X#+b{{?t)X1D+V literal 0 HcmV?d00001 diff --git a/docs/my-website/img/app_roles.png b/docs/my-website/img/app_roles.png new file mode 100644 index 0000000000000000000000000000000000000000..4587ab3a05815fd30578750383487cb65eab05e3 GIT binary patch literal 283297 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 b-Il3gB8vJB-48kd{>VR2`7Qgtq3{0zyv5KQ literal 0 HcmV?d00001 From 70e1e83102cc110e3d0344d67cf35c57b6c7e0db Mon Sep 17 00:00:00 2001 From: Krish Dholakia Date: Tue, 18 Nov 2025 17:36:26 -0800 Subject: [PATCH 03/89] feat(managed_files.py): support /delete for files + feat(managed_batches): support /cancel for batches (#16387) * feat(managed_files.py): initial commit fixing managed file delete on litellm * fix(managed_files.py): fix file delete * feat(batches_endpoints/endpoints.py): fix cancelling a batch ensures managed batches works --------- Co-authored-by: Ishaan Jaffer --- .../proxy/hooks/managed_files.py | 12 +- litellm/batches/main.py | 76 ++++++++---- litellm/files/main.py | 28 +++-- .../proxy/_experimental/out/logs/index.html | 6 +- .../out/models-and-endpoints/index.html | 6 +- .../out/organizations/index.html | 6 +- .../proxy/_experimental/out/usage/index.html | 6 +- .../proxy/_experimental/out/users/index.html | 6 +- .../_experimental/out/virtual-keys/index.html | 6 +- litellm/proxy/_new_secret_config.yaml | 2 +- litellm/proxy/batches_endpoints/endpoints.py | 43 +++++-- .../openai_files_endpoints/files_endpoints.py | 8 +- litellm/router.py | 108 +++++++++++------- 13 files changed, 218 insertions(+), 95 deletions(-) diff --git a/enterprise/litellm_enterprise/proxy/hooks/managed_files.py b/enterprise/litellm_enterprise/proxy/hooks/managed_files.py index 20b850191dd..608bb495885 100644 --- a/enterprise/litellm_enterprise/proxy/hooks/managed_files.py +++ b/enterprise/litellm_enterprise/proxy/hooks/managed_files.py @@ -529,7 +529,6 @@ class _PROXY_LiteLLMManagedFiles(CustomLogger, BaseFileEndpoints): for file_id in file_ids: ## CHECK IF FILE ID IS MANAGED BY LITELM is_base64_unified_file_id = _is_base64_encoded_unified_file_id(file_id) - if is_base64_unified_file_id: litellm_managed_file_ids.append(file_id) @@ -540,6 +539,7 @@ class _PROXY_LiteLLMManagedFiles(CustomLogger, BaseFileEndpoints): unified_file_object = await self.get_unified_file_id( file_id, litellm_parent_otel_span ) + if unified_file_object: file_id_mapping[file_id] = unified_file_object.model_mappings @@ -815,18 +815,21 @@ class _PROXY_LiteLLMManagedFiles(CustomLogger, BaseFileEndpoints): llm_router: Router, **data: Dict, ) -> OpenAIFileObject: - file_id = convert_b64_uid_to_unified_uid(file_id) + + # file_id = convert_b64_uid_to_unified_uid(file_id) model_file_id_mapping = await self.get_model_file_id_mapping( [file_id], litellm_parent_otel_span ) + specific_model_file_id_mapping = model_file_id_mapping.get(file_id) if specific_model_file_id_mapping: - for model_id, file_id in specific_model_file_id_mapping.items(): - await llm_router.afile_delete(model=model_id, file_id=file_id, **data) # type: ignore + for model_id, model_file_id in specific_model_file_id_mapping.items(): + await llm_router.afile_delete(model=model_id, file_id=model_file_id, **data) # type: ignore stored_file_object = await self.delete_unified_file_id( file_id, litellm_parent_otel_span ) + if stored_file_object: return stored_file_object else: @@ -847,6 +850,7 @@ class _PROXY_LiteLLMManagedFiles(CustomLogger, BaseFileEndpoints): model_file_id_mapping or await self.get_model_file_id_mapping([file_id], litellm_parent_otel_span) ) + specific_model_file_id_mapping = model_file_id_mapping.get(file_id) if specific_model_file_id_mapping: diff --git a/litellm/batches/main.py b/litellm/batches/main.py index 48521e5fba0..5279dd70bc4 100644 --- a/litellm/batches/main.py +++ b/litellm/batches/main.py @@ -17,6 +17,8 @@ from functools import partial from typing import Any, Coroutine, Dict, Literal, Optional, Union, cast import httpx +from openai.types.batch import BatchRequestCounts +from openai.types.batch import Metadata as BatchMetadata import litellm from litellm._logging import verbose_logger @@ -223,10 +225,12 @@ def create_batch( api_key=optional_params.api_key, logging_obj=litellm_logging_obj, _is_async=_is_async, - client=client - if client is not None - and isinstance(client, (HTTPHandler, AsyncHTTPHandler)) - else None, + client=( + client + if client is not None + and isinstance(client, (HTTPHandler, AsyncHTTPHandler)) + else None + ), timeout=timeout, model=model, ) @@ -609,10 +613,12 @@ def retrieve_batch( function_id="batch_retrieve", ), _is_async=_is_async, - client=client - if client is not None - and isinstance(client, (HTTPHandler, AsyncHTTPHandler)) - else None, + client=( + client + if client is not None + and isinstance(client, (HTTPHandler, AsyncHTTPHandler)) + else None + ), timeout=timeout, model=model, ) @@ -799,6 +805,7 @@ def list_batches( async def acancel_batch( batch_id: str, + model: Optional[str] = None, custom_llm_provider: Literal["openai", "azure"] = "openai", metadata: Optional[Dict[str, str]] = None, extra_headers: Optional[Dict[str, str]] = None, @@ -813,11 +820,13 @@ async def acancel_batch( try: loop = asyncio.get_event_loop() kwargs["acancel_batch"] = True + model = kwargs.pop("model", None) # Use a partial function to pass your keyword arguments func = partial( cancel_batch, batch_id, + model, custom_llm_provider, metadata, extra_headers, @@ -840,7 +849,8 @@ async def acancel_batch( def cancel_batch( batch_id: str, - custom_llm_provider: Literal["openai", "azure"] = "openai", + model: Optional[str] = None, + custom_llm_provider: Union[Literal["openai", "azure"], str] = "openai", metadata: Optional[Dict[str, str]] = None, extra_headers: Optional[Dict[str, str]] = None, extra_body: Optional[Dict[str, str]] = None, @@ -852,6 +862,17 @@ def cancel_batch( LiteLLM Equivalent of POST https://api.openai.com/v1/batches/{batch_id}/cancel """ try: + + try: + if model is not None: + _, custom_llm_provider, _, _ = get_llm_provider( + model=model, + custom_llm_provider=custom_llm_provider, + ) + except Exception as e: + verbose_logger.exception( + f"litellm.batches.main.py::cancel_batch() - Error inferring custom_llm_provider - {str(e)}" + ) optional_params = GenericLiteLLMParams(**kwargs) litellm_params = get_litellm_params( custom_llm_provider=custom_llm_provider, @@ -1005,21 +1026,28 @@ def _handle_async_invoke_status( created_at=status_response["submitTime"], in_progress_at=status_response["lastModifiedTime"], completed_at=status_response.get("endTime"), - failed_at=status_response.get("endTime") - if status_response["status"] == "failed" - else None, - request_counts={ - "total": 1, - "completed": 1 if status_response["status"] == "completed" else 0, - "failed": 1 if status_response["status"] == "failed" else 0, - }, - metadata={ - "output_file_id": status_response["outputDataConfig"][ - "s3OutputDataConfig" - ]["s3Uri"], - "failure_message": status_response.get("failureMessage"), - "model_arn": status_response["modelArn"], - }, + failed_at=( + status_response.get("endTime") + if status_response["status"] == "failed" + else None + ), + request_counts=BatchRequestCounts( + total=1, + completed=1 if status_response["status"] == "completed" else 0, + failed=1 if status_response["status"] == "failed" else 0, + ), + metadata=dict( + **{ + "output_file_id": status_response["outputDataConfig"][ + "s3OutputDataConfig" + ]["s3Uri"], + "failure_message": status_response.get("failureMessage") or "", + "model_arn": status_response["modelArn"], + } + ), + completion_window="24h", + endpoint="/v1/embeddings", + input_file_id="", ) return result diff --git a/litellm/files/main.py b/litellm/files/main.py index 9c85fa10565..535772fa42c 100644 --- a/litellm/files/main.py +++ b/litellm/files/main.py @@ -95,7 +95,9 @@ async def acreate_file( def create_file( file: FileTypes, purpose: Literal["assistants", "batch", "fine-tune"], - custom_llm_provider: Optional[Literal["openai", "azure", "vertex_ai", "bedrock"]] = None, + custom_llm_provider: Optional[ + Literal["openai", "azure", "vertex_ai", "bedrock"] + ] = None, extra_headers: Optional[Dict[str, str]] = None, extra_body: Optional[Dict[str, str]] = None, **kwargs, @@ -155,10 +157,12 @@ def create_file( api_key=optional_params.api_key, logging_obj=logging_obj, _is_async=_is_async, - client=client - if client is not None - and isinstance(client, (HTTPHandler, AsyncHTTPHandler)) - else None, + client=( + client + if client is not None + and isinstance(client, (HTTPHandler, AsyncHTTPHandler)) + else None + ), timeout=timeout, ) elif custom_llm_provider == "openai": @@ -441,12 +445,14 @@ async def afile_delete( """ try: loop = asyncio.get_event_loop() + model = kwargs.pop("model", None) kwargs["is_async"] = True # Use a partial function to pass your keyword arguments func = partial( file_delete, file_id, + model, custom_llm_provider, extra_headers, extra_body, @@ -470,7 +476,8 @@ async def afile_delete( @client def file_delete( file_id: str, - custom_llm_provider: Literal["openai", "azure"] = "openai", + model: Optional[str] = None, + custom_llm_provider: Union[Literal["openai", "azure"], str] = "openai", extra_headers: Optional[Dict[str, str]] = None, extra_body: Optional[Dict[str, str]] = None, **kwargs, @@ -481,6 +488,13 @@ def file_delete( LiteLLM Equivalent of DELETE https://api.openai.com/v1/files """ try: + try: + if model is not None: + _, custom_llm_provider, _, _ = get_llm_provider( + model, custom_llm_provider + ) + except Exception: + pass optional_params = GenericLiteLLMParams(**kwargs) litellm_params_dict = get_litellm_params(**kwargs) ### TIMEOUT LOGIC ### @@ -566,7 +580,7 @@ def file_delete( ) else: raise litellm.exceptions.BadRequestError( - message="LiteLLM doesn't support {} for 'create_batch'. Only 'openai' is supported.".format( + message="LiteLLM doesn't support {} for 'delete_batch'. Only 'openai' is supported.".format( custom_llm_provider ), model="n/a", diff --git a/litellm/proxy/_experimental/out/logs/index.html b/litellm/proxy/_experimental/out/logs/index.html index cf72e090004..05f063f3318 100644 --- a/litellm/proxy/_experimental/out/logs/index.html +++ b/litellm/proxy/_experimental/out/logs/index.html @@ -1 +1,5 @@ -LiteLLM Dashboard \ No newline at end of file +<<<<<<< HEAD +LiteLLM Dashboard +======= +LiteLLM Dashboard +>>>>>>> main diff --git a/litellm/proxy/_experimental/out/models-and-endpoints/index.html b/litellm/proxy/_experimental/out/models-and-endpoints/index.html index 2b17150be37..3a7caf6b4cf 100644 --- a/litellm/proxy/_experimental/out/models-and-endpoints/index.html +++ b/litellm/proxy/_experimental/out/models-and-endpoints/index.html @@ -1 +1,5 @@ -LiteLLM Dashboard \ No newline at end of file +<<<<<<< HEAD +LiteLLM Dashboard +======= +LiteLLM Dashboard +>>>>>>> main diff --git a/litellm/proxy/_experimental/out/organizations/index.html b/litellm/proxy/_experimental/out/organizations/index.html index 27366353935..70d80f2afbf 100644 --- a/litellm/proxy/_experimental/out/organizations/index.html +++ b/litellm/proxy/_experimental/out/organizations/index.html @@ -1 +1,5 @@ -LiteLLM Dashboard \ No newline at end of file +<<<<<<< HEAD +LiteLLM Dashboard +======= +LiteLLM Dashboard +>>>>>>> main diff --git a/litellm/proxy/_experimental/out/usage/index.html b/litellm/proxy/_experimental/out/usage/index.html index cbad0e19abd..6f43e533358 100644 --- a/litellm/proxy/_experimental/out/usage/index.html +++ b/litellm/proxy/_experimental/out/usage/index.html @@ -1 +1,5 @@ -LiteLLM Dashboard \ No newline at end of file +<<<<<<< HEAD +LiteLLM Dashboard +======= +LiteLLM Dashboard +>>>>>>> main diff --git a/litellm/proxy/_experimental/out/users/index.html b/litellm/proxy/_experimental/out/users/index.html index ff413f5df14..3d494330df8 100644 --- a/litellm/proxy/_experimental/out/users/index.html +++ b/litellm/proxy/_experimental/out/users/index.html @@ -1 +1,5 @@ -LiteLLM Dashboard \ No newline at end of file +<<<<<<< HEAD +LiteLLM Dashboard +======= +LiteLLM Dashboard +>>>>>>> main diff --git a/litellm/proxy/_experimental/out/virtual-keys/index.html b/litellm/proxy/_experimental/out/virtual-keys/index.html index f502674f0f6..dd0c5b1da6a 100644 --- a/litellm/proxy/_experimental/out/virtual-keys/index.html +++ b/litellm/proxy/_experimental/out/virtual-keys/index.html @@ -1 +1,5 @@ -LiteLLM Dashboard \ No newline at end of file +<<<<<<< HEAD +LiteLLM Dashboard +======= +LiteLLM Dashboard +>>>>>>> main diff --git a/litellm/proxy/_new_secret_config.yaml b/litellm/proxy/_new_secret_config.yaml index 901e2bf0c57..f5a71bc486f 100644 --- a/litellm/proxy/_new_secret_config.yaml +++ b/litellm/proxy/_new_secret_config.yaml @@ -1,7 +1,7 @@ model_list: - model_name: gpt-5-mini litellm_params: - model: bedrock/global.anthropic.claude-sonnet-4-5-20250929-v1:0 + model: gpt-5-mini - model_name: embedding-model litellm_params: model: openai/text-embedding-3-large diff --git a/litellm/proxy/batches_endpoints/endpoints.py b/litellm/proxy/batches_endpoints/endpoints.py index 2fc0298d1c8..ac7082edb69 100644 --- a/litellm/proxy/batches_endpoints/endpoints.py +++ b/litellm/proxy/batches_endpoints/endpoints.py @@ -22,6 +22,9 @@ from litellm.proxy.common_utils.openai_endpoint_utils import ( ) from litellm.proxy.openai_files_endpoints.common_utils import ( _is_base64_encoded_unified_file_id, + convert_b64_uid_to_unified_uid, + get_batch_id_from_unified_batch_id, + get_model_id_from_unified_batch_id, get_models_from_unified_file_id, ) from litellm.proxy.utils import handle_exception_on_proxy, is_known_model @@ -506,6 +509,7 @@ async def cancel_batch( from litellm.proxy.proxy_server import ( add_litellm_data_to_request, general_settings, + llm_router, proxy_config, proxy_logging_obj, version, @@ -517,6 +521,7 @@ async def cancel_batch( verbose_proxy_logger.debug( "Request received by LiteLLM:\n{}".format(json.dumps(data, indent=4)), ) + unified_batch_id = _is_base64_encoded_unified_file_id(batch_id) # Include original request and headers in the data data = await add_litellm_data_to_request( @@ -528,14 +533,36 @@ async def cancel_batch( proxy_config=proxy_config, ) - custom_llm_provider = ( - provider or data.pop("custom_llm_provider", None) or "openai" - ) - _cancel_batch_data = CancelBatchRequest(batch_id=batch_id, **data) - response = await litellm.acancel_batch( - custom_llm_provider=custom_llm_provider, # type: ignore - **_cancel_batch_data, - ) + if unified_batch_id: + if llm_router is None: + raise HTTPException( + status_code=500, + detail={ + "error": "LLM Router not initialized. Ensure models added to proxy." + }, + ) + + model = ( + get_model_id_from_unified_batch_id(unified_batch_id) + if unified_batch_id + else None + ) + + model_batch_id = get_batch_id_from_unified_batch_id(unified_batch_id) + + data["batch_id"] = model_batch_id + + response = await llm_router.acancel_batch(model=model, **data) # type: ignore + else: + + custom_llm_provider = ( + provider or data.pop("custom_llm_provider", None) or "openai" + ) + _cancel_batch_data = CancelBatchRequest(batch_id=batch_id, **data) + response = await litellm.acancel_batch( + custom_llm_provider=custom_llm_provider, # type: ignore + **_cancel_batch_data, + ) ### ALERTING ### asyncio.create_task( diff --git a/litellm/proxy/openai_files_endpoints/files_endpoints.py b/litellm/proxy/openai_files_endpoints/files_endpoints.py index 043b0c886e9..b0be5476136 100644 --- a/litellm/proxy/openai_files_endpoints/files_endpoints.py +++ b/litellm/proxy/openai_files_endpoints/files_endpoints.py @@ -31,8 +31,8 @@ from litellm.proxy.auth.user_api_key_auth import user_api_key_auth from litellm.proxy.common_request_processing import ProxyBaseLLMRequestProcessing from litellm.proxy.common_utils.openai_endpoint_utils import ( get_custom_llm_provider_from_request_body, - get_custom_llm_provider_from_request_query, get_custom_llm_provider_from_request_headers, + get_custom_llm_provider_from_request_query, ) from litellm.proxy.utils import ProxyLogging, is_known_model from litellm.router import Router @@ -788,6 +788,7 @@ async def delete_file( param="None", code=500, ) + response = await managed_files_obj.afile_delete( file_id=file_id, litellm_parent_otel_span=user_api_key_dict.parent_otel_span, @@ -828,12 +829,11 @@ async def delete_file( await proxy_logging_obj.post_call_failure_hook( user_api_key_dict=user_api_key_dict, original_exception=e, request_data=data ) - verbose_proxy_logger.error( - "litellm.proxy.proxy_server.retrieve_file(): Exception occured - {}".format( + verbose_proxy_logger.exception( + "litellm.proxy.proxy_server.delete_file(): Exception occured - {}".format( str(e) ) ) - verbose_proxy_logger.debug(traceback.format_exc()) if isinstance(e, HTTPException): raise ProxyException( message=getattr(e, "message", str(e.detail)), diff --git a/litellm/router.py b/litellm/router.py index 64c663f8ab1..998e19739b7 100644 --- a/litellm/router.py +++ b/litellm/router.py @@ -376,9 +376,9 @@ class Router: ) # names of models under litellm_params. ex. azure/chatgpt-v-2 self.deployment_latency_map = {} ### CACHING ### - cache_type: Literal[ - "local", "redis", "redis-semantic", "s3", "disk" - ] = "local" # default to an in-memory cache + cache_type: Literal["local", "redis", "redis-semantic", "s3", "disk"] = ( + "local" # default to an in-memory cache + ) redis_cache = None cache_config: Dict[str, Any] = {} @@ -420,9 +420,9 @@ class Router: self.default_max_parallel_requests = default_max_parallel_requests self.provider_default_deployment_ids: List[str] = [] self.pattern_router = PatternMatchRouter() - self.team_pattern_routers: Dict[ - str, PatternMatchRouter - ] = {} # {"TEAM_ID": PatternMatchRouter} + self.team_pattern_routers: Dict[str, PatternMatchRouter] = ( + {} + ) # {"TEAM_ID": PatternMatchRouter} self.auto_routers: Dict[str, "AutoRouter"] = {} # Initialize model_group_alias early since it's used in set_model_list @@ -603,9 +603,9 @@ class Router: ) ) - self.model_group_retry_policy: Optional[ - Dict[str, RetryPolicy] - ] = model_group_retry_policy + self.model_group_retry_policy: Optional[Dict[str, RetryPolicy]] = ( + model_group_retry_policy + ) self.allowed_fails_policy: Optional[AllowedFailsPolicy] = None if allowed_fails_policy is not None: @@ -831,6 +831,9 @@ class Router: self.allm_passthrough_route = self.factory_function( litellm.allm_passthrough_route, call_type="allm_passthrough_route" ) + self.acancel_batch = self.factory_function( + litellm.acancel_batch, call_type="acancel_batch" + ) def _initialize_specialized_endpoints(self): """Helper to initialize specialized router endpoints (vector store, OCR, search, video, container).""" @@ -851,18 +854,36 @@ class Router: from litellm.vector_store_files.main import ( acreate as avector_store_file_create_fn, - alist as avector_store_file_list_fn, - aretrieve as avector_store_file_retrieve_fn, - aretrieve_content as avector_store_file_content_fn, - aupdate as avector_store_file_update_fn, + ) + from litellm.vector_store_files.main import ( adelete as avector_store_file_delete_fn, + ) + from litellm.vector_store_files.main import alist as avector_store_file_list_fn + from litellm.vector_store_files.main import ( + aretrieve as avector_store_file_retrieve_fn, + ) + from litellm.vector_store_files.main import ( + aretrieve_content as avector_store_file_content_fn, + ) + from litellm.vector_store_files.main import ( + aupdate as avector_store_file_update_fn, + ) + from litellm.vector_store_files.main import ( create as vector_store_file_create_fn, - list as vector_store_file_list_fn, - retrieve as vector_store_file_retrieve_fn, - retrieve_content as vector_store_file_content_fn, - update as vector_store_file_update_fn, + ) + from litellm.vector_store_files.main import ( delete as vector_store_file_delete_fn, ) + from litellm.vector_store_files.main import list as vector_store_file_list_fn + from litellm.vector_store_files.main import ( + retrieve as vector_store_file_retrieve_fn, + ) + from litellm.vector_store_files.main import ( + retrieve_content as vector_store_file_content_fn, + ) + from litellm.vector_store_files.main import ( + update as vector_store_file_update_fn, + ) self.avector_store_file_create = self.factory_function( avector_store_file_create_fn, call_type="avector_store_file_create" ) @@ -1366,7 +1387,10 @@ class Router: async def _acompletion( self, model: str, messages: List[Dict[str, str]], **kwargs - ) -> Union[ModelResponse, CustomStreamWrapper,]: + ) -> Union[ + ModelResponse, + CustomStreamWrapper, + ]: """ - Get an available deployment - call it with a semaphore over the call @@ -3387,9 +3411,9 @@ class Router: healthy_deployments=healthy_deployments, responses=responses ) returned_response = cast(OpenAIFileObject, responses[0]) - returned_response._hidden_params[ - "model_file_id_mapping" - ] = model_file_id_mapping + returned_response._hidden_params["model_file_id_mapping"] = ( + model_file_id_mapping + ) return returned_response except Exception as e: verbose_router_logger.exception( @@ -3722,6 +3746,7 @@ class Router: "afile_delete", "afile_content", "_arealtime", + "acancel_batch", "acreate_fine_tuning_job", "acancel_fine_tuning_job", "alist_fine_tuning_jobs", @@ -3891,7 +3916,8 @@ class Router: "acreate_container", "alist_containers", "aretrieve_container", - "adelete_container" + "adelete_container", + "acancel_batch", ): return await self._ageneric_api_call_with_fallbacks( original_function=original_function, @@ -4048,11 +4074,11 @@ class Router: if isinstance(e, litellm.ContextWindowExceededError): if context_window_fallbacks is not None: - context_window_fallback_model_group: Optional[ - List[str] - ] = self._get_fallback_model_group_from_fallbacks( - fallbacks=context_window_fallbacks, - model_group=model_group, + context_window_fallback_model_group: Optional[List[str]] = ( + self._get_fallback_model_group_from_fallbacks( + fallbacks=context_window_fallbacks, + model_group=model_group, + ) ) if context_window_fallback_model_group is None: raise original_exception @@ -4084,11 +4110,11 @@ class Router: e.message += "\n{}".format(error_message) elif isinstance(e, litellm.ContentPolicyViolationError): if content_policy_fallbacks is not None: - content_policy_fallback_model_group: Optional[ - List[str] - ] = self._get_fallback_model_group_from_fallbacks( - fallbacks=content_policy_fallbacks, - model_group=model_group, + content_policy_fallback_model_group: Optional[List[str]] = ( + self._get_fallback_model_group_from_fallbacks( + fallbacks=content_policy_fallbacks, + model_group=model_group, + ) ) if content_policy_fallback_model_group is None: raise original_exception @@ -5343,26 +5369,26 @@ class Router: """ from litellm.router_strategy.auto_router.auto_router import AutoRouter - auto_router_config_path: Optional[ - str - ] = deployment.litellm_params.auto_router_config_path + auto_router_config_path: Optional[str] = ( + deployment.litellm_params.auto_router_config_path + ) auto_router_config: Optional[str] = deployment.litellm_params.auto_router_config if auto_router_config_path is None and auto_router_config is None: raise ValueError( "auto_router_config_path or auto_router_config is required for auto-router deployments. Please set it in the litellm_params" ) - default_model: Optional[ - str - ] = deployment.litellm_params.auto_router_default_model + default_model: Optional[str] = ( + deployment.litellm_params.auto_router_default_model + ) if default_model is None: raise ValueError( "auto_router_default_model is required for auto-router deployments. Please set it in the litellm_params" ) - embedding_model: Optional[ - str - ] = deployment.litellm_params.auto_router_embedding_model + embedding_model: Optional[str] = ( + deployment.litellm_params.auto_router_embedding_model + ) if embedding_model is None: raise ValueError( "auto_router_embedding_model is required for auto-router deployments. Please set it in the litellm_params" From 2880cb45a2110b4707be23c54cd5680d20be1739 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Tue, 18 Nov 2025 17:36:38 -0800 Subject: [PATCH 04/89] [Fix] AI Gateway Auth - Ensure Team Tags works when using JWT Auth (#16797) * fix setting team_metadata * test_team_metadata_with_tags_flows_through_jwt_auth --- litellm/proxy/auth/user_api_key_auth.py | 1 + .../proxy/auth/test_user_api_key_auth.py | 49 ++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/litellm/proxy/auth/user_api_key_auth.py b/litellm/proxy/auth/user_api_key_auth.py index c9589cd7746..05d0006300b 100644 --- a/litellm/proxy/auth/user_api_key_auth.py +++ b/litellm/proxy/auth/user_api_key_auth.py @@ -584,6 +584,7 @@ async def _user_api_key_auth_builder( # noqa: PLR0915 if team_membership is not None else None ), + team_metadata=team_object.metadata if team_object is not None else None, ) # run through common checks _ = await common_checks( diff --git a/tests/test_litellm/proxy/auth/test_user_api_key_auth.py b/tests/test_litellm/proxy/auth/test_user_api_key_auth.py index baf8bcfea35..9905ae5d355 100644 --- a/tests/test_litellm/proxy/auth/test_user_api_key_auth.py +++ b/tests/test_litellm/proxy/auth/test_user_api_key_auth.py @@ -13,8 +13,8 @@ from unittest.mock import MagicMock import pytest -from litellm.proxy.auth.user_api_key_auth import get_api_key from litellm.proxy.auth.route_checks import RouteChecks +from litellm.proxy.auth.user_api_key_auth import get_api_key def test_get_api_key(): @@ -59,6 +59,53 @@ def test_get_api_key_with_custom_litellm_key_header( ) == (api_key, passed_in_key) +def test_team_metadata_with_tags_flows_through_jwt_auth(): + """ + Test that team_metadata (specifically tags) flows through JWT authentication. + + This is a regression test for the issue where JWT auth was not populating + team_metadata, causing team-level tags to be missing in litellm_pre_call_utils.py + """ + from litellm.proxy._types import LiteLLM_TeamTable, UserAPIKeyAuth + + # Create a team object with metadata containing tags + team_object = LiteLLM_TeamTable( + team_id="test-team-id", + team_alias="test-team-alias", + metadata={"tags": ["production", "high-priority"], "department": "engineering"}, + tpm_limit=1000, + rpm_limit=100, + models=["gpt-4", "gpt-3.5-turbo"], + ) + + # Simulate constructing UserAPIKeyAuth like we do in JWT auth + # This is the pattern from user_api_key_auth.py lines 552-587 + user_api_key_auth = UserAPIKeyAuth( + api_key=None, + team_id=team_object.team_id, + team_tpm_limit=team_object.tpm_limit if team_object is not None else None, + team_rpm_limit=team_object.rpm_limit if team_object is not None else None, + team_models=team_object.models if team_object is not None else [], + team_metadata=team_object.metadata if team_object is not None else None, + user_role="internal_user", + user_id="test-user", + ) + + # Verify team_metadata is set + assert user_api_key_auth.team_metadata is not None, "team_metadata should be populated" + assert user_api_key_auth.team_metadata == team_object.metadata, ( + f"team_metadata not correctly mapped. " + f"Expected: {team_object.metadata}, Got: {user_api_key_auth.team_metadata}" + ) + + # Specifically verify tags are present + assert "tags" in user_api_key_auth.team_metadata, "tags should be in team_metadata" + assert user_api_key_auth.team_metadata["tags"] == ["production", "high-priority"], ( + f"tags not correctly mapped. " + f"Expected: ['production', 'high-priority'], Got: {user_api_key_auth.team_metadata.get('tags')}" + ) + + def test_route_checks_is_llm_api_route(): """Test RouteChecks.is_llm_api_route() correctly identifies LLM API routes including passthrough endpoints""" From c3c6cef6d8df3f4ddcd9eb9557ef965db4d20feb Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Tue, 18 Nov 2025 17:39:28 -0800 Subject: [PATCH 05/89] [Fix] Fixes Swagger UI resolver errors for chat completion endpoints caused by Pydantic v2 `$defs` not being properly exposed in the OpenAPI schema. (#16784) * fix add_request_body_to_paths * test_move_defs_to_components --- .../proxy/common_utils/custom_openapi_spec.py | 73 +++++++++++++++++-- .../common_utils/test_custom_openapi_spec.py | 64 +++++++++++++++- 2 files changed, 131 insertions(+), 6 deletions(-) diff --git a/litellm/proxy/common_utils/custom_openapi_spec.py b/litellm/proxy/common_utils/custom_openapi_spec.py index d57dde04590..c448742f6dc 100644 --- a/litellm/proxy/common_utils/custom_openapi_spec.py +++ b/litellm/proxy/common_utils/custom_openapi_spec.py @@ -93,6 +93,11 @@ class CustomOpenAPISpec: schema_properties = actual_schema.get("properties", {}) required_fields = actual_schema.get("required", []) + # Extract $defs and add them to components/schemas + # This fixes Pydantic v2 $defs not being resolvable in Swagger/OpenAPI + if "$defs" in actual_schema: + CustomOpenAPISpec._move_defs_to_components(openapi_schema, actual_schema["$defs"]) + # Create an expanded inline schema instead of just a $ref # This makes Swagger UI show all individual fields in the request body editor expanded_schema = { @@ -105,6 +110,9 @@ class CustomOpenAPISpec: for field_name, field_def in schema_properties.items(): expanded_field = CustomOpenAPISpec._expand_field_definition(field_def) + # Rewrite $defs references to use components/schemas instead + expanded_field = CustomOpenAPISpec._rewrite_defs_refs(expanded_field) + # Add a simple example for the messages field if field_name == "messages": expanded_field["example"] = [ @@ -113,11 +121,6 @@ class CustomOpenAPISpec: expanded_schema["properties"][field_name] = expanded_field - # Include $defs from the original schema to support complex types like AllMessageValues - # This ensures that message types and other complex union types work properly - if "$defs" in actual_schema: - expanded_schema["$defs"] = actual_schema["$defs"] - # Set the request body with the expanded schema openapi_schema["paths"][path]["post"]["requestBody"] = { "required": True, @@ -138,6 +141,66 @@ class CustomOpenAPISpec: ] openapi_schema["paths"][path]["post"]["parameters"] = filtered_params + @staticmethod + def _move_defs_to_components(openapi_schema: Dict[str, Any], defs: Dict[str, Any]) -> None: + """ + Move $defs from Pydantic v2 schema to OpenAPI components/schemas. + This makes the definitions resolvable in Swagger/OpenAPI viewers. + + Args: + openapi_schema: The OpenAPI schema dict to modify + defs: The $defs dictionary from Pydantic schema + """ + if not defs: + return + + # Ensure components/schemas exists + if "components" not in openapi_schema: + openapi_schema["components"] = {} + if "schemas" not in openapi_schema["components"]: + openapi_schema["components"]["schemas"] = {} + + # Add each definition to components/schemas + for def_name, def_schema in defs.items(): + # Recursively rewrite any nested $defs references within this definition + rewritten_def = CustomOpenAPISpec._rewrite_defs_refs(def_schema) + openapi_schema["components"]["schemas"][def_name] = rewritten_def + + # If this definition also has $defs, process them recursively + if "$defs" in def_schema: + CustomOpenAPISpec._move_defs_to_components(openapi_schema, def_schema["$defs"]) + + @staticmethod + def _rewrite_defs_refs(schema: Any) -> Any: + """ + Recursively rewrite $ref values from #/$defs/... to #/components/schemas/... + This converts Pydantic v2 references to OpenAPI-compatible references. + + Args: + schema: Schema object to process (can be dict, list, or primitive) + + Returns: + Schema with rewritten references + """ + if isinstance(schema, dict): + result = {} + for key, value in schema.items(): + if key == "$ref" and isinstance(value, str) and value.startswith("#/$defs/"): + # Rewrite the reference to use components/schemas + def_name = value.replace("#/$defs/", "") + result[key] = f"#/components/schemas/{def_name}" + elif key == "$defs": + # Remove $defs from the schema since they're moved to components + continue + else: + # Recursively process nested structures + result[key] = CustomOpenAPISpec._rewrite_defs_refs(value) + return result + elif isinstance(schema, list): + return [CustomOpenAPISpec._rewrite_defs_refs(item) for item in schema] + else: + return schema + @staticmethod def _extract_field_schema(field_def: Dict[str, Any]) -> Dict[str, Any]: """ diff --git a/tests/test_litellm/proxy/common_utils/test_custom_openapi_spec.py b/tests/test_litellm/proxy/common_utils/test_custom_openapi_spec.py index 8dd99e2ae59..7549b4259af 100644 --- a/tests/test_litellm/proxy/common_utils/test_custom_openapi_spec.py +++ b/tests/test_litellm/proxy/common_utils/test_custom_openapi_spec.py @@ -88,4 +88,66 @@ class TestCustomOpenAPISpec: paths=CustomOpenAPISpec.RESPONSES_API_PATHS, operation_name="responses API" ) - assert result == base_openapi_schema \ No newline at end of file + assert result == base_openapi_schema + + +def test_move_defs_to_components(): + """ + Test that $defs from Pydantic v2 schemas are moved to components/schemas. + """ + openapi_schema = {} + + defs = { + "UserMessage": { + "type": "object", + "properties": { + "role": {"type": "string"}, + "content": {"type": "string"} + } + }, + "AssistantMessage": { + "type": "object", + "properties": { + "role": {"type": "string"}, + "content": {"type": "string"} + } + } + } + + CustomOpenAPISpec._move_defs_to_components(openapi_schema=openapi_schema, defs=defs) + + assert "components" in openapi_schema + assert "schemas" in openapi_schema["components"] + assert "UserMessage" in openapi_schema["components"]["schemas"] + assert "AssistantMessage" in openapi_schema["components"]["schemas"] + assert openapi_schema["components"]["schemas"]["UserMessage"]["type"] == "object" + + +def test_rewrite_defs_refs(): + """ + Test that $ref values are rewritten from #/$defs/ to #/components/schemas/. + """ + schema = { + "type": "object", + "properties": { + "messages": { + "type": "array", + "items": { + "anyOf": [ + {"$ref": "#/$defs/UserMessage"}, + {"$ref": "#/$defs/AssistantMessage"} + ] + } + } + }, + "$defs": { + "UserMessage": {"type": "object"}, + "AssistantMessage": {"type": "object"} + } + } + + rewritten = CustomOpenAPISpec._rewrite_defs_refs(schema=schema) + + assert "$defs" not in rewritten + assert rewritten["properties"]["messages"]["items"]["anyOf"][0]["$ref"] == "#/components/schemas/UserMessage" + assert rewritten["properties"]["messages"]["items"]["anyOf"][1]["$ref"] == "#/components/schemas/AssistantMessage" From ff90585bfe071c697bba3f2a163e95f205d0dae3 Mon Sep 17 00:00:00 2001 From: yuneng-jiang Date: Tue, 18 Nov 2025 17:40:32 -0800 Subject: [PATCH 06/89] Break e2e_ui_testing into build, unit, and e2e steps (#16783) --- .circleci/config.yml | 78 +++++++++++++++++++++++++++++++++----------- 1 file changed, 59 insertions(+), 19 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 62c12c1cf92..6dd1177f79c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3339,7 +3339,7 @@ jobs: python -m build twine upload --verbose dist/* - e2e_ui_testing: + ui_build: machine: image: ubuntu-2204:2023.10.1 resource_class: xlarge @@ -3366,6 +3366,48 @@ jobs: # Now source the build script source ./build_ui.sh + - persist_to_workspace: + root: . + paths: + - litellm/proxy/_experimental/out + + ui_unit_tests: + machine: + image: ubuntu-2204:2023.10.1 + resource_class: xlarge + working_directory: ~/project + steps: + - checkout + - setup_google_dns + - run: + name: Run UI unit tests (Vitest) + command: | + # Use Node 20 (several deps require >=20) + export NVM_DIR="/opt/circleci/.nvm" + source "$NVM_DIR/nvm.sh" + nvm install 20 + nvm use 20 + + cd ui/litellm-dashboard + npm ci || npm install + + # CI run, with both LCOV (Codecov) and HTML (artifact you can click) + CI=true npm run test -- --run --coverage \ + --coverage.provider=v8 \ + --coverage.reporter=lcov \ + --coverage.reporter=html \ + --coverage.reportsDirectory=coverage/html + + e2e_ui_testing: + machine: + image: ubuntu-2204:2023.10.1 + resource_class: xlarge + working_directory: ~/project + steps: + - checkout + - setup_google_dns + - attach_workspace: + at: ~/project - run: name: Upgrade Docker to v24.x (API 1.44+) command: | @@ -3411,24 +3453,6 @@ jobs: name: Install Playwright Browsers command: | npx playwright install - - run: - name: Run UI unit tests (Vitest) - command: | - # Use Node 20 (several deps require >=20) - export NVM_DIR="/opt/circleci/.nvm" - source "$NVM_DIR/nvm.sh" - nvm install 20 - nvm use 20 - - cd ui/litellm-dashboard - npm ci || npm install - - # CI run, with both LCOV (Codecov) and HTML (artifact you can click) - CI=true npm run test -- --run --coverage \ - --coverage.provider=v8 \ - --coverage.reporter=lcov \ - --coverage.reporter=html \ - --coverage.reportsDirectory=coverage/html - run: name: Build Docker image @@ -3633,6 +3657,20 @@ workflows: only: - main - /litellm_.*/ + - ui_build: + filters: + branches: + only: + - main + - /litellm_.*/ + - ui_unit_tests: + requires: + - ui_build + filters: + branches: + only: + - main + - /litellm_.*/ - auth_ui_unit_tests: filters: branches: @@ -3640,6 +3678,8 @@ workflows: - main - /litellm_.*/ - e2e_ui_testing: + requires: + - ui_build filters: branches: only: From 7b9c409760816031045e41a14ab0ebe3ddde8f67 Mon Sep 17 00:00:00 2001 From: yuneng-jiang Date: Tue, 18 Nov 2025 17:40:50 -0800 Subject: [PATCH 07/89] Mock tremor's tooltip to fix flaky tests (#16786) --- ui/litellm-dashboard/tests/setupTests.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ui/litellm-dashboard/tests/setupTests.ts b/ui/litellm-dashboard/tests/setupTests.ts index eb48ecc102b..fdb3dea36e7 100644 --- a/ui/litellm-dashboard/tests/setupTests.ts +++ b/ui/litellm-dashboard/tests/setupTests.ts @@ -1,5 +1,6 @@ import "@testing-library/jest-dom"; import { cleanup } from "@testing-library/react"; +import React from "react"; import { afterEach, vi } from "vitest"; // Global mock for NotificationManager to prevent React rendering issues in tests @@ -16,6 +17,18 @@ vi.mock("@/components/molecules/notifications_manager", () => ({ }, })); +vi.mock("@tremor/react", async (importOriginal) => { + const actual = await importOriginal(); + return { + ...actual, + Tooltip: ({ children, ..._props }: { children?: React.ReactNode; [key: string]: unknown }) => { + // Return children directly without tooltip functionality to prevent flaky tests + // This avoids issues with hover states, positioning, and DOM queries in tests + return React.createElement(React.Fragment, null, children); + }, + }; +}); + afterEach(() => { cleanup(); }); From fe05e33723fa99a76da195f052c2f2f41ae72a2e Mon Sep 17 00:00:00 2001 From: yuneng-jiang Date: Tue, 18 Nov 2025 17:56:40 -0800 Subject: [PATCH 08/89] Fix e2e ui playwright test (#16799) --- .../e2e_ui_tests/login_to_ui.spec.ts | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/tests/proxy_admin_ui_tests/e2e_ui_tests/login_to_ui.spec.ts b/tests/proxy_admin_ui_tests/e2e_ui_tests/login_to_ui.spec.ts index f5148bed16d..8971a84649e 100644 --- a/tests/proxy_admin_ui_tests/e2e_ui_tests/login_to_ui.spec.ts +++ b/tests/proxy_admin_ui_tests/e2e_ui_tests/login_to_ui.spec.ts @@ -6,17 +6,17 @@ Basic UI Test Click on all the tabs ensure nothing is broken */ -import { test, expect } from '@playwright/test'; +import { test, expect } from "@playwright/test"; -test('admin login test', async ({ page }) => { +test("admin login test", async ({ page }) => { // Go to the specified URL - await page.goto('http://localhost:4000/ui'); + await page.goto("http://localhost:4000/ui"); // Enter "admin" in the username input field - await page.fill('input[name="username"]', 'admin'); + await page.fill('input[name="username"]', "admin"); // Enter "gm" in the password input field - await page.fill('input[name="password"]', 'gm'); + await page.fill('input[name="password"]', "gm"); // Optionally, you can add an assertion to verify the login button is enabled const loginButton = page.locator('input[type="submit"]'); @@ -25,20 +25,22 @@ test('admin login test', async ({ page }) => { // Optionally, you can click the login button to submit the form await loginButton.click(); const tabs = [ - 'Virtual Keys', - 'Test Key', - 'Models', - 'Usage', - 'Teams', - 'Internal User', - 'Settings', - 'Experimental', - 'API Reference', - 'Model Hub' + "Virtual Keys", + "Test Key", + "Models", + "Usage", + "Teams", + "Internal User", + "Settings", + "Experimental", + "API Reference", + "AI Hub", ]; for (const tab of tabs) { - const tabElement = page.locator('span.ant-menu-title-content', { hasText: tab }); + const tabElement = page.locator("span.ant-menu-title-content", { + hasText: tab, + }); await tabElement.click(); } }); From d0e806d1b38bd5b553b9ca22c7b7ccda2d26a6a2 Mon Sep 17 00:00:00 2001 From: yuneng-jiang Date: Tue, 18 Nov 2025 19:49:16 -0800 Subject: [PATCH 09/89] Add additional model settings to chat models in test key (#16793) --- .../chat_ui/AdditionalModelSettings.test.tsx | 50 +++++++ .../chat_ui/AdditionalModelSettings.tsx | 137 ++++++++++++++++++ .../src/components/chat_ui/ChatUI.test.tsx | 8 +- .../src/components/chat_ui/ChatUI.tsx | 64 +++++++- .../llm_calls/chat_completion.test.tsx | 118 +++++++++++++++ .../chat_ui/llm_calls/chat_completion.tsx | 4 + 6 files changed, 375 insertions(+), 6 deletions(-) create mode 100644 ui/litellm-dashboard/src/components/chat_ui/AdditionalModelSettings.test.tsx create mode 100644 ui/litellm-dashboard/src/components/chat_ui/AdditionalModelSettings.tsx create mode 100644 ui/litellm-dashboard/src/components/chat_ui/llm_calls/chat_completion.test.tsx diff --git a/ui/litellm-dashboard/src/components/chat_ui/AdditionalModelSettings.test.tsx b/ui/litellm-dashboard/src/components/chat_ui/AdditionalModelSettings.test.tsx new file mode 100644 index 00000000000..9eebc382163 --- /dev/null +++ b/ui/litellm-dashboard/src/components/chat_ui/AdditionalModelSettings.test.tsx @@ -0,0 +1,50 @@ +import { render, screen, waitFor } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { describe, expect, it, vi } from "vitest"; +import AdditionalModelSettings from "./AdditionalModelSettings"; + +describe("AdditionalModelSettings", () => { + it("should render correctly", () => { + const { container } = render(); + expect(container).toBeTruthy(); + + expect(screen.getByText("Use Advanced Parameters")).toBeInTheDocument(); + + expect(screen.getByText("Temperature")).toBeInTheDocument(); + expect(screen.getByText("Max Tokens")).toBeInTheDocument(); + }); + + it("should enable the sliders when the checkbox is checked", async () => { + const user = userEvent.setup(); + const mockOnTemperatureChange = vi.fn(); + const mockOnMaxTokensChange = vi.fn(); + + render( + , + ); + + const checkbox = screen.getByRole("checkbox", { name: /Use Advanced Parameters/i }); + expect(checkbox).toBeInTheDocument(); + expect(checkbox).not.toBeChecked(); + + await user.click(checkbox); + + await waitFor(() => { + expect(screen.getByRole("checkbox", { name: /Use Advanced Parameters/i })).toBeChecked(); + }); + + await waitFor(() => { + const sliders = screen.getAllByRole("slider"); + expect(sliders.length).toBeGreaterThan(0); + expect(sliders[0]).not.toBeDisabled(); + }); + + const temperatureSlider = screen.getAllByRole("slider")[0]; + const maxTokensSlider = screen.getAllByRole("slider")[1]; + expect(temperatureSlider).not.toBeDisabled(); + expect(maxTokensSlider).not.toBeDisabled(); + }); +}); diff --git a/ui/litellm-dashboard/src/components/chat_ui/AdditionalModelSettings.tsx b/ui/litellm-dashboard/src/components/chat_ui/AdditionalModelSettings.tsx new file mode 100644 index 00000000000..85307509525 --- /dev/null +++ b/ui/litellm-dashboard/src/components/chat_ui/AdditionalModelSettings.tsx @@ -0,0 +1,137 @@ +import { InfoCircleOutlined } from "@ant-design/icons"; +import { Text } from "@tremor/react"; +import { Checkbox, InputNumber, Slider, Tooltip } from "antd"; +import React, { useEffect, useState } from "react"; + +interface AdditionalModelSettingsProps { + temperature?: number; + maxTokens?: number; + useAdvancedParams?: boolean; + onTemperatureChange?: (value: number) => void; + onMaxTokensChange?: (value: number) => void; + onUseAdvancedParamsChange?: (value: boolean) => void; +} + +const AdditionalModelSettings: React.FC = ({ + temperature = 1.0, + maxTokens = 2048, + useAdvancedParams: externalUseAdvancedParams, + onTemperatureChange, + onMaxTokensChange, + onUseAdvancedParamsChange, +}) => { + const [internalUseAdvancedParams, setInternalUseAdvancedParams] = useState(false); + const useAdvancedParams = + externalUseAdvancedParams !== undefined ? externalUseAdvancedParams : internalUseAdvancedParams; + const [localTemperature, setLocalTemperature] = useState(temperature); + const [localMaxTokens, setLocalMaxTokens] = useState(maxTokens); + + // Sync local state with props when they change + useEffect(() => { + setLocalTemperature(temperature); + }, [temperature]); + + useEffect(() => { + setLocalMaxTokens(maxTokens); + }, [maxTokens]); + + const handleTemperatureChange = (value: number | null) => { + const newValue = value ?? 1.0; + setLocalTemperature(newValue); + onTemperatureChange?.(newValue); + }; + + const handleMaxTokensChange = (value: number | null) => { + const newValue = value ?? 1000; + setLocalMaxTokens(newValue); + onMaxTokensChange?.(newValue); + }; + + const disabledOpacity = useAdvancedParams ? 1 : 0.4; + const disabledTextColor = useAdvancedParams ? "text-gray-700" : "text-gray-400"; + + const handleUseAdvancedParamsChange = (checked: boolean) => { + if (onUseAdvancedParamsChange) { + onUseAdvancedParamsChange(checked); + } else { + setInternalUseAdvancedParams(checked); + } + }; + + return ( +

+ ); +}; + +export default AdditionalModelSettings; diff --git a/ui/litellm-dashboard/src/components/chat_ui/ChatUI.test.tsx b/ui/litellm-dashboard/src/components/chat_ui/ChatUI.test.tsx index 53fa2b0916e..9bf2d4fc14f 100644 --- a/ui/litellm-dashboard/src/components/chat_ui/ChatUI.test.tsx +++ b/ui/litellm-dashboard/src/components/chat_ui/ChatUI.test.tsx @@ -120,7 +120,9 @@ describe("ChatUI", () => { // Open the "Select Model" dropdown (AntD renders options in a portal) const selectModelLabel = getByText("Select Model"); - const modelSelect = selectModelLabel.parentElement?.querySelector(".ant-select-selector"); + // The Select component is a sibling of the Text component, so we need to find it in the parent container + const modelSelectContainer = selectModelLabel.closest("div"); + const modelSelect = modelSelectContainer?.querySelector(".ant-select-selector"); expect(modelSelect).toBeTruthy(); fireEvent.mouseDown(modelSelect!); @@ -164,7 +166,9 @@ describe("ChatUI", () => { // Open model selector const selectModelLabel = getByText("Select Model"); - const modelSelect = selectModelLabel.parentElement?.querySelector(".ant-select-selector"); + // The Select component is a sibling of the Text component, so we need to find it in the parent container + const modelSelectContainer = selectModelLabel.closest("div"); + const modelSelect = modelSelectContainer?.querySelector(".ant-select-selector"); expect(modelSelect).toBeTruthy(); act(() => { fireEvent.mouseDown(modelSelect!); diff --git a/ui/litellm-dashboard/src/components/chat_ui/ChatUI.tsx b/ui/litellm-dashboard/src/components/chat_ui/ChatUI.tsx index b65e254893f..211382541cc 100644 --- a/ui/litellm-dashboard/src/components/chat_ui/ChatUI.tsx +++ b/ui/litellm-dashboard/src/components/chat_ui/ChatUI.tsx @@ -12,28 +12,30 @@ import { PictureOutlined, RobotOutlined, SafetyOutlined, + SettingOutlined, SoundOutlined, TagsOutlined, ToolOutlined, UserOutlined, } from "@ant-design/icons"; import { Card, Text, TextInput, Title, Button as TremorButton } from "@tremor/react"; -import { Button, Input, Modal, Select, Spin, Tooltip, Typography, Upload } from "antd"; +import { Button, Input, Modal, Popover, Select, Spin, Tooltip, Typography, Upload } from "antd"; import React, { useEffect, useRef, useState } from "react"; import ReactMarkdown from "react-markdown"; import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"; import { coy } from "react-syntax-highlighter/dist/esm/styles/prism"; import { v4 as uuidv4 } from "uuid"; +import { truncateString } from "../../utils/textUtils"; import GuardrailSelector from "../guardrails/GuardrailSelector"; import NotificationsManager from "../molecules/notifications_manager"; import TagSelector from "../tag_management/TagSelector"; import VectorStoreSelector from "../vector_store_management/VectorStoreSelector"; +import AdditionalModelSettings from "./AdditionalModelSettings"; import AudioRenderer from "./AudioRenderer"; import { OPEN_AI_VOICE_SELECT_OPTIONS, OpenAIVoice } from "./chatConstants"; import ChatImageRenderer from "./ChatImageRenderer"; import ChatImageUpload from "./ChatImageUpload"; import { createChatDisplayMessage, createChatMultimodalMessage } from "./ChatImageUtils"; -import { truncateString } from "../../utils/textUtils"; import { generateCodeSnippet } from "./CodeSnippets"; import EndpointSelector from "./EndpointSelector"; import { makeAnthropicMessagesRequest } from "./llm_calls/anthropic_messages"; @@ -184,6 +186,9 @@ const ChatUI: React.FC = ({ const [generatedCode, setGeneratedCode] = useState(""); const [selectedSdk, setSelectedSdk] = useState<"openai" | "azure">("openai"); const [mcpEvents, setMCPEvents] = useState([]); + const [temperature, setTemperature] = useState(1.0); + const [maxTokens, setMaxTokens] = useState(2048); + const [useAdvancedParams, setUseAdvancedParams] = useState(false); const chatEndRef = useRef(null); @@ -765,6 +770,8 @@ const ChatUI: React.FC = ({ selectedMCPTools, // Pass the selected tools array updateChatImageUI, // Pass the image callback updateSearchResults, // Pass the search results callback + useAdvancedParams ? temperature : undefined, // Pass temperature if enabled + useAdvancedParams ? maxTokens : undefined, // Pass max_tokens if enabled ); } else if (endpointType === EndpointType.IMAGE) { // For image generation @@ -950,6 +957,19 @@ const ChatUI: React.FC = ({ setShowCustomModelInput(value === "custom"); }; + // Check if the selected model is a chat model + const isChatModel = () => { + if (!selectedModel || selectedModel === "custom") { + return false; + } + const model = modelInfo.find((m) => m.model_group === selectedModel); + if (!model) { + return false; + } + // Check if mode is explicitly "chat" or undefined (which defaults to chat per backend) + return !model.mode || model.mode === "chat"; + }; + const antIcon = ; return ( @@ -1037,8 +1057,44 @@ const ChatUI: React.FC = ({
- - Select Model + + + Select Model + + {isChatModel() ? ( + + } + title="Model Settings" + trigger="click" + placement="right" + > +
+ ); +}; + +// Shared component for rendering callback selector +interface CallbackSelectorProps { + callbackConfigs: any[]; + selectedCallback: string | null; + onCallbackChange: (value: string) => void; + disabled?: boolean; +} + +const CallbackSelector: React.FC = ({ + callbackConfigs, + selectedCallback, + onCallbackChange, + disabled = false, +}) => { + return ( + + + + ); +}; + +// Shared helper function to get dynamic params for a callback +const getDynamicParamsForCallback = ( + callbackName: string | null, + callbackConfigs: any[], + fallbackVariables?: Record, +): string[] => { + if (!callbackName) { + return fallbackVariables ? Object.keys(fallbackVariables) : []; + } + + const callbackConfig = callbackConfigs.find((config) => config.id === callbackName); + if (callbackConfig?.dynamic_params) { + return Object.keys(callbackConfig.dynamic_params); + } + + return fallbackVariables ? Object.keys(fallbackVariables) : []; +}; + +// Shared helper function to build callback payload +const buildCallbackPayload = (formValues: Record, callbackName: string) => { + return { + environment_variables: formValues, + litellm_settings: { + success_callback: [callbackName], + }, + }; +}; + const Settings: React.FC = ({ accessToken, userRole, userID, premiumUser }) => { const [callbacks, setCallbacks] = useState([]); const [alerts, setAlerts] = useState([]); @@ -83,6 +241,8 @@ const Settings: React.FC = ({ accessToken, userRole, userID, const [selectedEditCallback, setSelectedEditCallback] = useState(null); const [showDeleteConfirmModal, setShowDeleteConfirmModal] = useState(false); const [callbackToDelete, setCallbackToDelete] = useState(null); + const [isUpdatingCallback, setIsUpdatingCallback] = useState(false); + const [isAddingCallback, setIsAddingCallback] = useState(false); useEffect(() => { if (!accessToken) { @@ -102,7 +262,10 @@ const Settings: React.FC = ({ accessToken, userRole, userID, const normalized = Object.fromEntries( Object.entries(selectedEditCallback.variables || {}).map(([k, v]) => [k, v ?? ""]), ); - editForm.setFieldsValue(normalized); + editForm.setFieldsValue({ + ...normalized, + callback: selectedEditCallback.name, + }); } }, [showEditCallback, selectedEditCallback, editForm]); @@ -154,31 +317,36 @@ const Settings: React.FC = ({ accessToken, userRole, userID, return activeAlerts && activeAlerts.includes(alertName); }; - const updateCallbackCall = async (formValues: Record) => { - if (!accessToken || !selectedEditCallback) { + // Shared handler for callback form submission + const handleCallbackSubmit = async (formValues: Record, callbackName: string, isEdit: boolean) => { + if (!accessToken) { return; } - let env_vars: Record = {}; - // add all other variables - Object.entries(formValues).forEach(([key, value]) => { - if (key !== "callback") { - env_vars[key] = value; - } - }); - let payload = { - environment_variables: formValues, - litellm_settings: { - success_callback: [selectedEditCallback.name], - }, - }; + if (isEdit) { + setIsUpdatingCallback(true); + } else { + setIsAddingCallback(true); + } + + const payload = buildCallbackPayload(formValues, callbackName); try { await setCallbacksCall(accessToken, payload); - NotificationsManager.success("Callback updated successfully"); - setShowEditCallback(false); - editForm.resetFields(); - setSelectedEditCallback(null); + NotificationsManager.success( + isEdit ? "Callback updated successfully" : `Callback ${callbackName} added successfully`, + ); + + if (isEdit) { + setShowEditCallback(false); + editForm.resetFields(); + setSelectedEditCallback(null); + } else { + setShowAddCallbacksModal(false); + addForm.resetFields(); + setSelectedCallback(null); + setSelectedCallbackParams([]); + } // Refresh the callbacks list if (userID && userRole) { @@ -187,56 +355,34 @@ const Settings: React.FC = ({ accessToken, userRole, userID, } } catch (error) { NotificationsManager.fromBackend(error); + } finally { + if (isEdit) { + setIsUpdatingCallback(false); + } else { + setIsAddingCallback(false); + } } }; - const addNewCallbackCall = async (formValues: Record) => { - if (!accessToken) { + const updateCallbackCall = async (formValues: Record) => { + if (!selectedEditCallback) { return; } - let new_callback = formValues?.callback; + await handleCallbackSubmit(formValues, selectedEditCallback.name, true); + }; - let env_vars: Record = {}; - // add all other variables - Object.entries(formValues).forEach(([key, value]) => { - if (key !== "callback") { - env_vars[key] = value; - } - }); - - let payload = { - environment_variables: formValues, - litellm_settings: { - success_callback: [new_callback], - }, - }; - - try { - await setCallbacksCall(accessToken, payload); - NotificationsManager.success(`Callback ${new_callback} added successfully`); - setShowAddCallbacksModal(false); - addForm.resetFields(); - setSelectedCallback(null); - setSelectedCallbackParams([]); - - // Refresh the callbacks list - const updatedData = await getCallbacksCall(accessToken, userID || "", userRole || ""); - setCallbacks(updatedData.callbacks); - } catch (error) { - NotificationsManager.fromBackend(error); + const addNewCallbackCall = async (formValues: Record) => { + const new_callback = formValues?.callback; + if (!new_callback) { + return; } + await handleCallbackSubmit(formValues, new_callback, false); }; const handleSelectedCallbackChange = (callbackName: string) => { setSelectedCallback(callbackName); - - const callbackConfig = callbackConfigs.find((config) => config.id === callbackName); - - if (callbackConfig?.dynamic_params) { - setSelectedCallbackParams(Object.keys(callbackConfig.dynamic_params)); - } else { - setSelectedCallbackParams([]); - } + const params = getDynamicParamsForCallback(callbackName, callbackConfigs); + setSelectedCallbackParams(params); }; const handleSaveAlerts = async () => { @@ -564,103 +710,17 @@ const Settings: React.FC = ({ accessToken, userRole, userID, wrapperCol={{ span: 16 }} labelAlign="left" > - - - - - {selectedCallbackParams && selectedCallbackParams.length > 0 && ( -
- {selectedCallbackParams.map((param) => { - const callbackConfig = callbackConfigs.find((config) => config.id === selectedCallback); - const paramConfig = callbackConfig?.dynamic_params?.[param] || {}; - const paramType = paramConfig.type || "text"; - const fieldLabel = - paramConfig.ui_name || param.replace(/_/g, " ").replace(/\b\w/g, (l) => l.toUpperCase()); - const isRequired = paramConfig.required || false; - - return ( - {fieldLabel} } - name={param} - key={param} - className="mb-4" - rules={ - isRequired - ? [ - { - required: true, - message: `Please enter the ${fieldLabel.toLowerCase()}`, - }, - ] - : undefined - } - > - {paramType === "password" ? ( - - ) : paramType === "number" ? ( - - ) : ( - - )} - - ); - })} -
- )} +
= ({ accessToken, userRole, userID, setSelectedCallbackParams([]); addForm.resetFields(); }} + disabled={isAddingCallback} > Cancel - Add Callback + + {isAddingCallback ? "Adding..." : "Add Callback"} +
{ setShowEditCallback(false); setSelectedEditCallback(null); + editForm.resetFields(); }} footer={null} > @@ -695,35 +759,54 @@ const Settings: React.FC = ({ accessToken, userRole, userID, wrapperCol={{ span: 16 }} labelAlign="left" > - <> - {selectedEditCallback && - selectedEditCallback.variables && - Object.entries(selectedEditCallback.variables).map(([param]) => ( - - - - ))} - + {selectedEditCallback && ( + <> + {}} + disabled={true} + /> -
- Save + + + )} + +
+ { + setShowEditCallback(false); + setSelectedEditCallback(null); + editForm.resetFields(); + }} + disabled={isUpdatingCallback} + > + Cancel + + { + editForm.submit(); + }} + loading={isUpdatingCallback} + disabled={isUpdatingCallback} + > + {isUpdatingCallback ? "Saving..." : "Save Changes"} +
{ setShowDeleteConfirmModal(false); From 149f3084518d4d70d7d19ab6cff2cd356d108f15 Mon Sep 17 00:00:00 2001 From: Sameer Kankute Date: Wed, 19 Nov 2025 10:01:59 +0530 Subject: [PATCH 21/89] make all gpt-5 and reasoning models to responses by default (#16766) --- ...odel_prices_and_context_window_backup.json | 38 +++++++++---------- model_prices_and_context_window.json | 38 +++++++++---------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index e77e67bf70d..4fe2a19f604 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -14623,7 +14623,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1e-05, "output_cost_per_token_flex": 5e-06, "output_cost_per_token_priority": 2e-05, @@ -14660,7 +14660,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1e-05, "output_cost_per_token_priority": 2e-05, "supported_endpoints": [ @@ -14696,7 +14696,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1e-05, "output_cost_per_token_priority": 2e-05, "supported_endpoints": [ @@ -14732,7 +14732,7 @@ "max_input_tokens": 128000, "max_output_tokens": 16384, "max_tokens": 16384, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1e-05, "output_cost_per_token_priority": 2e-05, "supported_endpoints": [ @@ -14835,7 +14835,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1e-05, "output_cost_per_token_flex": 5e-06, "output_cost_per_token_priority": 2e-05, @@ -14870,7 +14870,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1e-05, "supported_endpoints": [ "/v1/chat/completions", @@ -14902,7 +14902,7 @@ "max_input_tokens": 128000, "max_output_tokens": 16384, "max_tokens": 16384, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1e-05, "supported_endpoints": [ "/v1/chat/completions", @@ -15034,7 +15034,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 2e-06, "output_cost_per_token_flex": 1e-06, "output_cost_per_token_priority": 3.6e-06, @@ -15073,7 +15073,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 2e-06, "output_cost_per_token_flex": 1e-06, "output_cost_per_token_priority": 3.6e-06, @@ -15111,7 +15111,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 4e-07, "output_cost_per_token_flex": 2e-07, "supported_endpoints": [ @@ -15146,7 +15146,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 4e-07, "output_cost_per_token_flex": 2e-07, "supported_endpoints": [ @@ -17999,7 +17999,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 6e-05, "supports_function_calling": true, "supports_parallel_function_calling": true, @@ -18018,7 +18018,7 @@ "max_input_tokens": 128000, "max_output_tokens": 65536, "max_tokens": 65536, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 4.4e-06, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18032,7 +18032,7 @@ "max_input_tokens": 128000, "max_output_tokens": 65536, "max_tokens": 65536, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1.2e-05, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18046,7 +18046,7 @@ "max_input_tokens": 128000, "max_output_tokens": 32768, "max_tokens": 32768, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 6e-05, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18060,7 +18060,7 @@ "max_input_tokens": 128000, "max_output_tokens": 32768, "max_tokens": 32768, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 6e-05, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18176,7 +18176,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 8e-06, "supported_endpoints": [ "/v1/responses", @@ -18274,7 +18274,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 4.4e-06, "supports_function_calling": true, "supports_parallel_function_calling": false, @@ -18291,7 +18291,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 4.4e-06, "supports_function_calling": true, "supports_parallel_function_calling": false, diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index e77e67bf70d..4fe2a19f604 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -14623,7 +14623,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1e-05, "output_cost_per_token_flex": 5e-06, "output_cost_per_token_priority": 2e-05, @@ -14660,7 +14660,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1e-05, "output_cost_per_token_priority": 2e-05, "supported_endpoints": [ @@ -14696,7 +14696,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1e-05, "output_cost_per_token_priority": 2e-05, "supported_endpoints": [ @@ -14732,7 +14732,7 @@ "max_input_tokens": 128000, "max_output_tokens": 16384, "max_tokens": 16384, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1e-05, "output_cost_per_token_priority": 2e-05, "supported_endpoints": [ @@ -14835,7 +14835,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1e-05, "output_cost_per_token_flex": 5e-06, "output_cost_per_token_priority": 2e-05, @@ -14870,7 +14870,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1e-05, "supported_endpoints": [ "/v1/chat/completions", @@ -14902,7 +14902,7 @@ "max_input_tokens": 128000, "max_output_tokens": 16384, "max_tokens": 16384, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1e-05, "supported_endpoints": [ "/v1/chat/completions", @@ -15034,7 +15034,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 2e-06, "output_cost_per_token_flex": 1e-06, "output_cost_per_token_priority": 3.6e-06, @@ -15073,7 +15073,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 2e-06, "output_cost_per_token_flex": 1e-06, "output_cost_per_token_priority": 3.6e-06, @@ -15111,7 +15111,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 4e-07, "output_cost_per_token_flex": 2e-07, "supported_endpoints": [ @@ -15146,7 +15146,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 4e-07, "output_cost_per_token_flex": 2e-07, "supported_endpoints": [ @@ -17999,7 +17999,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 6e-05, "supports_function_calling": true, "supports_parallel_function_calling": true, @@ -18018,7 +18018,7 @@ "max_input_tokens": 128000, "max_output_tokens": 65536, "max_tokens": 65536, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 4.4e-06, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18032,7 +18032,7 @@ "max_input_tokens": 128000, "max_output_tokens": 65536, "max_tokens": 65536, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 1.2e-05, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18046,7 +18046,7 @@ "max_input_tokens": 128000, "max_output_tokens": 32768, "max_tokens": 32768, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 6e-05, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18060,7 +18060,7 @@ "max_input_tokens": 128000, "max_output_tokens": 32768, "max_tokens": 32768, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 6e-05, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18176,7 +18176,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 8e-06, "supported_endpoints": [ "/v1/responses", @@ -18274,7 +18274,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 4.4e-06, "supports_function_calling": true, "supports_parallel_function_calling": false, @@ -18291,7 +18291,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "chat", + "mode": "responses", "output_cost_per_token": 4.4e-06, "supports_function_calling": true, "supports_parallel_function_calling": false, From b92cc2b2f983ec09649eeb8a777d0c56dcf3b328 Mon Sep 17 00:00:00 2001 From: Alan Ponnachan <85491837+AlanPonnachan@users.noreply.github.com> Date: Wed, 19 Nov 2025 10:07:21 +0530 Subject: [PATCH 22/89] fix(bedrock): Ensure consistent chunk IDs in Bedrock streaming responses (#16596) * ensure consistent chunk IDs in streaming responses * use native conversationId for consistent stream chunk IDs --- litellm/llms/bedrock/chat/invoke_handler.py | 25 ++++++++--- .../llms/bedrock/chat/test_invoke_handler.py | 41 +++++++++++++++++-- 2 files changed, 56 insertions(+), 10 deletions(-) diff --git a/litellm/llms/bedrock/chat/invoke_handler.py b/litellm/llms/bedrock/chat/invoke_handler.py index 53cbafcbe6a..71429e4191f 100644 --- a/litellm/llms/bedrock/chat/invoke_handler.py +++ b/litellm/llms/bedrock/chat/invoke_handler.py @@ -493,9 +493,9 @@ class BedrockLLM(BaseAWSLLM): content=None, ) model_response.choices[0].message = _message # type: ignore - model_response._hidden_params["original_response"] = ( - outputText # allow user to access raw anthropic tool calling response - ) + model_response._hidden_params[ + "original_response" + ] = outputText # allow user to access raw anthropic tool calling response if ( _is_function_call is True and stream is not None @@ -793,9 +793,9 @@ class BedrockLLM(BaseAWSLLM): ): # completion(top_k=3) > anthropic_config(top_k=3) <- allows for dynamic variables to be passed in inference_params[k] = v if stream is True: - inference_params["stream"] = ( - True # cohere requires stream = True in inference params - ) + inference_params[ + "stream" + ] = True # cohere requires stream = True in inference params data = json.dumps({"prompt": prompt, **inference_params}) elif provider == "anthropic": if model.startswith("anthropic.claude-3"): @@ -1184,6 +1184,7 @@ class AWSEventStreamDecoder: self.parser = EventStreamJSONParser() self.content_blocks: List[ContentBlockDeltaEvent] = [] self.tool_calls_index: Optional[int] = None + self.response_id: Optional[str] = None def check_empty_tool_call_args(self) -> bool: """ @@ -1247,6 +1248,17 @@ class AWSEventStreamDecoder: def converse_chunk_parser(self, chunk_data: dict) -> ModelResponseStream: try: + # Capture the conversationId from the first messageStart event + # and use it as the consistent ID for all subsequent chunks. + if self.response_id is None: + if "messageStart" in chunk_data: + conversation_id = chunk_data["messageStart"].get("conversationId") + if conversation_id: + self.response_id = f"chatcmpl-{conversation_id}" + else: + # Fallback to generating a UUID if the first chunk is not messageStart + self.response_id = f"chatcmpl-{uuid.uuid4()}" + verbose_logger.debug("\n\nRaw Chunk: {}\n\n".format(chunk_data)) text = "" tool_use: Optional[ChatCompletionToolCallChunk] = None @@ -1378,6 +1390,7 @@ class AWSEventStreamDecoder: ), ) ], + id=self.response_id, usage=usage, provider_specific_fields=model_response_provider_specific_fields, ) diff --git a/tests/test_litellm/llms/bedrock/chat/test_invoke_handler.py b/tests/test_litellm/llms/bedrock/chat/test_invoke_handler.py index 429b1a43896..a415d550215 100644 --- a/tests/test_litellm/llms/bedrock/chat/test_invoke_handler.py +++ b/tests/test_litellm/llms/bedrock/chat/test_invoke_handler.py @@ -1,14 +1,10 @@ -import json import os import sys -import pytest -from fastapi.testclient import TestClient sys.path.insert( 0, os.path.abspath("../../../../..") ) # Adds the parent directory to the system path -from unittest.mock import MagicMock, patch from litellm.llms.bedrock.chat.invoke_handler import AWSEventStreamDecoder @@ -167,3 +163,40 @@ def test_transform_tool_calls_index_with_optional_arg_func(): tool_call_hunk_dict = tool_call_hunk.model_dump() for tool_call in tool_call_hunk_dict["choices"][0]["delta"]["tool_calls"]: assert tool_call["index"] == 0 + + +def test_bedrock_converse_streaming_consistent_id(): + """ + Tests that all chunks in a Bedrock Converse stream response share the same ID, + capturing the ID from the initial 'messageStart' event. + """ + # Simulate a realistic Bedrock Converse stream + native_conversation_id = "a1b2c3d4-e5f6-7890-1234-56789abcdef0" + mock_stream_chunks = [ + { + "messageStart": { + "conversationId": native_conversation_id, + "role": "assistant", + } + }, + {"delta": {"text": "Hello"}, "contentBlockIndex": 0}, + {"delta": {"text": " world!"}, "contentBlockIndex": 0}, + {"stopReason": "stop"}, + ] + + decoder = AWSEventStreamDecoder(model="bedrock/anthropic.claude-3-sonnet-v1:0") + + # Process each chunk and collect the parsed responses + parsed_responses = [] + for chunk in mock_stream_chunks: + parsed_responses.append(decoder.converse_chunk_parser(chunk)) + + # Verify that all parsed responses have the same, non-null ID derived from the native ID + assert len(parsed_responses) > 1, "Should have processed multiple chunks" + + expected_id = f"chatcmpl-{native_conversation_id}" + + for response in parsed_responses: + assert ( + response.id == expected_id + ), "All chunk IDs must match the one captured from the messageStart event" From 08246bf9085034917d6fc76ab414f082b6b13c70 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Wed, 19 Nov 2025 08:35:23 -0800 Subject: [PATCH 23/89] fix: fix broken doc link --- docs/my-website/docs/proxy/litellm_managed_files.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/my-website/docs/proxy/litellm_managed_files.md b/docs/my-website/docs/proxy/litellm_managed_files.md index c63b1218892..7aba173f35b 100644 --- a/docs/my-website/docs/proxy/litellm_managed_files.md +++ b/docs/my-website/docs/proxy/litellm_managed_files.md @@ -424,4 +424,4 @@ No, as of `v1.71.2` users can only view/edit/delete files they have created. ## See Also - [Managed Files w/ Finetuning APIs](../../docs/proxy/managed_finetuning) -- [Managed Files w/ Batch APIs](../../docs/proxy/managed_batch) \ No newline at end of file +- [Managed Files w/ Batch APIs](../../docs/proxy/managed_batches) \ No newline at end of file From 5f94b372f87d1dd8e7f981fc98c918c6aef0783a Mon Sep 17 00:00:00 2001 From: tushar8408 <32977767+tushar8408@users.noreply.github.com> Date: Wed, 19 Nov 2025 09:53:21 -0800 Subject: [PATCH 24/89] Migration job labels (#16831) * Add dynamic pod labels and annotations to migrations job * Bump chart version to 0.4.8 --- deploy/charts/litellm-helm/Chart.yaml | 2 +- deploy/charts/litellm-helm/templates/migrations-job.yaml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/deploy/charts/litellm-helm/Chart.yaml b/deploy/charts/litellm-helm/Chart.yaml index aa81e4efecc..eedadebaa8e 100644 --- a/deploy/charts/litellm-helm/Chart.yaml +++ b/deploy/charts/litellm-helm/Chart.yaml @@ -18,7 +18,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.4.7 +version: 0.4.8 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/deploy/charts/litellm-helm/templates/migrations-job.yaml b/deploy/charts/litellm-helm/templates/migrations-job.yaml index 243a4ba7d48..f8893a47afe 100644 --- a/deploy/charts/litellm-helm/templates/migrations-job.yaml +++ b/deploy/charts/litellm-helm/templates/migrations-job.yaml @@ -22,6 +22,9 @@ spec: metadata: labels: {{- include "litellm.labels" . | nindent 8 }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} annotations: {{- with .Values.migrationJob.annotations }} {{- toYaml . | nindent 8 }} From 1f8fe007a1a08509620f382aec6af7710d48fb78 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Wed, 19 Nov 2025 10:20:58 -0800 Subject: [PATCH 25/89] [Feat] Prompt Management - Allow specifying just prompt_id in a request to a model (#16834) * test_dotprompt_auto_detection_with_model_only * fix _auto_detect_prompt_management_logger * test_dotprompt_auto_detection_with_model_only --- litellm/litellm_core_utils/litellm_logging.py | 74 +++++++++++++++++- .../dotprompt/test_prompt_manager.py | 76 +++++++++++++++++++ 2 files changed, 146 insertions(+), 4 deletions(-) diff --git a/litellm/litellm_core_utils/litellm_logging.py b/litellm/litellm_core_utils/litellm_logging.py index 6bad7ee29e2..e5c52ce48ae 100644 --- a/litellm/litellm_core_utils/litellm_logging.py +++ b/litellm/litellm_core_utils/litellm_logging.py @@ -585,7 +585,10 @@ class Logging(LiteLLMLoggingBaseClass): custom_logger = ( prompt_management_logger or self.get_custom_logger_for_prompt_management( - model=model, non_default_params=non_default_params + model=model, + non_default_params=non_default_params, + prompt_id=prompt_id, + dynamic_callback_params=self.standard_callback_dynamic_params, ) ) @@ -622,7 +625,11 @@ class Logging(LiteLLMLoggingBaseClass): custom_logger = ( prompt_management_logger or self.get_custom_logger_for_prompt_management( - model=model, tools=tools, non_default_params=non_default_params + model=model, + tools=tools, + non_default_params=non_default_params, + prompt_id=prompt_id, + dynamic_callback_params=self.standard_callback_dynamic_params, ) ) @@ -646,19 +653,69 @@ class Logging(LiteLLMLoggingBaseClass): self.messages = messages return model, messages, non_default_params + def _auto_detect_prompt_management_logger( + self, + prompt_id: str, + dynamic_callback_params: StandardCallbackDynamicParams, + ) -> Optional[CustomLogger]: + """ + Auto-detect which prompt management system owns the given prompt_id. + + This allows a user to just pass prompt_id in the completion call and it will be auto-detected which system owns this prompt. + + Args: + prompt_id: The prompt ID to check + dynamic_callback_params: Dynamic callback parameters for should_run_prompt_management checks + + Returns: + A CustomLogger instance if a matching prompt management system is found, None otherwise + """ + prompt_management_loggers = ( + litellm.logging_callback_manager.get_custom_loggers_for_type( + callback_type=CustomPromptManagement + ) + ) + + for logger in prompt_management_loggers: + if isinstance(logger, CustomPromptManagement): + try: + if logger.should_run_prompt_management( + prompt_id=prompt_id, + dynamic_callback_params=dynamic_callback_params, + ): + self.model_call_details["prompt_integration"] = ( + logger.__class__.__name__ + ) + return logger + except Exception: + # If check fails, continue to next logger + continue + + return None + def get_custom_logger_for_prompt_management( - self, model: str, non_default_params: Dict, tools: Optional[List[Dict]] = None + self, + model: str, + non_default_params: Dict, + tools: Optional[List[Dict]] = None, + prompt_id: Optional[str] = None, + dynamic_callback_params: Optional[StandardCallbackDynamicParams] = None, ) -> Optional[CustomLogger]: """ Get a custom logger for prompt management based on model name or available callbacks. Args: model: The model name to check for prompt management integration + non_default_params: Non-default parameters passed to the completion call + tools: Optional tools passed to the completion call + prompt_id: Optional prompt ID to auto-detect which system owns this prompt + dynamic_callback_params: Dynamic callback parameters for should_run_prompt_management checks Returns: A CustomLogger instance if one is found, None otherwise """ # First check if model starts with a known custom logger compatible callback + # This takes precedence for backward compatibility for callback_name in litellm._known_custom_logger_compatible_callbacks: if model.startswith(callback_name): custom_logger = _init_custom_logger_compatible_class( @@ -670,7 +727,16 @@ class Logging(LiteLLMLoggingBaseClass): self.model_call_details["prompt_integration"] = model.split("/")[0] return custom_logger - # Then check for any registered CustomPromptManagement loggers + # If prompt_id is provided, try to auto-detect which system has this prompt + if prompt_id and dynamic_callback_params is not None: + auto_detected_logger = self._auto_detect_prompt_management_logger( + prompt_id=prompt_id, + dynamic_callback_params=dynamic_callback_params, + ) + if auto_detected_logger is not None: + return auto_detected_logger + + # Then check for any registered CustomPromptManagement loggers (fallback) prompt_management_loggers = ( litellm.logging_callback_manager.get_custom_loggers_for_type( callback_type=CustomPromptManagement diff --git a/tests/test_litellm/integrations/dotprompt/test_prompt_manager.py b/tests/test_litellm/integrations/dotprompt/test_prompt_manager.py index c19503641e1..77e3e0d4a45 100644 --- a/tests/test_litellm/integrations/dotprompt/test_prompt_manager.py +++ b/tests/test_litellm/integrations/dotprompt/test_prompt_manager.py @@ -521,3 +521,79 @@ def test_prompt_main(): """ # TODO: Implement once PromptManager is integrated with litellm completion pass + + +@pytest.mark.asyncio +async def test_dotprompt_auto_detection_with_model_only(): + """ + Test that dotprompt prompts can be auto-detected when passing model="gpt-4" and prompt_id, + without needing to specify model="dotprompt/gpt-4". + """ + from litellm.integrations.dotprompt import DotpromptManager + + prompt_dir = Path(__file__).parent + dotprompt_manager = DotpromptManager(prompt_directory=str(prompt_dir)) + + # Register the dotprompt manager in callbacks + original_callbacks = litellm.callbacks.copy() + litellm.callbacks = [dotprompt_manager] + + try: + # Mock the HTTP handler to avoid actual API calls + with patch("litellm.llms.custom_httpx.llm_http_handler.AsyncHTTPHandler.post") as mock_post: + mock_response_data = litellm.ModelResponse( + choices=[ + litellm.Choices( + message=litellm.Message(content="Hello!"), + index=0, + finish_reason="stop", + ) + ] + ).model_dump() + + # Create a proper mock response + mock_response = MagicMock() + mock_response.status_code = 200 + mock_response.text = json.dumps(mock_response_data) + mock_response.headers = {"Content-Type": "application/json"} + mock_response.json.return_value = mock_response_data + + mock_post.return_value = mock_response + + # Call with model="gpt-4" (no "dotprompt/" prefix) and prompt_id + await litellm.acompletion( + model="gpt-4", + prompt_id="chat_prompt", + prompt_variables={"user_message": "Hello world"}, + messages=[{"role": "user", "content": "This will be ignored"}], + ) + + mock_post.assert_called_once() + + # Get request body from the call (it's passed as 'data' parameter as JSON string) + data_str = mock_post.call_args.kwargs.get("data", "{}") + request_body = json.loads(data_str) + + print(f"Request body: {json.dumps(request_body, indent=2)}") + + # Verify the prompt was auto-detected and used + # The chat_prompt.prompt has metadata: model: gpt-4, temperature: 0.7, max_tokens: 150 + assert request_body["model"] == "gpt-4" + + # Note: OpenAI API might strip out temperature/max_tokens if they're not in the request + # The key test is that the messages were transformed + + # Verify the messages were transformed using the prompt template + # chat_prompt template: "User: {{user_message}}" + messages = request_body["messages"] + assert len(messages) >= 1 + + # The first message should be from the prompt template with the variable substituted + # Template is: "User: {{user_message}}" with user_message="Hello world" + first_message_content = messages[0]["content"] + print(f"First message content: {first_message_content}") + assert "Hello world" in first_message_content + + finally: + # Restore original callbacks + litellm.callbacks = original_callbacks From 3ebe4890826f063ecfbb29a8897016d37edea6f7 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Wed, 19 Nov 2025 13:16:03 -0800 Subject: [PATCH 26/89] [Feat] Prompt Management - Add support for versioning prompts (#16836) * test_dotprompt_auto_detection_with_model_only * fix _auto_detect_prompt_management_logger * test_dotprompt_with_prompt_version * add v1, v2 tests * add _compile_prompt_helper * fix _compile_prompt_helper * test_dotprompt_with_prompt_version * test_dotprompt_with_prompt_version, test_get_prompt_with_version --- .../dotprompt/dotprompt_manager.py | 21 ++- .../integrations/dotprompt/prompt_manager.py | 37 ++++- .../dotprompt/chat_prompt.v1.prompt | 10 ++ .../dotprompt/chat_prompt.v2.prompt | 10 ++ .../dotprompt/test_prompt_manager.py | 143 ++++++++++++++++++ 5 files changed, 209 insertions(+), 12 deletions(-) create mode 100644 tests/test_litellm/integrations/dotprompt/chat_prompt.v1.prompt create mode 100644 tests/test_litellm/integrations/dotprompt/chat_prompt.v2.prompt diff --git a/litellm/integrations/dotprompt/dotprompt_manager.py b/litellm/integrations/dotprompt/dotprompt_manager.py index 0f0d7b938f3..7aaa6cc9628 100644 --- a/litellm/integrations/dotprompt/dotprompt_manager.py +++ b/litellm/integrations/dotprompt/dotprompt_manager.py @@ -108,7 +108,7 @@ class DotpromptManager(CustomPromptManagement): Compile a .prompt file into a PromptManagementClient structure. This method: - 1. Loads the prompt template from the .prompt file + 1. Loads the prompt template from the .prompt file (with optional version) 2. Renders it with the provided variables 3. Converts the rendered text into chat messages 4. Extracts model and optional parameters from metadata @@ -116,13 +116,22 @@ class DotpromptManager(CustomPromptManagement): try: - # Get the prompt template - template = self.prompt_manager.get_prompt(prompt_id) + # Get the prompt template (versioned or base) + template = self.prompt_manager.get_prompt( + prompt_id=prompt_id, version=prompt_version + ) if template is None: - raise ValueError(f"Prompt '{prompt_id}' not found in prompt directory") + version_str = f" (version {prompt_version})" if prompt_version else "" + raise ValueError( + f"Prompt '{prompt_id}'{version_str} not found in prompt directory" + ) - # Render the template with variables - rendered_content = self.prompt_manager.render(prompt_id, prompt_variables) + # Render the template with variables (pass version for proper lookup) + rendered_content = self.prompt_manager.render( + prompt_id=prompt_id, + prompt_variables=prompt_variables, + version=prompt_version, + ) # Convert rendered content to chat messages messages = self._convert_to_messages(rendered_content) diff --git a/litellm/integrations/dotprompt/prompt_manager.py b/litellm/integrations/dotprompt/prompt_manager.py index 9623ddab5fb..fc5a325ffe1 100644 --- a/litellm/integrations/dotprompt/prompt_manager.py +++ b/litellm/integrations/dotprompt/prompt_manager.py @@ -183,7 +183,10 @@ class PromptManager: return frontmatter, template_content def render( - self, prompt_id: str, prompt_variables: Optional[Dict[str, Any]] = None + self, + prompt_id: str, + prompt_variables: Optional[Dict[str, Any]] = None, + version: Optional[int] = None, ) -> str: """ Render a prompt template with the given variables. @@ -191,6 +194,7 @@ class PromptManager: Args: prompt_id: The ID of the prompt template to render prompt_variables: Variables to substitute in the template + version: Optional version number. If provided, looks for {prompt_id}.v{version} Returns: The rendered prompt string @@ -199,13 +203,16 @@ class PromptManager: KeyError: If prompt_id is not found ValueError: If template rendering fails """ - if prompt_id not in self.prompts: + # Get the template (versioned or base) + template = self.get_prompt(prompt_id=prompt_id, version=version) + + if template is None: available_prompts = list(self.prompts.keys()) + version_str = f" (version {version})" if version else "" raise KeyError( - f"Prompt '{prompt_id}' not found. Available prompts: {available_prompts}" + f"Prompt '{prompt_id}'{version_str} not found. Available prompts: {available_prompts}" ) - template = self.prompts[prompt_id] variables = prompt_variables or {} # Validate input variables against schema if defined @@ -254,8 +261,26 @@ class PromptManager: return type_mapping.get(schema_type.lower(), str) # type: ignore - def get_prompt(self, prompt_id: str) -> Optional[PromptTemplate]: - """Get a prompt template by ID.""" + def get_prompt( + self, prompt_id: str, version: Optional[int] = None + ) -> Optional[PromptTemplate]: + """ + Get a prompt template by ID and optional version. + + Args: + prompt_id: The base prompt ID + version: Optional version number. If provided, looks for {prompt_id}.v{version} + + Returns: + The prompt template if found, None otherwise + """ + if version is not None: + # Try versioned prompt first: prompt_id.v{version} + versioned_id = f"{prompt_id}.v{version}" + if versioned_id in self.prompts: + return self.prompts[versioned_id] + + # Fall back to base prompt_id return self.prompts.get(prompt_id) def list_prompts(self) -> List[str]: diff --git a/tests/test_litellm/integrations/dotprompt/chat_prompt.v1.prompt b/tests/test_litellm/integrations/dotprompt/chat_prompt.v1.prompt new file mode 100644 index 00000000000..29fc6fcb124 --- /dev/null +++ b/tests/test_litellm/integrations/dotprompt/chat_prompt.v1.prompt @@ -0,0 +1,10 @@ +--- +model: gpt-3.5-turbo +temperature: 0.5 +max_tokens: 100 +input: + schema: + user_message: string +--- + +Version 1: {{user_message}} diff --git a/tests/test_litellm/integrations/dotprompt/chat_prompt.v2.prompt b/tests/test_litellm/integrations/dotprompt/chat_prompt.v2.prompt new file mode 100644 index 00000000000..dfd3d2955e6 --- /dev/null +++ b/tests/test_litellm/integrations/dotprompt/chat_prompt.v2.prompt @@ -0,0 +1,10 @@ +--- +model: gpt-4 +temperature: 0.9 +max_tokens: 200 +input: + schema: + user_message: string +--- + +Version 2: {{user_message}} diff --git a/tests/test_litellm/integrations/dotprompt/test_prompt_manager.py b/tests/test_litellm/integrations/dotprompt/test_prompt_manager.py index 77e3e0d4a45..9d7e2b3d382 100644 --- a/tests/test_litellm/integrations/dotprompt/test_prompt_manager.py +++ b/tests/test_litellm/integrations/dotprompt/test_prompt_manager.py @@ -195,6 +195,29 @@ def test_get_prompt_metadata(): assert "output" in metadata +def test_get_prompt_with_version(): + """Test that get_prompt correctly retrieves versioned prompts.""" + prompt_dir = Path(__file__).parent + manager = PromptManager(prompt_directory=str(prompt_dir)) + + # Get base prompt (no version) + base_prompt = manager.get_prompt(prompt_id="chat_prompt") + assert base_prompt is not None + assert "User: {{user_message}}" in base_prompt.content + + # Get version 1 + v1_prompt = manager.get_prompt(prompt_id="chat_prompt", version=1) + assert v1_prompt is not None + assert "Version 1:" in v1_prompt.content + assert v1_prompt.model == "gpt-3.5-turbo" + + # Get version 2 + v2_prompt = manager.get_prompt(prompt_id="chat_prompt", version=2) + assert v2_prompt is not None + assert "Version 2:" in v2_prompt.content + assert v2_prompt.model == "gpt-4" + + def test_add_prompt_programmatically(): """Test adding prompts programmatically.""" prompt_dir = Path( @@ -597,3 +620,123 @@ async def test_dotprompt_auto_detection_with_model_only(): finally: # Restore original callbacks litellm.callbacks = original_callbacks + + +@pytest.mark.asyncio +async def test_dotprompt_with_prompt_version(): + """ + Test that dotprompt can load and use specific prompt versions. + Versions are stored as separate files with .v{version}.prompt naming convention. + """ + from litellm.integrations.dotprompt import DotpromptManager + from litellm.llms.custom_httpx.http_handler import AsyncHTTPHandler + + prompt_dir = Path(__file__).parent + dotprompt_manager = DotpromptManager(prompt_directory=str(prompt_dir)) + + # Register the dotprompt manager in callbacks + original_callbacks = litellm.callbacks.copy() + litellm.callbacks = [dotprompt_manager] + + try: + # Mock the HTTP handler to avoid actual API calls + with patch("litellm.llms.custom_httpx.llm_http_handler.AsyncHTTPHandler.post") as mock_post: + mock_response_data = litellm.ModelResponse( + choices=[ + litellm.Choices( + message=litellm.Message(content="Hello!"), + index=0, + finish_reason="stop", + ) + ] + ).model_dump() + + # Create a proper mock response + mock_response = MagicMock() + mock_response.status_code = 200 + mock_response.text = json.dumps(mock_response_data) + mock_response.headers = {"Content-Type": "application/json"} + mock_response.json.return_value = mock_response_data + + mock_post.return_value = mock_response + + # Test version 1 + await litellm.acompletion( + model="gpt-3.5-turbo", + prompt_id="chat_prompt", + prompt_version=1, + prompt_variables={"user_message": "Test v1"}, + messages=[], + ) + + assert mock_post.call_count >= 1 + data_str = mock_post.call_args.kwargs.get("data", "{}") + request_body = json.loads(data_str) + + print(f"Version 1 request body: {json.dumps(request_body, indent=2)}") + + # Verify version 1 prompt was used + # chat_prompt.v1.prompt has: model: gpt-3.5-turbo, temperature: 0.5, max_tokens: 100 + assert request_body["model"] == "gpt-3.5-turbo" + + # Verify the message contains "Version 1:" prefix from v1 template + messages = request_body["messages"] + assert len(messages) >= 1 + first_message_content = messages[0]["content"] + print(f"Version 1 message: {first_message_content}") + assert "Version 1:" in first_message_content + assert "Test v1" in first_message_content + + # Reset mock for version 2 test + mock_post.reset_mock() + + # Test version 2 + with patch("litellm.llms.custom_httpx.llm_http_handler.AsyncHTTPHandler.post") as mock_post: + mock_response_data = litellm.ModelResponse( + choices=[ + litellm.Choices( + message=litellm.Message(content="Hello!"), + index=0, + finish_reason="stop", + ) + ] + ).model_dump() + + # Create a proper mock response + mock_response = MagicMock() + mock_response.status_code = 200 + mock_response.text = json.dumps(mock_response_data) + mock_response.headers = {"Content-Type": "application/json"} + mock_response.json.return_value = mock_response_data + + mock_post.return_value = mock_response + + await litellm.acompletion( + model="gpt-4", + prompt_id="chat_prompt", + prompt_version=2, + prompt_variables={"user_message": "Test v2"}, + messages=[], + ) + + mock_post.assert_called_once() + data_str = mock_post.call_args.kwargs.get("data", "{}") + request_body = json.loads(data_str) + + print(f"Version 2 request body: {json.dumps(request_body, indent=2)}") + + # Verify version 2 prompt was used + # chat_prompt.v2.prompt has: model: gpt-4, temperature: 0.9, max_tokens: 200 + assert request_body["model"] == "gpt-4" + + # Verify the message contains "Version 2:" prefix from v2 template + messages = request_body["messages"] + assert len(messages) >= 1 + first_message_content = messages[0]["content"] + print(f"Version 2 message: {first_message_content}") + assert "Version 2:" in first_message_content + assert "Test v2" in first_message_content + + finally: + # Restore original callbacks + litellm.callbacks = original_callbacks From 98dd866b260fbabdb08fb83daf88f011edc75394 Mon Sep 17 00:00:00 2001 From: Naki Date: Thu, 20 Nov 2025 06:17:19 +0900 Subject: [PATCH 27/89] feat(github-copilot): Add Responses API support for gpt-5.1-codex model (#16845) - Implement GithubCopilotResponsesAPIConfig for /responses endpoint - Add support for models requiring responses API (e.g., gpt-5.1-codex) - Auto-detect vision requests and set X-Initiator header - Follow OpenAI Responses API compatibility pattern - Add comprehensive unit tests (16 tests passing) Fixes #16820 --- litellm/__init__.py | 1 + .../responses/transformation.py | 304 ++++++++++++++++++ litellm/utils.py | 2 + ...github_copilot_responses_transformation.py | 303 +++++++++++++++++ 4 files changed, 610 insertions(+) create mode 100644 litellm/llms/github_copilot/responses/transformation.py create mode 100644 tests/test_litellm/llms/github_copilot/responses/test_github_copilot_responses_transformation.py diff --git a/litellm/__init__.py b/litellm/__init__.py index c86768490f3..2624565c2c3 100644 --- a/litellm/__init__.py +++ b/litellm/__init__.py @@ -1342,6 +1342,7 @@ from .llms.watsonx.completion.transformation import IBMWatsonXAIConfig from .llms.watsonx.chat.transformation import IBMWatsonXChatConfig from .llms.watsonx.embed.transformation import IBMWatsonXEmbeddingConfig from .llms.github_copilot.chat.transformation import GithubCopilotConfig +from .llms.github_copilot.responses.transformation import GithubCopilotResponsesAPIConfig from .llms.nebius.chat.transformation import NebiusConfig from .llms.wandb.chat.transformation import WandbConfig from .llms.dashscope.chat.transformation import DashScopeChatConfig diff --git a/litellm/llms/github_copilot/responses/transformation.py b/litellm/llms/github_copilot/responses/transformation.py new file mode 100644 index 00000000000..a85c37fd9b8 --- /dev/null +++ b/litellm/llms/github_copilot/responses/transformation.py @@ -0,0 +1,304 @@ +""" +GitHub Copilot Responses API Configuration. + +This module provides the configuration for GitHub Copilot's Responses API, +which is required for models like gpt-5.1-codex that only support the /responses endpoint. + +Implementation based on analysis of the copilot-api project by caozhiyuan: +https://github.com/caozhiyuan/copilot-api +""" +from typing import TYPE_CHECKING, Any, Dict, Optional, Union +from uuid import uuid4 + +from litellm._logging import verbose_logger +from litellm.exceptions import AuthenticationError +from litellm.llms.openai.responses.transformation import OpenAIResponsesAPIConfig +from litellm.types.llms.openai import ( + ResponseInputParam, + ResponsesAPIOptionalRequestParams, +) +from litellm.types.router import GenericLiteLLMParams +from litellm.types.utils import LlmProviders + +from ..authenticator import Authenticator +from ..common_utils import GetAPIKeyError + +if TYPE_CHECKING: + from litellm.litellm_core_utils.litellm_logging import Logging as _LiteLLMLoggingObj + + LiteLLMLoggingObj = _LiteLLMLoggingObj +else: + LiteLLMLoggingObj = Any + +# GitHub Copilot API Constants (from copilot-api) +COPILOT_VERSION = "0.26.7" +EDITOR_PLUGIN_VERSION = f"copilot-chat/{COPILOT_VERSION}" +USER_AGENT = f"GitHubCopilotChat/{COPILOT_VERSION}" +API_VERSION = "2025-04-01" + + +class GithubCopilotResponsesAPIConfig(OpenAIResponsesAPIConfig): + """ + Configuration for GitHub Copilot's Responses API. + + Inherits from OpenAIResponsesAPIConfig since GitHub Copilot's Responses API + is compatible with OpenAI's Responses API specification. + + Key differences from OpenAI: + - Uses OAuth Device Flow authentication (handled by Authenticator) + - Uses api.githubcopilot.com as the API base + - Requires specific headers for VSCode/Copilot integration + - Supports vision requests with special header + - Requires X-Initiator header based on input analysis + + Reference: https://api.githubcopilot.com/ + """ + + GITHUB_COPILOT_API_BASE = "https://api.githubcopilot.com" + + def __init__(self) -> None: + super().__init__() + self.authenticator = Authenticator() + + @property + def custom_llm_provider(self) -> LlmProviders: + """Return the GitHub Copilot provider identifier.""" + return LlmProviders.GITHUB_COPILOT + + def get_supported_openai_params(self, model: str) -> list: + """ + Get supported parameters for GitHub Copilot Responses API. + + GitHub Copilot supports all standard OpenAI Responses API parameters. + """ + return super().get_supported_openai_params(model) + + def map_openai_params( + self, + response_api_optional_params: ResponsesAPIOptionalRequestParams, + model: str, + drop_params: bool, + ) -> Dict: + """ + Map parameters for GitHub Copilot Responses API. + + GitHub Copilot uses the same parameter format as OpenAI, + so no transformation is needed. + """ + return dict(response_api_optional_params) + + def validate_environment( + self, + headers: dict, + model: str, + litellm_params: Optional[GenericLiteLLMParams], + ) -> dict: + """ + Validate environment and set up headers for GitHub Copilot API. + + Uses the Authenticator to obtain GitHub Copilot API key via OAuth Device Flow, + then configures all required headers for the Responses API. + + Headers include: + - Authorization with API key + - Standard GitHub Copilot headers (editor-version, user-agent, etc.) + - X-Initiator based on input analysis + - copilot-vision-request if vision content detected + - User-provided extra_headers (merged with priority) + """ + try: + # Get GitHub Copilot API key via OAuth + api_key = self.authenticator.get_api_key() + + if not api_key: + raise AuthenticationError( + model=model, + llm_provider="github_copilot", + message="GitHub Copilot API key is required. Please authenticate via OAuth Device Flow.", + ) + + # Get default headers (from copilot-api configuration) + default_headers = self._get_default_headers(api_key) + + # Merge with existing headers (user's extra_headers take priority) + merged_headers = {**default_headers, **headers} + + # Analyze input to determine additional headers + input_param = self._get_input_from_params(litellm_params) + + # Add X-Initiator header based on input analysis + if input_param is not None: + initiator = self._get_initiator(input_param) + merged_headers["X-Initiator"] = initiator + verbose_logger.debug( + f"GitHub Copilot Responses API: Set X-Initiator={initiator}" + ) + + # Add vision header if input contains images + if self._has_vision_input(input_param): + merged_headers["copilot-vision-request"] = "true" + verbose_logger.debug( + "GitHub Copilot Responses API: Enabled vision request" + ) + + verbose_logger.debug( + f"GitHub Copilot Responses API: Successfully configured headers for model {model}" + ) + + return merged_headers + + except GetAPIKeyError as e: + raise AuthenticationError( + model=model, + llm_provider="github_copilot", + message=str(e), + ) + + def get_complete_url( + self, + api_base: Optional[str], + litellm_params: dict, + ) -> str: + """ + Get the complete URL for GitHub Copilot Responses API endpoint. + + Returns: https://api.githubcopilot.com/responses + + Note: Currently only supports individual accounts. + Business/enterprise accounts (api.business.githubcopilot.com) can be + added in the future by detecting account type. + """ + # Use provided api_base or fall back to authenticator's base or default + api_base = ( + api_base + or self.authenticator.get_api_base() + or self.GITHUB_COPILOT_API_BASE + ) + + # Remove trailing slashes + api_base = api_base.rstrip("/") + + # Return the responses endpoint + return f"{api_base}/responses" + + # ==================== Helper Methods ==================== + + def _get_default_headers(self, api_key: str) -> Dict[str, str]: + """ + Get default headers for GitHub Copilot Responses API. + + Based on copilot-api's header configuration. + """ + return { + "Authorization": f"Bearer {api_key}", + "content-type": "application/json", + "copilot-integration-id": "vscode-chat", + "editor-version": "vscode/1.95.0", # Fixed version for stability + "editor-plugin-version": EDITOR_PLUGIN_VERSION, + "user-agent": USER_AGENT, + "openai-intent": "conversation-panel", + "x-github-api-version": API_VERSION, + "x-request-id": str(uuid4()), + "x-vscode-user-agent-library-version": "electron-fetch", + } + + def _get_input_from_params( + self, litellm_params: Optional[GenericLiteLLMParams] + ) -> Optional[Union[str, ResponseInputParam]]: + """ + Extract input parameter from litellm_params. + + The input parameter contains the conversation history and is needed + for vision detection and initiator determination. + """ + if litellm_params is None: + return None + + # Try to get input from litellm_params + # This might be in different locations depending on how LiteLLM structures it + if hasattr(litellm_params, "input"): + return litellm_params.input + + # If not found, return None and let the API handle it + return None + + def _get_initiator(self, input_param: Union[str, ResponseInputParam]) -> str: + """ + Determine X-Initiator header value based on input analysis. + + Based on copilot-api's hasAgentInitiator logic: + - Returns "agent" if input contains assistant role or items without role + - Returns "user" otherwise + + Args: + input_param: The input parameter (string or list of input items) + + Returns: + "agent" or "user" + """ + # If input is a string, it's user-initiated + if isinstance(input_param, str): + return "user" + + # If input is a list, analyze items + if isinstance(input_param, list): + for item in input_param: + if not isinstance(item, dict): + continue + + # Check if item has no role (agent-initiated) + if "role" not in item or not item.get("role"): + return "agent" + + # Check if role is assistant (agent-initiated) + role = item.get("role") + if isinstance(role, str) and role.lower() == "assistant": + return "agent" + + # Default to user-initiated + return "user" + + def _has_vision_input(self, input_param: Union[str, ResponseInputParam]) -> bool: + """ + Check if input contains vision content (images). + + Based on copilot-api's hasVisionInput and containsVisionContent logic. + Recursively searches for input_image type in the input structure. + + Args: + input_param: The input parameter to analyze + + Returns: + True if input contains image content, False otherwise + """ + return self._contains_vision_content(input_param) + + def _contains_vision_content(self, value: Any) -> bool: + """ + Recursively check if a value contains vision content. + + Looks for items with type="input_image" in the structure. + """ + if value is None: + return False + + # Check arrays + if isinstance(value, list): + return any(self._contains_vision_content(item) for item in value) + + # Only check dict/object types + if not isinstance(value, dict): + return False + + # Check if this item is an input_image + item_type = value.get("type") + if isinstance(item_type, str) and item_type.lower() == "input_image": + return True + + # Check content field recursively + if "content" in value and isinstance(value["content"], list): + return any( + self._contains_vision_content(item) for item in value["content"] + ) + + return False diff --git a/litellm/utils.py b/litellm/utils.py index 47fd06a9f27..2e80a0bb5bf 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -7389,6 +7389,8 @@ class ProviderConfigManager: return litellm.AzureOpenAIResponsesAPIConfig() elif litellm.LlmProviders.XAI == provider: return litellm.XAIResponsesAPIConfig() + elif litellm.LlmProviders.GITHUB_COPILOT == provider: + return litellm.GithubCopilotResponsesAPIConfig() elif litellm.LlmProviders.LITELLM_PROXY == provider: return litellm.LiteLLMProxyResponsesAPIConfig() return None diff --git a/tests/test_litellm/llms/github_copilot/responses/test_github_copilot_responses_transformation.py b/tests/test_litellm/llms/github_copilot/responses/test_github_copilot_responses_transformation.py new file mode 100644 index 00000000000..d6032c61c60 --- /dev/null +++ b/tests/test_litellm/llms/github_copilot/responses/test_github_copilot_responses_transformation.py @@ -0,0 +1,303 @@ +""" +Tests for GitHub Copilot Responses API transformation + +Tests the GithubCopilotResponsesAPIConfig class that handles GitHub Copilot-specific +transformations for the Responses API. + +Source: litellm/llms/github_copilot/responses/transformation.py +""" +import sys +import os +from unittest.mock import patch, MagicMock + +sys.path.insert(0, os.path.abspath("../../../../..")) + +import pytest +from litellm.types.utils import LlmProviders +from litellm.utils import ProviderConfigManager +from litellm.llms.github_copilot.responses.transformation import ( + GithubCopilotResponsesAPIConfig, +) +from litellm.types.llms.openai import ResponsesAPIOptionalRequestParams + + +class TestGithubCopilotResponsesAPITransformation: + """Test GitHub Copilot Responses API configuration and transformations""" + + def test_github_copilot_provider_config_registration(self): + """Test that GitHub Copilot provider returns GithubCopilotResponsesAPIConfig""" + config = ProviderConfigManager.get_provider_responses_api_config( + model="github_copilot/gpt-5.1-codex", + provider=LlmProviders.GITHUB_COPILOT, + ) + + assert ( + config is not None + ), "Config should not be None for GitHub Copilot provider" + assert isinstance( + config, GithubCopilotResponsesAPIConfig + ), f"Expected GithubCopilotResponsesAPIConfig, got {type(config)}" + assert ( + config.custom_llm_provider == LlmProviders.GITHUB_COPILOT + ), "custom_llm_provider should be GITHUB_COPILOT" + + @patch("litellm.llms.github_copilot.responses.transformation.Authenticator") + def test_github_copilot_responses_endpoint_url(self, mock_authenticator_class): + """Test that get_complete_url returns correct GitHub Copilot endpoint""" + # Mock authenticator to return default base + mock_auth_instance = MagicMock() + mock_auth_instance.get_api_base.return_value = ( + "https://api.individual.githubcopilot.com" + ) + mock_authenticator_class.return_value = mock_auth_instance + + config = GithubCopilotResponsesAPIConfig() + + # Test with default GitHub Copilot API base (from authenticator) + url = config.get_complete_url(api_base=None, litellm_params={}) + assert url == "https://api.individual.githubcopilot.com/responses", ( + f"Expected GitHub Copilot responses endpoint, got {url}" + ) + + # Test with custom api_base (overrides authenticator) + custom_url = config.get_complete_url( + api_base="https://custom.githubcopilot.com", litellm_params={} + ) + assert custom_url == "https://custom.githubcopilot.com/responses", ( + f"Expected custom endpoint, got {custom_url}" + ) + + # Test with trailing slash + url_with_slash = config.get_complete_url( + api_base="https://api.githubcopilot.com/", litellm_params={} + ) + assert url_with_slash == "https://api.githubcopilot.com/responses", ( + "Should handle trailing slash" + ) + + @patch("litellm.llms.github_copilot.responses.transformation.Authenticator") + def test_validate_environment_default_headers(self, mock_authenticator_class): + """Test that validate_environment generates correct default headers""" + # Mock the authenticator + mock_auth_instance = MagicMock() + mock_auth_instance.get_api_key.return_value = "test-api-key-123" + mock_authenticator_class.return_value = mock_auth_instance + + config = GithubCopilotResponsesAPIConfig() + + headers = config.validate_environment( + headers={}, model="gpt-5.1-codex", litellm_params={} + ) + + # Check required headers + assert headers["Authorization"] == "Bearer test-api-key-123" + assert headers["content-type"] == "application/json" + assert headers["copilot-integration-id"] == "vscode-chat" + assert headers["editor-version"] == "vscode/1.95.0" + assert headers["editor-plugin-version"] == "copilot-chat/0.26.7" + assert headers["user-agent"] == "GitHubCopilotChat/0.26.7" + assert headers["openai-intent"] == "conversation-panel" + assert headers["x-github-api-version"] == "2025-04-01" + assert "x-request-id" in headers + + @patch("litellm.llms.github_copilot.responses.transformation.Authenticator") + def test_validate_environment_user_headers_override(self, mock_authenticator_class): + """Test that user-provided headers override default headers""" + mock_auth_instance = MagicMock() + mock_auth_instance.get_api_key.return_value = "test-api-key-123" + mock_authenticator_class.return_value = mock_auth_instance + + config = GithubCopilotResponsesAPIConfig() + + custom_headers = { + "editor-version": "custom/2.0.0", + "custom-header": "custom-value", + } + + headers = config.validate_environment( + headers=custom_headers, model="gpt-5.1-codex", litellm_params={} + ) + + # User header should override default + assert headers["editor-version"] == "custom/2.0.0" + # Custom header should be preserved + assert headers["custom-header"] == "custom-value" + # Default headers should still be present + assert headers["Authorization"] == "Bearer test-api-key-123" + + def test_get_initiator_with_assistant_role(self): + """Test _get_initiator returns 'agent' for assistant role""" + config = GithubCopilotResponsesAPIConfig() + + input_with_assistant = [ + {"role": "user", "content": "Hello"}, + {"role": "assistant", "content": "Hi there"}, + ] + + initiator = config._get_initiator(input_with_assistant) + assert initiator == "agent", "Should return 'agent' for assistant role" + + def test_get_initiator_with_no_role(self): + """Test _get_initiator returns 'agent' for items without role""" + config = GithubCopilotResponsesAPIConfig() + + input_without_role = [ + {"role": "user", "content": "Hello"}, + {"type": "reasoning", "content": "thinking..."}, # No role field + ] + + initiator = config._get_initiator(input_without_role) + assert initiator == "agent", "Should return 'agent' for items without role" + + def test_get_initiator_with_user_only(self): + """Test _get_initiator returns 'user' for user-only messages""" + config = GithubCopilotResponsesAPIConfig() + + input_user_only = [{"role": "user", "content": "Hello"}] + + initiator = config._get_initiator(input_user_only) + assert initiator == "user", "Should return 'user' for user-only messages" + + def test_get_initiator_with_string_input(self): + """Test _get_initiator returns 'user' for string input""" + config = GithubCopilotResponsesAPIConfig() + + initiator = config._get_initiator("Hello, how are you?") + assert initiator == "user", "Should return 'user' for string input" + + def test_has_vision_input_with_input_image(self): + """Test _has_vision_input detects input_image type""" + config = GithubCopilotResponsesAPIConfig() + + input_with_vision = [ + {"role": "user", "content": [{"type": "input_image", "data": "base64..."}]} + ] + + has_vision = config._has_vision_input(input_with_vision) + assert has_vision is True, "Should detect input_image type" + + def test_has_vision_input_nested(self): + """Test _has_vision_input detects nested input_image""" + config = GithubCopilotResponsesAPIConfig() + + input_nested_vision = [ + { + "role": "user", + "content": [ + {"type": "text", "text": "What's in this image?"}, + { + "type": "multipart", + "content": [{"type": "input_image", "data": "base64..."}], + }, + ], + } + ] + + has_vision = config._has_vision_input(input_nested_vision) + assert has_vision is True, "Should detect nested input_image" + + def test_has_vision_input_without_vision(self): + """Test _has_vision_input returns False for text-only input""" + config = GithubCopilotResponsesAPIConfig() + + input_text_only = [ + {"role": "user", "content": "Hello"}, + {"role": "assistant", "content": "Hi"}, + ] + + has_vision = config._has_vision_input(input_text_only) + assert has_vision is False, "Should return False for text-only input" + + def test_has_vision_input_with_string(self): + """Test _has_vision_input returns False for string input""" + config = GithubCopilotResponsesAPIConfig() + + has_vision = config._has_vision_input("Just a text message") + assert has_vision is False, "Should return False for string input" + + @patch("litellm.llms.github_copilot.responses.transformation.Authenticator") + def test_validate_environment_with_vision_header(self, mock_authenticator_class): + """Test that copilot-vision-request header is added for vision input""" + mock_auth_instance = MagicMock() + mock_auth_instance.get_api_key.return_value = "test-api-key" + mock_authenticator_class.return_value = mock_auth_instance + + config = GithubCopilotResponsesAPIConfig() + + # Create mock litellm_params with input attribute + mock_litellm_params = MagicMock() + mock_litellm_params.input = [ + { + "role": "user", + "content": [{"type": "input_image", "data": "base64..."}], + } + ] + + headers = config.validate_environment( + headers={}, model="gpt-5.1-codex", litellm_params=mock_litellm_params + ) + + assert headers.get("copilot-vision-request") == "true", ( + "Should add copilot-vision-request header for vision input" + ) + + @patch("litellm.llms.github_copilot.responses.transformation.Authenticator") + def test_validate_environment_with_x_initiator(self, mock_authenticator_class): + """Test that X-Initiator header is set based on input""" + mock_auth_instance = MagicMock() + mock_auth_instance.get_api_key.return_value = "test-api-key" + mock_authenticator_class.return_value = mock_auth_instance + + config = GithubCopilotResponsesAPIConfig() + + # Create mock litellm_params with input attribute + mock_litellm_params = MagicMock() + mock_litellm_params.input = [ + {"role": "user", "content": "Hello"}, + {"role": "assistant", "content": "Hi"}, + ] + + headers = config.validate_environment( + headers={}, model="gpt-5.1-codex", litellm_params=mock_litellm_params + ) + + assert headers.get("X-Initiator") == "agent", ( + "Should set X-Initiator to 'agent' for assistant role" + ) + + def test_map_openai_params_no_transformation(self): + """Test that map_openai_params passes through parameters unchanged""" + config = GithubCopilotResponsesAPIConfig() + + params = ResponsesAPIOptionalRequestParams( + temperature=0.7, max_output_tokens=1000, stream=False + ) + + result = config.map_openai_params( + response_api_optional_params=params, model="gpt-5.1-codex", drop_params=False + ) + + assert result.get("temperature") == 0.7 + assert result.get("max_output_tokens") == 1000 + assert result.get("stream") is False + + def test_get_supported_openai_params(self): + """Test that get_supported_openai_params returns expected parameters""" + config = GithubCopilotResponsesAPIConfig() + + supported = config.get_supported_openai_params("gpt-5.1-codex") + + # Should include standard OpenAI Responses API parameters + expected_params = [ + "model", + "input", + "instructions", + "temperature", + "max_output_tokens", + "stream", + "tools", + "tool_choice", + ] + + for param in expected_params: + assert param in supported, f"{param} should be in supported params" From c7cf18cf67423d93ab171f7122c5b87f0bcfa5db Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Wed, 19 Nov 2025 13:19:56 -0800 Subject: [PATCH 28/89] [Feat] Prompt Management - Allow storing prompt version in DB (#16848) * test_dotprompt_auto_detection_with_model_only * fix _auto_detect_prompt_management_logger * test_dotprompt_with_prompt_version * add v1, v2 tests * add _compile_prompt_helper * fix _compile_prompt_helper * test_dotprompt_with_prompt_version * test_dotprompt_with_prompt_version, test_get_prompt_with_version * add version in schema * feat add _get_prompt_spec_for_db_prompt * add _get_prompt_spec_for_db_prompt * feat add _get_prompt_spec_for_db_prompt * update prompt table * add version in prompt DB * test_get_prompt_spec_for_db_prompt_with_versions --- .../migration.sql | 12 ++ .../litellm_proxy_extras/schema.prisma | 6 +- litellm/proxy/prompts/prompt_endpoints.py | 139 +++++++++++++----- litellm/proxy/proxy_server.py | 32 +++- litellm/proxy/schema.prisma | 6 +- schema.prisma | 6 +- tests/test_litellm/proxy/test_proxy_server.py | 44 ++++++ 7 files changed, 203 insertions(+), 42 deletions(-) create mode 100644 litellm-proxy-extras/litellm_proxy_extras/migrations/20251119131227_add_prompt_versioning/migration.sql diff --git a/litellm-proxy-extras/litellm_proxy_extras/migrations/20251119131227_add_prompt_versioning/migration.sql b/litellm-proxy-extras/litellm_proxy_extras/migrations/20251119131227_add_prompt_versioning/migration.sql new file mode 100644 index 00000000000..a9d9528bd24 --- /dev/null +++ b/litellm-proxy-extras/litellm_proxy_extras/migrations/20251119131227_add_prompt_versioning/migration.sql @@ -0,0 +1,12 @@ +-- DropIndex +DROP INDEX "LiteLLM_PromptTable_prompt_id_key"; + +-- AlterTable +ALTER TABLE "LiteLLM_PromptTable" ADD COLUMN "version" INTEGER NOT NULL DEFAULT 1; + +-- CreateIndex +CREATE INDEX "LiteLLM_PromptTable_prompt_id_idx" ON "LiteLLM_PromptTable"("prompt_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "LiteLLM_PromptTable_prompt_id_version_key" ON "LiteLLM_PromptTable"("prompt_id", "version"); + diff --git a/litellm-proxy-extras/litellm_proxy_extras/schema.prisma b/litellm-proxy-extras/litellm_proxy_extras/schema.prisma index d6b7cebbd14..6cfbb90c362 100644 --- a/litellm-proxy-extras/litellm_proxy_extras/schema.prisma +++ b/litellm-proxy-extras/litellm_proxy_extras/schema.prisma @@ -561,11 +561,15 @@ model LiteLLM_GuardrailsTable { // Prompt table for storing prompt configurations model LiteLLM_PromptTable { id String @id @default(uuid()) - prompt_id String @unique + prompt_id String + version Int @default(1) litellm_params Json prompt_info Json? created_at DateTime @default(now()) updated_at DateTime @updatedAt + + @@unique([prompt_id, version]) + @@index([prompt_id]) } model LiteLLM_HealthCheckTable { diff --git a/litellm/proxy/prompts/prompt_endpoints.py b/litellm/proxy/prompts/prompt_endpoints.py index 9ab63895ae7..b4677ed374b 100644 --- a/litellm/proxy/prompts/prompt_endpoints.py +++ b/litellm/proxy/prompts/prompt_endpoints.py @@ -21,10 +21,76 @@ from litellm.types.prompts.init_prompts import ( PromptTemplateBase, ) - router = APIRouter() +async def get_next_version_for_prompt(prisma_client, prompt_id: str) -> int: + """ + Get the next version number for a prompt. + + Args: + prisma_client: Prisma database client + prompt_id: Base prompt ID + + Returns: + Next version number (1 if no versions exist, max_version + 1 otherwise) + """ + existing_prompts = await prisma_client.db.litellm_prompttable.find_many( + where={"prompt_id": prompt_id} + ) + + if existing_prompts: + max_version = max(p.version for p in existing_prompts) + return max_version + 1 + else: + return 1 + + +def create_versioned_prompt_spec(db_prompt) -> PromptSpec: + """ + Helper function to create a PromptSpec with versioned prompt_id from a DB prompt entry. + + Args: + db_prompt: The DB prompt object (from prisma) + + Returns: + PromptSpec with versioned prompt_id (e.g., "chat_prompt.v1") + """ + import json + + from litellm.types.prompts.init_prompts import PromptLiteLLMParams + + prompt_dict = db_prompt.model_dump() + base_prompt_id = prompt_dict["prompt_id"] + version = prompt_dict.get("version", 1) + + # Parse litellm_params + litellm_params_data = prompt_dict.get("litellm_params") + if isinstance(litellm_params_data, str): + litellm_params_data = json.loads(litellm_params_data) + litellm_params = PromptLiteLLMParams(**litellm_params_data) + + # Parse prompt_info + prompt_info_data = prompt_dict.get("prompt_info") + if prompt_info_data: + if isinstance(prompt_info_data, str): + prompt_info_data = json.loads(prompt_info_data) + prompt_info = PromptInfo(**prompt_info_data) + else: + prompt_info = PromptInfo(prompt_type="db") + + # Create versioned prompt_id + versioned_prompt_id = f"{base_prompt_id}.v{version}" + + return PromptSpec( + prompt_id=versioned_prompt_id, + litellm_params=litellm_params, + prompt_info=prompt_info, + created_at=prompt_dict.get("created_at"), + updated_at=prompt_dict.get("updated_at"), + ) + + class Prompt(BaseModel): prompt_id: str litellm_params: PromptLiteLLMParams @@ -261,19 +327,16 @@ async def create_prompt( ) try: - # Create the prompt spec - # Check if prompt exists and get current data - existing_prompt = IN_MEMORY_PROMPT_REGISTRY.get_prompt_by_id(request.prompt_id) - if existing_prompt is not None: - raise HTTPException( - status_code=404, - detail=f"Prompt with ID {request.prompt_id} already exists", - ) + # Get next version number + new_version = await get_next_version_for_prompt( + prisma_client=prisma_client, prompt_id=request.prompt_id + ) - # store prompt in db + # Store prompt in db with version prompt_db_entry = await prisma_client.db.litellm_prompttable.create( data={ "prompt_id": request.prompt_id, + "version": new_version, "litellm_params": request.litellm_params.model_dump_json(), "prompt_info": ( request.prompt_info.model_dump_json() @@ -283,7 +346,8 @@ async def create_prompt( } ) - prompt_spec = PromptSpec(**prompt_db_entry.model_dump()) + # Create versioned prompt spec + prompt_spec = create_versioned_prompt_spec(db_prompt=prompt_db_entry) # Initialize the prompt initialized_prompt = IN_MEMORY_PROMPT_REGISTRY.initialize_prompt( @@ -354,45 +418,50 @@ async def update_prompt( ) try: - # Check if prompt exists - existing_prompt = IN_MEMORY_PROMPT_REGISTRY.get_prompt_by_id(prompt_id) - if existing_prompt is None: + # Check if any version exists + existing_prompts = await prisma_client.db.litellm_prompttable.find_many( + where={"prompt_id": request.prompt_id} + ) + + if not existing_prompts: raise HTTPException( - status_code=404, detail=f"Prompt with ID {prompt_id} not found" + status_code=404, detail=f"Prompt with ID {request.prompt_id} not found" ) - if existing_prompt.prompt_info.prompt_type == "config": + # Check if it's a config prompt + base_prompt_id = request.prompt_id + existing_in_memory = IN_MEMORY_PROMPT_REGISTRY.get_prompt_by_id(base_prompt_id) + if existing_in_memory and existing_in_memory.prompt_info.prompt_type == "config": raise HTTPException( status_code=400, detail="Cannot update config prompts.", ) - # Create updated prompt spec - updated_prompt_spec = PromptSpec( - prompt_id=prompt_id, - litellm_params=request.litellm_params, - prompt_info=request.prompt_info or PromptInfo(prompt_type="db"), - created_at=existing_prompt.created_at, - updated_at=datetime.now(), + # Get next version number (UPDATE creates a new version) + new_version = await get_next_version_for_prompt( + prisma_client=prisma_client, prompt_id=request.prompt_id ) - updated_prompt_db_entry = await prisma_client.db.litellm_prompttable.update( - where={"prompt_id": prompt_id}, + # Store new version in db + prompt_db_entry = await prisma_client.db.litellm_prompttable.create( data={ - "litellm_params": updated_prompt_spec.litellm_params.model_dump_json(), - "prompt_info": updated_prompt_spec.prompt_info.model_dump_json(), - }, + "prompt_id": request.prompt_id, + "version": new_version, + "litellm_params": request.litellm_params.model_dump_json(), + "prompt_info": ( + request.prompt_info.model_dump_json() + if request.prompt_info + else PromptInfo(prompt_type="db").model_dump_json() + ), + } ) - # Remove the old prompt from memory - del IN_MEMORY_PROMPT_REGISTRY.IN_MEMORY_PROMPTS[prompt_id] - if prompt_id in IN_MEMORY_PROMPT_REGISTRY.prompt_id_to_custom_prompt: - del IN_MEMORY_PROMPT_REGISTRY.prompt_id_to_custom_prompt[prompt_id] + # Create versioned prompt spec + prompt_spec = create_versioned_prompt_spec(db_prompt=prompt_db_entry) - # Initialize the updated prompt + # Initialize the new version initialized_prompt = IN_MEMORY_PROMPT_REGISTRY.initialize_prompt( - prompt=PromptSpec(**updated_prompt_db_entry.model_dump()), - config_file_path=None, + prompt=prompt_spec, config_file_path=None ) if initialized_prompt is None: diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index 1bc96556136..4040b0aa707 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -273,7 +273,9 @@ from litellm.proxy.management_endpoints.customer_endpoints import ( from litellm.proxy.management_endpoints.internal_user_endpoints import ( router as internal_user_router, ) -from litellm.proxy.management_endpoints.internal_user_endpoints import user_update +from litellm.proxy.management_endpoints.internal_user_endpoints import ( + user_update, +) from litellm.proxy.management_endpoints.key_management_endpoints import ( delete_verification_tokens, duration_in_seconds, @@ -327,7 +329,9 @@ from litellm.proxy.ocr_endpoints.endpoints import router as ocr_router from litellm.proxy.openai_files_endpoints.files_endpoints import ( router as openai_files_router, ) -from litellm.proxy.openai_files_endpoints.files_endpoints import set_files_config +from litellm.proxy.openai_files_endpoints.files_endpoints import ( + set_files_config, +) from litellm.proxy.pass_through_endpoints.llm_passthrough_endpoints import ( passthrough_endpoint_router, ) @@ -417,7 +421,9 @@ from litellm.types.proxy.management_endpoints.ui_sso import ( LiteLLM_UpperboundKeyGenerateParams, ) from litellm.types.realtime import RealtimeQueryParams -from litellm.types.router import DeploymentTypedDict +from litellm.types.router import ( + DeploymentTypedDict, +) from litellm.types.router import ModelInfo as RouterModelInfo from litellm.types.router import ( RouterGeneralSettings, @@ -3576,14 +3582,32 @@ class ProxyConfig: verbose_proxy_logger.exception( f"Error in _check_and_reload_model_cost_map: {str(e)}" ) + def _get_prompt_spec_for_db_prompt(self, db_prompt): + """ + Convert a DB prompt object to a PromptSpec object. + + Handles the versioning of the prompt, if the DB prompt has a version, it will be used to create the versioned prompt_id. + + Args: + db_prompt: The DB prompt object + + Returns: + The PromptSpec object + """ + from litellm.proxy.prompts.prompt_endpoints import create_versioned_prompt_spec + + return create_versioned_prompt_spec(db_prompt=db_prompt) async def _init_prompts_in_db(self, prisma_client: PrismaClient): from litellm.proxy.prompts.prompt_registry import IN_MEMORY_PROMPT_REGISTRY + from litellm.types.prompts.init_prompts import PromptSpec try: prompts_in_db = await prisma_client.db.litellm_prompttable.find_many() for prompt in prompts_in_db: - IN_MEMORY_PROMPT_REGISTRY.initialize_prompt(prompt=prompt) + # Convert DB object to dict and create versioned prompt_id + prompt_spec = self._get_prompt_spec_for_db_prompt(db_prompt=prompt) + IN_MEMORY_PROMPT_REGISTRY.initialize_prompt(prompt=prompt_spec) except Exception as e: verbose_proxy_logger.debug( "litellm.proxy.proxy_server.py::ProxyConfig:_init_prompts_in_db - {}".format( diff --git a/litellm/proxy/schema.prisma b/litellm/proxy/schema.prisma index d6b7cebbd14..6cfbb90c362 100644 --- a/litellm/proxy/schema.prisma +++ b/litellm/proxy/schema.prisma @@ -561,11 +561,15 @@ model LiteLLM_GuardrailsTable { // Prompt table for storing prompt configurations model LiteLLM_PromptTable { id String @id @default(uuid()) - prompt_id String @unique + prompt_id String + version Int @default(1) litellm_params Json prompt_info Json? created_at DateTime @default(now()) updated_at DateTime @updatedAt + + @@unique([prompt_id, version]) + @@index([prompt_id]) } model LiteLLM_HealthCheckTable { diff --git a/schema.prisma b/schema.prisma index d6b7cebbd14..6cfbb90c362 100644 --- a/schema.prisma +++ b/schema.prisma @@ -561,11 +561,15 @@ model LiteLLM_GuardrailsTable { // Prompt table for storing prompt configurations model LiteLLM_PromptTable { id String @id @default(uuid()) - prompt_id String @unique + prompt_id String + version Int @default(1) litellm_params Json prompt_info Json? created_at DateTime @default(now()) updated_at DateTime @updatedAt + + @@unique([prompt_id, version]) + @@index([prompt_id]) } model LiteLLM_HealthCheckTable { diff --git a/tests/test_litellm/proxy/test_proxy_server.py b/tests/test_litellm/proxy/test_proxy_server.py index 865dc1b19aa..8e87b67933f 100644 --- a/tests/test_litellm/proxy/test_proxy_server.py +++ b/tests/test_litellm/proxy/test_proxy_server.py @@ -2450,3 +2450,47 @@ async def test_init_sso_settings_in_db_empty_settings(): # Verify empty dictionary assert uppercased_settings == {} + +def test_get_prompt_spec_for_db_prompt_with_versions(): + """ + Test that _get_prompt_spec_for_db_prompt correctly converts database prompts + to PromptSpec with versioned naming convention. + """ + from unittest.mock import MagicMock + + from litellm.proxy.proxy_server import ProxyConfig + + proxy_config = ProxyConfig() + + # Mock database prompt version 1 + mock_prompt_v1 = MagicMock() + mock_prompt_v1.model_dump.return_value = { + "id": "uuid-1", + "prompt_id": "chat_prompt", + "version": 1, + "litellm_params": '{"prompt_id": "chat_prompt", "prompt_integration": "dotprompt", "model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "v1 content"}]}', + "prompt_info": '{"prompt_type": "db"}', + "created_at": "2024-01-01T00:00:00", + "updated_at": "2024-01-01T00:00:00", + } + + # Mock database prompt version 2 + mock_prompt_v2 = MagicMock() + mock_prompt_v2.model_dump.return_value = { + "id": "uuid-2", + "prompt_id": "chat_prompt", + "version": 2, + "litellm_params": '{"prompt_id": "chat_prompt", "prompt_integration": "dotprompt", "model": "gpt-4", "messages": [{"role": "user", "content": "v2 content"}]}', + "prompt_info": '{"prompt_type": "db"}', + "created_at": "2024-01-02T00:00:00", + "updated_at": "2024-01-02T00:00:00", + } + + # Test version 1 + prompt_spec_v1 = proxy_config._get_prompt_spec_for_db_prompt(db_prompt=mock_prompt_v1) + assert prompt_spec_v1.prompt_id == "chat_prompt.v1" + + # Test version 2 + prompt_spec_v2 = proxy_config._get_prompt_spec_for_db_prompt(db_prompt=mock_prompt_v2) + assert prompt_spec_v2.prompt_id == "chat_prompt.v2" + From 6477740b8c0c416130ccaa08d6b5a8913f3ff69d Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Wed, 19 Nov 2025 13:23:16 -0800 Subject: [PATCH 29/89] bump proxy extras --- ...itellm_proxy_extras-0.4.6-py3-none-any.whl | Bin 0 -> 37547 bytes .../dist/litellm_proxy_extras-0.4.6.tar.gz | Bin 0 -> 17434 bytes litellm-proxy-extras/pyproject.toml | 4 +- poetry.lock | 105 +----------------- pyproject.toml | 2 +- requirements.txt | 2 +- 6 files changed, 10 insertions(+), 103 deletions(-) create mode 100644 litellm-proxy-extras/dist/litellm_proxy_extras-0.4.6-py3-none-any.whl create mode 100644 litellm-proxy-extras/dist/litellm_proxy_extras-0.4.6.tar.gz diff --git a/litellm-proxy-extras/dist/litellm_proxy_extras-0.4.6-py3-none-any.whl b/litellm-proxy-extras/dist/litellm_proxy_extras-0.4.6-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..346c07b06eae9b10cade583d464a6e20081c1fa3 GIT binary patch literal 37547 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 YQ$ZRY;g2uod3e7ghJuQ-|Kqd&0}Z1te*gdg literal 0 HcmV?d00001 diff --git a/litellm-proxy-extras/dist/litellm_proxy_extras-0.4.6.tar.gz b/litellm-proxy-extras/dist/litellm_proxy_extras-0.4.6.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..3a25d44425d72af26d69677c1c336b433a13da03 GIT binary patch literal 17434 zcmXVXbwCx(_cz@s-Hk|hcQ+!^NVkMa=cT(FNl6Lmu1j|#-Hmj^CGNgF-`~4`@6Mc^ zIs1uoW~ri4P+;CJIKaWq)yl!a(d63?XHPE^D^J%SW-e@;?7Zy!?5<`%V9xwj-B*We zZH@b?kNQSfwIXG27)NyCnibM)vm%`glip|UpM?fSFoqH%5W_V58Nc3zMBlg_s;FxV zu&+z*N=KGhs#)0hFy&Wk&%2!*+Ye!t?T*K^Uih_g9i>kT1piU@ncnd7<`pK+HNpVC z9hSmRO`3K?(KYVDojFbt(1}ft=l1nUD#b(WubzZbwolWqRQ`EWnTO#`he-Wd370Ea zid$;EQzaUxP_RXO8QI6^4A@N1xLrT2d(v2mWWOOAiz&=9GHEs*dT~sLXe7&RgTLXr zDZJZccZXdR)1_+W%i56jUF=#>=QA5igi|9T(k8 z`w_;+ok_iX+ad;=xIbfIgFBr z*+p+$Uev3E#I;PB=p74^+$_R7$7P_Wo(o%cQbhOcxuZV;!&6!T<8&A zm@KeI@K;0#@t6V@Q>HMz6hS2BCn+XJP3`VBq{r~l1(-jwb%l&s@7^6yCp zglC^!C!fDDlF%HK&-hM09|ih)Zl1xbh!y^U>|4CCQngP3i;F0@mC9?lhMHcYl( z=HTG5P)IJ!wdT?fhZ*bAWy;M-5r&(uT&!Ly#Z32XYt!6Dlg_Y1X3LJUMn*Df*Wn## z8!r9zZqcNAe5;MC`S9v}>jGh^A?s2=sE)y|SjAP~3l0b+#gPko*3;sLg^CmGg7#^X z0zTZDVp~!wX2b=(&LU2#p%Kvv^RI?=Nl&!a#`xJHdtp<=IK|@*UQrHFzP>;5CR_Jr*msr3}^d4hg<(*mM%wwR@bOP%EmxhhW@69cM zhGQq`>;q=}QoD|p9MeQBlAc@sr95Usb>J`I{D=!&)6P;RGSxBK8N=SuHr~2tQiR+` zt(ASbBQ2NvG_bQ{%_nLpYinZVedD1EgGvBbVUb$r`?hm2=-DMUVW3o6<@dYeSad6>Z;M> zy?%b{BeI@j+`K9vxu%I6vss#yUu_J$8aLNx=>zSraSOo0wS!|Kyq-2qr|gjYE=&q^ zjHcDnTKfitY3t}{$+NM>w6*@7S}&3IO;jh3LxmE1IItJCGtypIs0Q`2_UH0UWE2wh z3!exq^MY~z`%mdJf*78*RZV8=zu=$p6n&+D@kdi^wVE9EaObc?&0pWdc`{0WDH+FZ zbT=P$nq2xH=uiI?>;-?x&h1!9VYFrw#J%}9vME^{3R3&+DI`p3Y;;bQ*Z4%HnaKrT zn);kAiK5!Q_envlgBq#!b|j;@ghsv7U^$sj>#H@}!UrwJccvz24Uy7F=314`KX-+R|HzlBG!mCX=<6 z{L^m%chB(A^H@V|5sGaQ!u?KcTZM+bSh~a_*x)y-E`y4#Eu88&YaQN4amd*T9`22% zz=cGA5|Y|ON6d)8Upo(av?yjBk7qqp76lmP+0l1>@9;~uuoaPr`fg^RnuJI(A@2yG z!%`--+3D~%48-c(DKef~EjvpJW<5@6tWU%O3*+wf=+5#sx~4Z}o1`r&mXEo~M5Cjr zoft&FfB9`Bz29TJVdMSVew?oxCjeD6^R8Cch!1;?(pQr_m`nYW-(H=-0C5aNGbzMM zatzAu9Z0Vv+FyxYoP39V`9;#t3zmILZ5z&#>IVIzK?4^JaxP7ywngpa1oh)7M5pR1 zqzw;d$9j|FLgMsH>GPCue=$qrrDGb!N%W-ZYNCi%)gVJ=f3RUI<2g^CGHKTCS9{YK zM9EfmorRhRG_Qd_`m#y`z5AJ!jQiIyx_$4)ZfuTM@qEVb$S>&Jw1h^0Pi&u#3^+fB zq(eek9))4baxJ{_)_<-+2wB4XGgrlxwGjh9q{mk3rQ!t~s-N2BBr%s1nVZ@L$kxF4V9^A22{&Do`KvI%n$sSl(7R^$(!U1_tS36N8)jOwA1b*LaCd1Ca=zE9ECEv z#{SLyVI~(!T+=0x6@E7s|EooYzvyJ8G#jhs64GEU57<_rE zrh+cCHVwz4qhg4pjsg*O$XxOqqMzjCa8FuTbZ;rrHMbSH;XW6ma(-})4XQEyT`8&T z(F(_<9e%(&>~;(7OMX`jn_yG4o4zV@z$u_Q24}{6Gi3W!fGLyUZ)Px~^t>FJmt>t~ zs)M9n*O(&0=EFP3%IROZOI#)m zuPb>rr3}dFlGp9{L@+15;RX~~r}7)KqFBJ`(P;j%6uat`4KC9#DsGFIt$ZZ9EH5gQ zjzYwle~3B=14~cm&mCqwGghB@iBVMkjrB(V{&TKO`OD{jwkmf;6RVz;vWr07$FfF| zqI(*Go=T+OlnKGom>p>J>ta2IR}<3U(}3|B4-u!-VA3byow)i8$&E=|Hlz zJ}p&r-r8jR9!qJ7G@U_zGG9ZjESSFV&7PlHQki6(f95j@Jx{~uJ0`_GXvvreA5UXx zY8G{0DM_HOKI*@*8>CDQphfgZ$>#`jSL=^8iuRAheK@zg-Mk1h1(9O``tM{DBUQF* z;IVYbZ)Zmb>R3f0T*0(D>DTKeJ^|*O-ANS1VXZY62^TDPmJLOiQ9I|{uSHL;1#{A` z96vb9a@O8`-ZZ?$HN@NhLeD=`C&`k4#C6N*3I zu)B9s0XhBgczu~h8e$6Um;&GQe8PIqJ!Zyd5mN@j?2Uy?S!~jgE6c5g=c3K}4HkLl zLbQLEWc)zcUkho$oD|R%!S2B`;Ehkg^IIg=Iu#|D5WMh&-d9|7**t#P)p7qvq-OBL z14KkTK{{$xDWBl6Ij|Nrz9CGjNwccWqn1LmFDf_xfvxqES4)A=#^#EzAm<~yt?&s2 z(@%@RCckN3-!Y-$D){{dgsI*K{`$X}zvT6fPactYo`e0nrb=HMUT;fzZpIAl4gLcB ze)!qXYLhQ+9`4)_D&bD!L+rh1ao}Mh&*_0AGi&=UTALhU{mflhY|WF8baTr9EG%pIvbSAfwH|OzkYWWHvtuA6-)0Z z#U^Gh={#gYE%viuvOjTzUhpS_A}KiR$}bAI3FDB71RHs#n(1-TU z^LtaDp@6B~c=;OQcsm^8lCLCqHPpXT4Z_w~c}unaQ2IVxgOOG$_CU_1>B#`RBLL#K z2U)wNUqo54DBN=E3$BD;wl@MEA}avMN-;_BS5$^s=WhiT$ z-{5n3m06HCt6!?+eNta8Jg%Q5zW4#VGKqlpvxFwUx9f+R&zR@Fniro_+i2v)+{k8r z_FL2dcaV$cWS~MAhz;8Edhl{q5JVXthwps8S=t8?tW->bu&=ME)&t`Jqx6?*FDThM z%-tj?{h)v05M04-S>~0^cy87T^V9RfF*744{0FPpuWoG$6%8_0p|srD*FSN^rGBzw z1@Zz)P4|ZPpZ!_Coc?nknw`rXjVq3RUE9|4rVMBnOsfj25>JDg-U4SGfV1uia54jU z=oSMPuI;O@N7UbJ^Fkw8)h1Q6n>z6nnz?DouD1#m~P$OUoc0vSHh!n0*`a6h_u9-F;3>! z1&fU5_mZkSw-j>`K4{rT7k91=;NwZ@Sch_zXvecQ5Zt#n1Kv5lFE$E?fL{FTqEDCb zvvd3Eg@gd>W)=@t?Kj7S6n08vxlFrfSNZjit3mM-&c4KxyGV0G|l_BRCRjol>I97iYS^ z>e9M%hq{^lrkf&jLFfL9kG;0qP#gN_vdKj*(eB^yMoj&K(lCo?4g z_ZWUGlN+xIU6g!FyUnwUgDKFtJp{}MF%bb4r!XprFv@;Va^h}=zL!9g`B{fpykO)a zUp)N&Uxi$7t@BhObu{{ft*wEzt^CgsVG9?}g)3Vcsdz#+nN`;!eeHe1vA{1Rqseko z6Q6g4p@u`CYFVhWhx>OHL17d@vMINhhYKm_qLfeZ%jWw010Ze-0ey4taq!hYR&WO; zb_h_cV$hcv(f=XxmvZG*!R2{);k*%YV@H7XOA5n`{~pez_)|AUpNn(E>MGV=!|ub(NP!1V@@ zDLmLOT62L`d|f5G@q_&(aRcYUvXE}2k0S7t=`S2IZ%adU+w5`=QdkAP-T;P#+Yxja z-$Ur)LMUM)r60W+%&w56bi{CcUq{5gsFJ_`y=`hTiaFrE(A zV6?N;LvVZR&88m(02YUs)B>RYvn}y})?wg5vu6bQm!(CpVbs5N{@6$su;v^e99>1* z@B7Z|I>N~$BugUI@6WBl2W9`X3G(!J%sy{{LmktXa~{_Q^Kna?jLLGc>Z7QC$P3OF^dlXn^xtx~Ia!COl#<_%%BC zwa?7abdOMx5=ALdK>)J$Zc;=1!}SrP$*|?M;*q(|qO_KMJ!G@$to zz`DK$SL_4cFW^q?5#VrL%EPC|krmF~Xj!YzUB+Sua-AbFY~8?onXw1rTdBAK4ktl( z?N89da9V(;mB%a7^M*G${GFq3&FRBi{m4e<+Wyws^+)S+LIu+&&4qHEl-N4|{h*K( zH_`+=)rGQO<6Qcs=Ij$i<)6f`-Pqku#J10WNjdND)#86=4-~mt`E!Bf(JbBb2e-?8 z&F&Sn{{)@{JV8(}!9Hm1+`TP$jv0Fx(A`c~gu|h^xmk|2St!60Z zn@esFSH%jYNhH}~3Z`L@WCQIgH=&c1Lwxw_9__8J5{@kmpl=CD3fT-s#y)3I3MdGW zWCN%gU#bJ|%U{78`B`9~y7UctmVxM5oX#c+gKr76c{kLC<~tc?u1bFqR$#gGcJZZ~ z5*?UB+7y@yP%pc!^n*Xl8WO&7vX(i!=;t2m&zccx8R;KBI_X71dh>jw0^?jg2yB)+ z@bv>&6T@hc&*#_0N^M2L%R9u2r~}gA23Uwy!>H}C7*ymNIRYvW3M(yaj!Ti*wb?v#`Ef!ul0V`bNJdZC@w=;M*NA`zYbA z&EGD-u0yPgn>l!moGSmSj)rUeGAIg!k{s|XiT!Ui8#TuYzEH|bIVw`pSrpt(JG4VpIzH1R{? zAHa(v5^kzCx__~&&b%zeh^&4oqYw7u*iaZSZ>BDp=+9QXnGvP9q-w;>SmWA@E9($F zVKsAnD^_n_p_qo3w|V)l!OxY8tNsf?eerST7etDYWjl!>T z=+?^#nc=lS{hvGV^DKbGG77ZJ!SndHFD{P=!>PKTucH6X3PGv&90DQcR;2b`7y}i7 z_sqc5q`Np^p^*ppcR=&@;V1WBxXmRSnWgtc?m7O5C^bz2zi%X}l%c`1NPzV_*poTa z_%Bf1f=+H|VRPZG#DxZQ5r1g*>O&67Q=+IakoC4F?;zmlMVJ7tmMkNL@JP~_+Cx_B zs;cGUh1VbJt79s8??twfaKus9A?-7BiKx z@8GL3Y!3G@18ffay*B(4p=i6W=T#!$3}fpE{OO0TZp=eK=VQ>5DkkXH=2gU^vs>XA z`Fty%VXcOqhv73Yscp3=(3}+w9Ah=SK6E~U)Ii?Rmbn(r{5)SOn9P{mB+6b!AVExd zYVK|sTz8!Vq9n=-<$90J^&jj@B$&vD`qTq2IqyLPSDRvQW{DPfetn|`oAr%*r*snp zhQr&T0O}875esOP@&BpoJE*fd^dXSJ76M4_NyGzBnQU9=P5$VX`PYotoro_PivSPK zyhx`%*rH!x_5j|O(2BYzg`%uC1<8AALmBe>4?9&n|Sd5A> zTMjVNSSzg+BJgC5$SUWVHCfbTJ%xUYPr!AnxM?OMHQb~Oru#;AQP zsA9CNHs%_`=2(qvzo!L789+~3yYrV5M9OMb04vJiCuf>jVqP@r!Y)Hsy9(fYeq#*k!62vmtsEgv7YfEda z40W^@dd2yjur5qeMvy_xtZM>XCm%k2b#!M!_P8nW8aeiiMjiB>Tq+@6FKn&ONjHGC zoCVi4xyPIw9zwbQMuvXz*C06vIL{-`E%)wubqaIr;lT6id8vDsvSqkXTNw6__E(sA zmH$-WoAJSRcew`XzL_Rb4FH4ojH=`!h#c*H`hJ}j?1^svM15V|As0bQrK!^Ul@z_& zM2;6wmOR=XGMP_0(Pc+iwcPx!C&byUHVxa4B(ZvV7WHljz1O|)>aaA{@Ki-!=tBz( zkphajA;&E;E6^_T+VKkhvkw^Tfjs2yftwBW2Z(9&91kJ;@n~9N%5)MGcMNz-&ko>g zf&}m;(pOFaW}#=EyR%3!Yr)Q2@lU$Aa1AJ8eGk$Y)eQevo_!z5;%_btJAr&|%E?g? zRBpaNk;ieKA=RP^DY9ieEKNABuZcQ?lNHaLyr9k-=o18%=dOXSH(SgH$!jwmbn|Fx z52i#%FiV$`-@X>5O29(&kGTdDuCVNa>YhM(#UXFEn+*e_k0!YPo_09cfb?`A>Lq>! zcmo#+y*C}X;ngL!g?Pz~Lj7A0#Wo$FO9QlR!Lcu!%k$TONFwlVr}2#-OjZG~$}^}` zYosC^XNV zx#wa&Y0^rn$`-3ZH-rBt5S}Gm9>CkLo8AEE%Qg7vWwTf)6&s+*jpn#*u;siz6EZhx zJ4h;Cd3Ws+(F{6>dqNaVHobRO8_3Bydt8{jm1p?(V?rd4B*t)fZAITJrKWPbS0;?B zGW9(MUd#JKjFUCDRMYCqw2GFgArEk>e;53#vyJW{&?WGC0g1W=8-qoT#G~H@BK*A_ zT3n<2>%C>M0NCeuDg*GCoOyuSCUEub7K|RYpb~SDa3_hoDMv!p&pjY)@uvgllLt1d zkSw9R@+%vB^?tqFp7)5fK%Nk7c!v%p1DOG2_Gwe>9B{jRy?7`F?u1!pfu}E@;h#it zPnXC|v@A|r@eD=as2ZWV@MqdjCLRf^zzK$X1N7l-!st2pu(_R66T7qx>PuQQ&vzA$ zu-3t-Tr~2D)*e%BhN9q~cAcZ9ZUHL!;tl--czw}epJ^OCYke%93A48ma{xz$6VQLt z>f!^jB7sL}J48K0i{NPeydF#BXPvLX@yb9&@Vzpy=_C%VsD1@uD*$6Q0oGOJ-l%4f za&X~cyudY^uYdFU+C+*<1<|pp)kmW*;>)wfpN#fiLy8rhB5nVA=PUp^$H1y)Hn2ML zv}te)KA$YV1^e4H3mn}QMCWg<3X0 zT>7xWYqi7-5Itr8D=e|>gPcY30EIl@EolLq8BaTPj>pIjqlGnuLvXNbtM@C*0#I-4 z408fPQ#Sn;{VdU*;|t|D0}MBxsyBdjo8PI;J|u1E*nXGQDo#(zZbK!`sTZi#{uj-* zE)VBi?opIz50QwrEX|>K!yI5CR{opz)wX8mYK#GVBY@0i)=ek8d$70l*jCIh-j&#`qeiwS3mgXO zKTBeS$A=GbyXY&)tNJcvEbF}#aR$2$e>kou!vwQ+cs?u{xxbfN|H7O15~i%#ob>_Y z+~(^()`HHrPKy3t zaX$4Epy)qh;jLeWw&fX2^!X(`JQK<6u0u3k3a=VxGCrjT8C|~gB9WXqTvZ$1WHByy zKc!sWZtr~%LdI2%JI$m(vV=R!V842?3$}`SA7!~)8BV`0*oxveEjprcdGkJ6eLNJe zi4c9&-qAs_H50<1?4oWgl1tJR;t?o->cUY=J(wqm<+js37!YH0&y_uefvhlWdNrCW zfAJdhAUf7L{jdo)<(G-IYVb{y6cfszBmsN0ZNftzPF!p;#iXNRVN#R#h@O~dd0+KF z!l>c@GxH{mn7^K;!PO1#E>=-}$2iSSth|v*o&t4-hfKQATp>Vbt`X=f&0Q0q@34II z0|H^Z#`8IRu$IDL&2s|Bs9gV!f!!vg~3A*zIE4 z(rQs8QbGd{H zdQFh+r^4;14U6zMO}TqIw)fNP{j{vfx7U_cd|enYpf}hVIz>W(=bOnzd9|OQDSkm=V?8%2 zrs(Py_dDinXkz4dt2B-8(5Qi!B|o}K`yI!Xy#zkQ)$u3LJFwP5w&?dIr!kfmnZM8% z&@gIM>^lm_mdIWi88bSK@Cb(JA)Ae8SM@YVjX)+F|x#;(euz0_}s<|+Vm2WxtaBD@I z0>h!jn8>Q0@Jpejt2qOn-G~F>MUP+427S6+5$RFMBIXx&<6P4xb)9h)ea*=5E_yG< ztnH7ftm6&VO=QCkyvAbX=}7j4VHZNUm`uwqm{?UcBOnT*Y#Ro9_5n?nrc3;?3M=w6*Cw+WNmT(xq${R@!Du{Sg2vD zF?fcus`o55L8EIvXTqL1js40qMO7ZxO!Az4m$YxJj?27rdd)n}bvJ&9Sq2i9Y29_@ z=g@u~kQ{MOX?T@HSSWUmlekXBoS()XNL#UP@NJ3B+D?odw-J4J7f2qj${QNNpv=NE zq)m7K&QpF(&q#d!`C?e{&>F}0-dE*3sX`d8bW}@#4437lyxa4&*sC7<}_aP*!5nv(Kf2- zHq`mkRlm~oJc0!|jX|kY8qmBx8+Ml%eG=cyXfj@xCB|8e4A85{@#v^*qtJ_btkMzr z=x!-S{grMP=i}YjDKf*?7=1Ts7R0zJ-q=)0y%FKbX;G62y&>|xBlzHxHNKOYu~ykw zI&SkMc-pmrRoL#Lb^C1oD(HoLT?=n0<+nRRm7?Bz!}^ zN7!`)|GZJNjJRbQw^{JF$LR~{p~VWRvv<)q@|UXe8`zMdYnq83q+dBTLiap@mE&&q zL6h&jIEq*XEhwh`py!fSk!1S~M{rA^ZI&x8g)eWNg5u}PW>nAGrS5*TH~Y)Et!M2< zX8zl|KwN~BKXx_0t79*%)kEcXW|P`QHPVIt(T(KB6zMHAr7<$2{VI1qF`PFiYQf2T zpe5|Jx*4x_m2!-9gE6v@vPQMi!CAG7pR-ez<3Zf-&$@p6Q7BVaQi5lU_fh)eQ0Qnh zwY?SY@NJT_)wVyv$F|B3Lm1Mh1f)Ek76n~&{+z!r;CYl`(F$8o*j88J_N`+ovcBEN z>)l)P@aT9V>nR zp9d9w_-N7Eu*(^_b;`>d!Rl!%27fAazPnd+=h)w0S6d;-5)=wQA9J>aFnI{ka$mQg zVKIGaS^D6@VkP{KGxuAaqy>EQjtsG8fM`(bay8Sp4+~iP9jLGSNT43FC?x|2o_#)` zr6eC6l8>|8F|)N|C`fos;9#fXAWTwq7M4Ge5l8(g!}^Y7kf_%)fJ2VXcILhT^VkO5 zw_}#)VO}3Jl365`xTD0&DnK!3lfk5uz!i!zG3g z*Gibumt_XR$W>XHxJb-|v3s;8#slK$TDVy69~{;(*_jYm<{#z4$e9*Vf7RuZdxv& zK~9Nt1!sa@ zs{T;$T|>H&EgF(#<_)#m5j^kQ$Mld4K?oIPVhVy<^;_;%*%oX znaF|R{jyIc&x6@Q%a0sYBz2ye7zUcu$zYpWL(NL`i!GZh|G4%0${98DNk`G}z!kF& zX`a{GkT3-yemhTWk*4)Rmm>@* z9e?bEj&GXA^&t+A=Q-xR{@3?c3+r|=9VAvp$A1hVq0oSdnKVDxDd1@MWa*zS8XCia z5P4YSPkbM<##v#1`OR3go0dR39ihVM{Nr*@A$#QaB{ORxP8#8^=*|opQGF?RZE|;e zA-4VnwD{%mGe%~^-mS?b_t{z#dJ7c-lv)~XCAX|>xX2`R1i98$ny}6N(XMg)!5(Ue zY*6-s~t7taA@d59bu?#Nr4@}bc|m) zi7<{@pP;<{mCzY_V~G&uEW$Gv4kFEqox0seJjRbcSnm9P^hNW_;>9F*NA6OdqoBM+ zEv8O!bW@p3xJ!Q_%PGUoq!SGeq7twD=e1uuHCiT+|G8l(LmY*pEejuY;A|o`YTi(P zN#|Ck;EXwtu+b4#*d@lqgO~N3OaL`wlbOQ zVaKQ>N^@1u%|Fe&|L*_{I~$%{p`vJ!Rd9cf$>+3cUJDGm3LKFcee$go%jhg=(GFIu zdg*pC1DmzwSZ7r%SUFP!CjQ7zpR}glWrLRCFh}k(T+sV$V%SuL$C>R0UcyLXT=1pw z2^*}C|53FJrb-Q6o1yay*dj7cII>r56e12flHyF!-A1a_j|# z&FKF&#p{d^MF{mNttA*dE>wOLC@B4PnaPijHTRS8@-;KE+vU%~vn_kp6+((($Ef2y zGp{0(sdcfdI>Y*ub8_=v*pql|3-%COvP491zo1L;G1`tcrCXBuaA?HOO3!hoi?aF_ zVv}WlonwMmYcs0Md~Er*<_gWCD5J@)g)J67r!6Mu@b!5b}n zH5~)i=F`3W1kYABv@|kwjvi{^2Md@{YGQv~fi<3?rR8jI7vmQbHJD3YdZZ(yM2TXfoRL#UScAU`%6Z&XJ)IK?=>|=EEY~f!1qJ$Dszv9T;jTyc z^}X0*myI*`tgNjw&jdTHY*YBKnnWMoGa2z+F|lS4BI9ukNCr1*=aL$aMN33jX=7!# zVBcmaJVqi|d^RAkqI|#|BCX|#?9hqEy!}9=@{wK&)>+he>#!HjgVx-f*pfaOU0gZ6 zllD|mFM>}nprF~|D7CGb_elAO6A?)Av+ip^v(7-UjZ9XZ)?9m!^lTHC#l|Xv;6f)Z zAcgjdg?Pf!cP@uc)3=kzTCL_m8vZe*Vlvz8vD-=U8+^$>jA2w^*gn*ZUe*G37xKuz z4Q6!wwaTPnv{!?RZg%xA;iS|ZAL9N^pkN(od)O*w7Lr_%oSm~&NcWi%a;n0N+31N& zX*Kx?tszg~YV8rfe;(>nlS}k?J5d-#Yjao%ybK76i;+`CGR$4_7pskgBjtSy$C2zA zOJW)QOGZy<-{>VQDeB`p(251eqcgCC9VRT&0cPi3{v@cMQp=vBIHp-!Yk*Pb7bI=NFq2IiPWE-&=OP1p4z{fK^zGcP} z9O1dxi}4A0D%c8XX2PTS0C50oDqYkz5Z~F<&iYs80K5(1fvZ?dZ?-==BMkyYF(qb= zz@T`>H{iMoZimBY+;Ww%l>HlS7u`;4%D7mQ7eb!CHj@g>H^%7BaR&bDHE@qd?$of$ zFNbZ$~KyHzl6M~uxb;mukgJuA>OXOS3HkEUV#C>NF`UT8Dy~W`>ic(;r>v3 zo8T$2lv6swpkI#(eIIGgDV0&2Kc&;X0(x;6lFV?=9fn|+M=5?Exy#C?d`<~4qA4hfmy^Bc5%C|9 z%DTqC`e@CL)23%JwlHpMKP%uiT=|(EwK$3=Za&zP;oGhnw;MA!U5;d`;Km4juG#lv z;*KAaQL3OZ!Za_GDQ|Dw+C_0yQ7ZTIpGn#@!aq6HYUk9E62=6oLbjf8KM?g=qKvWd zXnefHYSZWii6Y~Rg$_ruc1YJ_r4#zqD&Kx>xc`aa%0rpop_hD7ZZ$fkMM?#U`yhILBh~OZ2|}UbRzw2jp@MdsB%Ie z&p7wgqm@{fkB6wTD4(-@Q6D5B77Fjl=oEx*|3t0MzP!Bl@(%UUrh$BP5!E@Ik1iK} zD1GhxcM)>!B{zob@g7-iLUi=pIE^P#IV%RcdZ-{Y2vvZq71KF7ytF6p?f(f)f-m#K z6|yYtr)H=dgNn8v_AW`ACCAEdlTiYZkDh-AO6yc1y-O}E;Ua}ZI|nP~lmk+GfJq27 z{K`$1)dj#j32bhXoLZj)$8PREZ-vB0(fgQvgiPTLZMvs3#4C%|>3MTDG;E3yN)tbpTw@?cTVY)~X{U~;v?HPjU)k=v8^BI6ls9QpYAp zJzBkS66S(vDO{li0*PXK14Bx0t@l!fLf6AFYFUHJNkoGD0Wj^J(qav zYeW|pk`4p`#33-UwMWN>4%wx#xYH)HnoBupc@G2#DD@J;pCsO4ipq9|&dBGq|Hj&p$?389v0V}@Vil^_HRdK+qg69Pm$_;@ zc@WRAX9is1ro2YcQH?}bwSDdr*<9xoa(fiLlP#G<%kYB-yKl|j6;7;OCjUiw&0^I$ zZJJ9_{y@kMeU4}^tae%=tR7KC^`Ga|Fh=M#@3{P)!9=qpQf9?IzG^Gg_)`;mNuF~5 z%)R}?oRhZ-1zBG-J|6Ab>dc*d@2pb8&nECU!`9+E;}Q6RvDlwk$JHGY2Dc>6lk87T zjiIAcgz$#nGpASK5D0yVz8fvUJ-jd*JSKn;lll!qI68#f47szV<{)cp!;7X^BFN#0vu>R*q$bKGcq;)fg$?ITnW^H{LRa@!}_P#{UFdi4) z1=aR-De}6u>Z|_jV2sz)OxmG@#QLv?fL3bY$}Zl6&3a8#4$W3t7T14sbIlHn)4n$# z`68G&_*+$Z_7QVT{1Byrao$o-D`eH9j)D7%JR^)Lbq+Q^0wch&Fmz=QWRQH|eC^p4 z)tm&?@3J${E8P*!<2CU?kNNk5eqlg(^^rMl0z;`uy!;G`CIo1@h1A zYdK{H6U)&@TNf5ulF>LLheHzVV!86TpVgW;x$^>Y28~F&f>|@Qju;b%8Cb$;OPpC*lZs7#FW{F zJfwI~e>C6`80=688lx(XN#}$~;^f!F;~rg=h&3q5t|^gBM3b;Mo!Dl{Er?|sGq-2r z-jj9v^?Tm7_R!5ajVW%KdiHZGYET2uh?Y!hmvLpi?#UUS>jU#wjfTglvsQ2ZFZLuq z1f9$XnznUkE4$}Z4A~k8(N80o4GUB^tSTo*tVf>oVx6!IXrr60iLCc^;c35VO!sDy zRd6{Vh=j3)|Nc5sWfxtQK{eYgxXd_6w=r{HakM?C0xoKN_gpBDMoQEarzR)HtIe+! zc%NhUK|C&Yw28N-`kL2j#PJJk_CL=aZ8-MEV#uPU?4f9HyL-J+&hQn@$6U^l&1mOc zjGC&bF4eP@{f9zX#02#)(s;=5}FUNA$}&R&~8c@Rajg`Aa8~I}$ z+1RvGFTC1VrCL3UYX9dssj+$?moCBJ)}Bkv6s^dRs;JqhyB0P0!yWk=7B~{CCLcrf zbxBh>TW{#AK;en7Qb+bYS)!XNh0}SFFP(H%w@@8VdP_vz#HUSZm#0xcuqc=TL)kii~~U-LkT^%&7V0Pe>~!0x4$}|$2pB0GN?A3`+tC-+li;fw3PHy zOmOx)vJsL7d5IYW$50+a?*F>0DMZ1MfSL>t4gGq~nq2gCrF?v2tLtfh{gi??k}GF7 z{Hffjb_r)>z6@Q`X4|pMgV1``WAx)<$3C*pzZ}w9`SOZfU zX)&qgV3uB`+=6{m{`^rsFHfs-1gu(dx9iy@V;y#8)(04rUp7{RIXYvH4#%36L?MP{ zzi~uHR^^f^KDE+TtWB1`CmWRqKM8!j=u+H2HVtX7a~xMoYd)pZ@n9Mf_F zsZy9hvJJX~aepP6kblZyPRqI*nLv`F)T5)xqEf}Qv0uV@f6^&1{BTZHW20*=U+)-e z_jBGxGUl!<>=vSP99*c%kaOw$Np(z6!LpW4aNSIJuY&UW)bA6m{k}c&`fDs3pA!mN z1NIMsP-GD~P`b7Ph3V&g8LLWvL-V`h{qON5nddV<=!Oou%qXjMD#~Ji__yL0WrZ{J zEwe`du}elG+{!W^cYxh?C51wG2x?a7aAi%trRn z$TQd=?rY8rT;X@Tf6%i2y#rpr9?8$_^N7Z7^Fod+(OIxZJawwXNv*#AM`ne zQ|X4B{=LnmX$FA^U)KB?VGX=ohA|t21AEJ#7iZu=3X5CR<3~|~A$k+h&k&)jRFX>R zXO6?BD9*0u@E`KQEW3>ZrJ??&x}S%;>?lXg+nF|&)_ILWoz@2a;!?P_gk$Jn+~Pa# z)To}ZQd^E)1?7*M=qlt?f7+fmWlxeCJJUGO@Alu*fwJ9m0HLnnlB{Gjhg#y6?q9AO zI|?SNk5uQ$8yocNXR)bgP+1E!jBxeo!*cH@2 zn?(m;#!lQ9mqLBl{});VrTnl?9@Kx4PT>hS(rnh>UyJZ@$!~XHcLq(8ji+e8y-f~z zei0Vi-u^9_^Vb#NX@Z*vj>2)Cc>Bd2hJ1f`Rh0S+@MAvzKfi&On5C*6dNbz^eUzX7 z?{o({efj)TPT>Rv7=<(&Vxlm3yKh-G zKUUA|=Jd*{D6D&u! zX08h*rXZ^qSM9Mkdm0TYuGDOtFI@wS`2~6sVmENJ!0K-{4r`Z`VPR2>W~c7hrT~-q z4ZxID|F0MQ_Oo_(^M4Q8olWw;;IHTHU95byupKLMBOtiht=Ak2yvePx=TpE0FBqo_ zgeIdN@pF4-2A&IlnDcZ*0D&10%73W)K|xf}8-tV3i^xISl-bci40vG?KklKl3{(^V^^def#$hD0kQ}0Ib(%i{bkFypD$gb+gZL!clj#4 z<*O_|`|hA|#@X@KyYr(xA_=<9A~(2PCl=*t@uHHch)&BE3uw8nb&HW**B+U_+{g}7 z9c=4>Cy3d)yqUvt!Huq`xS3>mpWQ~IaD~oqvoae8{BWKFqhvcJL7D&D!k$Dh<}2nse%&q-;G_pHVT@L(T{%gqaXd~M?d<}kAC!{AN}Y@Kl;(n%AWrZ0Cy-~0MG&eq=8^P literal 0 HcmV?d00001 diff --git a/litellm-proxy-extras/pyproject.toml b/litellm-proxy-extras/pyproject.toml index c29492558a3..78e34ccd01a 100644 --- a/litellm-proxy-extras/pyproject.toml +++ b/litellm-proxy-extras/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "litellm-proxy-extras" -version = "0.4.5" +version = "0.4.6" description = "Additional files for the LiteLLM Proxy. Reduces the size of the main litellm package." authors = ["BerriAI"] readme = "README.md" @@ -22,7 +22,7 @@ requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.commitizen] -version = "0.4.5" +version = "0.4.6" version_files = [ "pyproject.toml:version", "../requirements.txt:litellm-proxy-extras==", diff --git a/poetry.lock b/poetry.lock index 8a9b4fbb60b..32460b91c91 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.2.0 and should not be changed by hand. [[package]] name = "aiofiles" @@ -1964,75 +1964,6 @@ googleapis-common-protos = {version = ">=1.56.0,<2.0.0", extras = ["grpc"]} grpcio = ">=1.44.0,<2.0.0" protobuf = ">=3.20.2,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<7.0.0" -[[package]] -name = "grpcio" -version = "1.70.0" -description = "HTTP/2-based RPC framework" -optional = false -python-versions = ">=3.8" -groups = ["main", "dev", "proxy-dev"] -files = [ - {file = "grpcio-1.70.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:95469d1977429f45fe7df441f586521361e235982a0b39e33841549143ae2851"}, - {file = "grpcio-1.70.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:ed9718f17fbdb472e33b869c77a16d0b55e166b100ec57b016dc7de9c8d236bf"}, - {file = "grpcio-1.70.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:374d014f29f9dfdb40510b041792e0e2828a1389281eb590df066e1cc2b404e5"}, - {file = "grpcio-1.70.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2af68a6f5c8f78d56c145161544ad0febbd7479524a59c16b3e25053f39c87f"}, - {file = "grpcio-1.70.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce7df14b2dcd1102a2ec32f621cc9fab6695effef516efbc6b063ad749867295"}, - {file = "grpcio-1.70.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c78b339869f4dbf89881e0b6fbf376313e4f845a42840a7bdf42ee6caed4b11f"}, - {file = "grpcio-1.70.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:58ad9ba575b39edef71f4798fdb5c7b6d02ad36d47949cd381d4392a5c9cbcd3"}, - {file = "grpcio-1.70.0-cp310-cp310-win32.whl", hash = "sha256:2b0d02e4b25a5c1f9b6c7745d4fa06efc9fd6a611af0fb38d3ba956786b95199"}, - {file = "grpcio-1.70.0-cp310-cp310-win_amd64.whl", hash = "sha256:0de706c0a5bb9d841e353f6343a9defc9fc35ec61d6eb6111802f3aa9fef29e1"}, - {file = "grpcio-1.70.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:17325b0be0c068f35770f944124e8839ea3185d6d54862800fc28cc2ffad205a"}, - {file = "grpcio-1.70.0-cp311-cp311-macosx_10_14_universal2.whl", hash = "sha256:dbe41ad140df911e796d4463168e33ef80a24f5d21ef4d1e310553fcd2c4a386"}, - {file = "grpcio-1.70.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:5ea67c72101d687d44d9c56068328da39c9ccba634cabb336075fae2eab0d04b"}, - {file = "grpcio-1.70.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb5277db254ab7586769e490b7b22f4ddab3876c490da0a1a9d7c695ccf0bf77"}, - {file = "grpcio-1.70.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7831a0fc1beeeb7759f737f5acd9fdcda520e955049512d68fda03d91186eea"}, - {file = "grpcio-1.70.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:27cc75e22c5dba1fbaf5a66c778e36ca9b8ce850bf58a9db887754593080d839"}, - {file = "grpcio-1.70.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d63764963412e22f0491d0d32833d71087288f4e24cbcddbae82476bfa1d81fd"}, - {file = "grpcio-1.70.0-cp311-cp311-win32.whl", hash = "sha256:bb491125103c800ec209d84c9b51f1c60ea456038e4734688004f377cfacc113"}, - {file = "grpcio-1.70.0-cp311-cp311-win_amd64.whl", hash = "sha256:d24035d49e026353eb042bf7b058fb831db3e06d52bee75c5f2f3ab453e71aca"}, - {file = "grpcio-1.70.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:ef4c14508299b1406c32bdbb9fb7b47612ab979b04cf2b27686ea31882387cff"}, - {file = "grpcio-1.70.0-cp312-cp312-macosx_10_14_universal2.whl", hash = "sha256:aa47688a65643afd8b166928a1da6247d3f46a2784d301e48ca1cc394d2ffb40"}, - {file = "grpcio-1.70.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:880bfb43b1bb8905701b926274eafce5c70a105bc6b99e25f62e98ad59cb278e"}, - {file = "grpcio-1.70.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e654c4b17d07eab259d392e12b149c3a134ec52b11ecdc6a515b39aceeec898"}, - {file = "grpcio-1.70.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2394e3381071045a706ee2eeb6e08962dd87e8999b90ac15c55f56fa5a8c9597"}, - {file = "grpcio-1.70.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:b3c76701428d2df01964bc6479422f20e62fcbc0a37d82ebd58050b86926ef8c"}, - {file = "grpcio-1.70.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ac073fe1c4cd856ebcf49e9ed6240f4f84d7a4e6ee95baa5d66ea05d3dd0df7f"}, - {file = "grpcio-1.70.0-cp312-cp312-win32.whl", hash = "sha256:cd24d2d9d380fbbee7a5ac86afe9787813f285e684b0271599f95a51bce33528"}, - {file = "grpcio-1.70.0-cp312-cp312-win_amd64.whl", hash = "sha256:0495c86a55a04a874c7627fd33e5beaee771917d92c0e6d9d797628ac40e7655"}, - {file = "grpcio-1.70.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:aa573896aeb7d7ce10b1fa425ba263e8dddd83d71530d1322fd3a16f31257b4a"}, - {file = "grpcio-1.70.0-cp313-cp313-macosx_10_14_universal2.whl", hash = "sha256:d405b005018fd516c9ac529f4b4122342f60ec1cee181788249372524e6db429"}, - {file = "grpcio-1.70.0-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:f32090238b720eb585248654db8e3afc87b48d26ac423c8dde8334a232ff53c9"}, - {file = "grpcio-1.70.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dfa089a734f24ee5f6880c83d043e4f46bf812fcea5181dcb3a572db1e79e01c"}, - {file = "grpcio-1.70.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f19375f0300b96c0117aca118d400e76fede6db6e91f3c34b7b035822e06c35f"}, - {file = "grpcio-1.70.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:7c73c42102e4a5ec76608d9b60227d917cea46dff4d11d372f64cbeb56d259d0"}, - {file = "grpcio-1.70.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:0a5c78d5198a1f0aa60006cd6eb1c912b4a1520b6a3968e677dbcba215fabb40"}, - {file = "grpcio-1.70.0-cp313-cp313-win32.whl", hash = "sha256:fe9dbd916df3b60e865258a8c72ac98f3ac9e2a9542dcb72b7a34d236242a5ce"}, - {file = "grpcio-1.70.0-cp313-cp313-win_amd64.whl", hash = "sha256:4119fed8abb7ff6c32e3d2255301e59c316c22d31ab812b3fbcbaf3d0d87cc68"}, - {file = "grpcio-1.70.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:8058667a755f97407fca257c844018b80004ae8035565ebc2812cc550110718d"}, - {file = "grpcio-1.70.0-cp38-cp38-macosx_10_14_universal2.whl", hash = "sha256:879a61bf52ff8ccacbedf534665bb5478ec8e86ad483e76fe4f729aaef867cab"}, - {file = "grpcio-1.70.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:0ba0a173f4feacf90ee618fbc1a27956bfd21260cd31ced9bc707ef551ff7dc7"}, - {file = "grpcio-1.70.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:558c386ecb0148f4f99b1a65160f9d4b790ed3163e8610d11db47838d452512d"}, - {file = "grpcio-1.70.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:412faabcc787bbc826f51be261ae5fa996b21263de5368a55dc2cf824dc5090e"}, - {file = "grpcio-1.70.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3b0f01f6ed9994d7a0b27eeddea43ceac1b7e6f3f9d86aeec0f0064b8cf50fdb"}, - {file = "grpcio-1.70.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7385b1cb064734005204bc8994eed7dcb801ed6c2eda283f613ad8c6c75cf873"}, - {file = "grpcio-1.70.0-cp38-cp38-win32.whl", hash = "sha256:07269ff4940f6fb6710951116a04cd70284da86d0a4368fd5a3b552744511f5a"}, - {file = "grpcio-1.70.0-cp38-cp38-win_amd64.whl", hash = "sha256:aba19419aef9b254e15011b230a180e26e0f6864c90406fdbc255f01d83bc83c"}, - {file = "grpcio-1.70.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:4f1937f47c77392ccd555728f564a49128b6a197a05a5cd527b796d36f3387d0"}, - {file = "grpcio-1.70.0-cp39-cp39-macosx_10_14_universal2.whl", hash = "sha256:0cd430b9215a15c10b0e7d78f51e8a39d6cf2ea819fd635a7214fae600b1da27"}, - {file = "grpcio-1.70.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:e27585831aa6b57b9250abaf147003e126cd3a6c6ca0c531a01996f31709bed1"}, - {file = "grpcio-1.70.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c1af8e15b0f0fe0eac75195992a63df17579553b0c4af9f8362cc7cc99ccddf4"}, - {file = "grpcio-1.70.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbce24409beaee911c574a3d75d12ffb8c3e3dd1b813321b1d7a96bbcac46bf4"}, - {file = "grpcio-1.70.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ff4a8112a79464919bb21c18e956c54add43ec9a4850e3949da54f61c241a4a6"}, - {file = "grpcio-1.70.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5413549fdf0b14046c545e19cfc4eb1e37e9e1ebba0ca390a8d4e9963cab44d2"}, - {file = "grpcio-1.70.0-cp39-cp39-win32.whl", hash = "sha256:b745d2c41b27650095e81dea7091668c040457483c9bdb5d0d9de8f8eb25e59f"}, - {file = "grpcio-1.70.0-cp39-cp39-win_amd64.whl", hash = "sha256:a31d7e3b529c94e930a117b2175b2efd179d96eb3c7a21ccb0289a8ab05b645c"}, - {file = "grpcio-1.70.0.tar.gz", hash = "sha256:8d1584a68d5922330025881e63a6c1b54cc8117291d382e4fa69339b6d914c56"}, -] -markers = {main = "extra == \"extra-proxy\" and python_version < \"3.14\"", dev = "python_version < \"3.14\"", proxy-dev = "python_version < \"3.14\""} - -[package.extras] -protobuf = ["grpcio-tools (>=1.70.0)"] - [[package]] name = "grpcio" version = "1.76.0" @@ -2103,7 +2034,7 @@ files = [ {file = "grpcio-1.76.0-cp39-cp39-win_amd64.whl", hash = "sha256:acab0277c40eff7143c2323190ea57b9ee5fd353d8190ee9652369fae735668a"}, {file = "grpcio-1.76.0.tar.gz", hash = "sha256:7be78388d6da1a25c0d5ec506523db58b18be22d9c37d8d3a32c08be4987bd73"}, ] -markers = {main = "python_version >= \"3.14\" and extra == \"extra-proxy\"", dev = "python_version >= \"3.14\"", proxy-dev = "python_version >= \"3.14\""} +markers = {main = "extra == \"extra-proxy\""} [package.dependencies] typing-extensions = ">=4.12,<5.0" @@ -2830,15 +2761,15 @@ files = [ [[package]] name = "litellm-proxy-extras" -version = "0.4.5" +version = "0.4.6" description = "Additional files for the LiteLLM Proxy. Reduces the size of the main litellm package." optional = true python-versions = "!=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*,>=3.8" groups = ["main"] markers = "extra == \"proxy\"" files = [ - {file = "litellm_proxy_extras-0.4.5-py3-none-any.whl", hash = "sha256:917954c2f6d2f940bea8355695d8a17057816f126e898a4fca73b9d56cee09e6"}, - {file = "litellm_proxy_extras-0.4.5.tar.gz", hash = "sha256:ad79a4061e06f9a9127e517d153dfbb8a1a91de11873a633de5a984cbcd40070"}, + {file = "litellm_proxy_extras-0.4.6-py3-none-any.whl", hash = "sha256:665ad022fdfd06f3fe97071e49f3b240554a931e57d27850fb815a19d3ea901d"}, + {file = "litellm_proxy_extras-0.4.6.tar.gz", hash = "sha256:3864bdae26a92906081e591dcf72e1864277e6d58582bee224befb7385fda508"}, ] [[package]] @@ -5180,29 +5111,6 @@ files = [ {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"}, ] -[[package]] -name = "requests" -version = "2.31.0" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.7" -groups = ["main", "dev", "proxy-dev"] -markers = "python_version >= \"3.14\"" -files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - [[package]] name = "requests" version = "2.32.5" @@ -5210,7 +5118,6 @@ description = "Python HTTP for Humans." optional = false python-versions = ">=3.9" groups = ["main", "dev", "proxy-dev"] -markers = "python_version < \"3.14\"" files = [ {file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"}, {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"}, @@ -6987,4 +6894,4 @@ utils = ["numpydoc"] [metadata] lock-version = "2.1" python-versions = ">=3.9,<4.0" -content-hash = "ed84cd86a8f6551a7d31460c7281078b95327f01d89a9795e1dc284f33852cfb" +content-hash = "d0a70599d616889d1899b65cb380dd48585c309cf750637857d9acef8dc78d82" diff --git a/pyproject.toml b/pyproject.toml index 4fbdff3328f..d8a3673a045 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,7 +59,7 @@ websockets = {version = "^13.1.0", optional = true} boto3 = {version = "1.36.0", optional = true} redisvl = {version = "^0.4.1", optional = true, markers = "python_version >= '3.9' and python_version < '3.14'"} mcp = {version = "^1.10.0", optional = true, python = ">=3.10"} -litellm-proxy-extras = {version = "0.4.5", optional = true} +litellm-proxy-extras = {version = "0.4.6", optional = true} rich = {version = "13.7.1", optional = true} litellm-enterprise = {version = "0.1.21", optional = true} diskcache = {version = "^5.6.1", optional = true} diff --git a/requirements.txt b/requirements.txt index ef8c8b2ee0e..35ce8e9d03a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -43,7 +43,7 @@ sentry_sdk==2.21.0 # for sentry error handling detect-secrets==1.5.0 # Enterprise - secret detection / masking in LLM requests cryptography==44.0.1 tzdata==2025.1 # IANA time zone database -litellm-proxy-extras==0.4.5 # for proxy extras - e.g. prisma migrations +litellm-proxy-extras==0.4.6 # for proxy extras - e.g. prisma migrations ### LITELLM PACKAGE DEPENDENCIES python-dotenv==1.0.1 # for env tiktoken==0.8.0 # for calculating usage From 98d2dbd7115697a329f63427d64fce7857175665 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Nov 2025 13:23:44 -0800 Subject: [PATCH 30/89] Bump js-yaml from 3.14.1 to 3.14.2 (#16802) Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2. - [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md) - [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...3.14.2) --- updated-dependencies: - dependency-name: js-yaml dependency-version: 3.14.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 2873 +-------------------------------------------- 1 file changed, 5 insertions(+), 2868 deletions(-) diff --git a/package-lock.json b/package-lock.json index 302ec856788..6aee34db53a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,16 +10,10 @@ "react-copy-to-clipboard": "^5.1.0" }, "devDependencies": { - "@babel/core": "^7.28.4", - "@babel/preset-env": "^7.28.3", - "@babel/preset-react": "^7.27.1", - "@babel/preset-typescript": "^7.27.1", "@testing-library/jest-dom": "^6.8.0", "@testing-library/react": "^14.3.1", "@types/react-copy-to-clipboard": "^5.0.7", - "babel-jest": "^30.1.2", - "jest": "^29.7.0", - "jest-environment-jsdom": "^30.1.2" + "jest": "^29.7.0" } }, "node_modules/@adobe/css-tools": { @@ -29,27 +23,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@asamuzakjp/css-color": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/css-calc": "^2.1.3", - "@csstools/css-color-parser": "^3.0.9", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, - "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, "node_modules/@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", @@ -123,19 +96,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", - "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", @@ -153,63 +113,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz", - "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", - "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "regexpu-core": "^6.2.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", - "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "debug": "^4.4.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.22.10" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, "node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", @@ -220,20 +123,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", - "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", @@ -266,19 +155,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", - "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-plugin-utils": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", @@ -289,56 +165,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", - "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-wrap-function": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", - "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", - "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", @@ -369,21 +195,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", - "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.3", - "@babel/types": "^7.28.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helpers": { "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", @@ -414,103 +225,6 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", - "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", - "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", - "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", - "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", - "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -566,22 +280,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", - "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-import-attributes": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", @@ -766,1109 +464,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", - "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", - "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.28.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", - "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-remap-async-to-generator": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", - "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.4.tgz", - "integrity": "sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", - "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", - "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.3", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", - "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-globals": "^7.28.0", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.28.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", - "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/template": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", - "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", - "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", - "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", - "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-explicit-resource-management": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", - "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", - "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", - "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", - "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", - "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", - "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", - "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", - "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", - "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", - "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", - "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", - "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", - "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", - "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", - "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", - "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", - "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/traverse": "^7.28.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", - "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", - "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", - "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", - "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", - "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", - "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", - "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", - "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", - "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", - "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", - "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz", - "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", - "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", - "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", - "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", - "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", - "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", - "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", - "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz", - "integrity": "sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", - "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", - "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", - "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", - "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.3.tgz", - "integrity": "sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.0", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.27.1", - "@babel/plugin-syntax-import-attributes": "^7.27.1", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.28.0", - "@babel/plugin-transform-async-to-generator": "^7.27.1", - "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.28.0", - "@babel/plugin-transform-class-properties": "^7.27.1", - "@babel/plugin-transform-class-static-block": "^7.28.3", - "@babel/plugin-transform-classes": "^7.28.3", - "@babel/plugin-transform-computed-properties": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0", - "@babel/plugin-transform-dotall-regex": "^7.27.1", - "@babel/plugin-transform-duplicate-keys": "^7.27.1", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", - "@babel/plugin-transform-dynamic-import": "^7.27.1", - "@babel/plugin-transform-explicit-resource-management": "^7.28.0", - "@babel/plugin-transform-exponentiation-operator": "^7.27.1", - "@babel/plugin-transform-export-namespace-from": "^7.27.1", - "@babel/plugin-transform-for-of": "^7.27.1", - "@babel/plugin-transform-function-name": "^7.27.1", - "@babel/plugin-transform-json-strings": "^7.27.1", - "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", - "@babel/plugin-transform-member-expression-literals": "^7.27.1", - "@babel/plugin-transform-modules-amd": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-modules-systemjs": "^7.27.1", - "@babel/plugin-transform-modules-umd": "^7.27.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", - "@babel/plugin-transform-new-target": "^7.27.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", - "@babel/plugin-transform-numeric-separator": "^7.27.1", - "@babel/plugin-transform-object-rest-spread": "^7.28.0", - "@babel/plugin-transform-object-super": "^7.27.1", - "@babel/plugin-transform-optional-catch-binding": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/plugin-transform-private-methods": "^7.27.1", - "@babel/plugin-transform-private-property-in-object": "^7.27.1", - "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.28.3", - "@babel/plugin-transform-regexp-modifiers": "^7.27.1", - "@babel/plugin-transform-reserved-words": "^7.27.1", - "@babel/plugin-transform-shorthand-properties": "^7.27.1", - "@babel/plugin-transform-spread": "^7.27.1", - "@babel/plugin-transform-sticky-regex": "^7.27.1", - "@babel/plugin-transform-template-literals": "^7.27.1", - "@babel/plugin-transform-typeof-symbol": "^7.27.1", - "@babel/plugin-transform-unicode-escapes": "^7.27.1", - "@babel/plugin-transform-unicode-property-regex": "^7.27.1", - "@babel/plugin-transform-unicode-regex": "^7.27.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "core-js-compat": "^3.43.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/preset-react": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz", - "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-transform-react-display-name": "^7.27.1", - "@babel/plugin-transform-react-jsx": "^7.27.1", - "@babel/plugin-transform-react-jsx-development": "^7.27.1", - "@babel/plugin-transform-react-pure-annotations": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", - "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-typescript": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/runtime": { "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", @@ -1934,121 +529,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@csstools/color-helpers": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", - "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/css-calc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", - "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-color-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", - "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "dependencies": { - "@csstools/color-helpers": "^5.1.0", - "@csstools/css-calc": "^2.1.4" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -2193,235 +673,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/environment-jsdom-abstract": { - "version": "30.1.2", - "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.1.2.tgz", - "integrity": "sha512-u8kTh/ZBl97GOmnGJLYK/1GuwAruMC4hoP6xuk/kwltmVWsA9u/6fH1/CsPVGt2O+Wn2yEjs8n1B1zZJ62Cx0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.1.2", - "@jest/fake-timers": "30.1.2", - "@jest/types": "30.0.5", - "@types/jsdom": "^21.1.7", - "@types/node": "*", - "jest-mock": "30.0.5", - "jest-util": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "canvas": "^3.0.0", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/environment": { - "version": "30.1.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.1.2.tgz", - "integrity": "sha512-N8t1Ytw4/mr9uN28OnVf0SYE2dGhaIxOVYcwsf9IInBKjvofAjbFRvedvBBlyTYk2knbJTiEjEJ2PyyDIBnd9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "30.1.2", - "@jest/types": "30.0.5", - "@types/node": "*", - "jest-mock": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/fake-timers": { - "version": "30.1.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.1.2.tgz", - "integrity": "sha512-Beljfv9AYkr9K+ETX9tvV61rJTY706BhBUtiaepQHeEGfe0DbpvUA5Z3fomwc5Xkhns6NWrcFDZn+72fLieUnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.5", - "@sinonjs/fake-timers": "^13.0.0", - "@types/node": "*", - "jest-message-util": "30.1.0", - "jest-mock": "30.0.5", - "jest-util": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/types": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.5.tgz", - "integrity": "sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/@sinclair/typebox": { - "version": "0.34.41", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", - "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/ci-info": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", - "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-message-util": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.1.0.tgz", - "integrity": "sha512-HizKDGG98cYkWmaLUHChq4iN+oCENohQLb7Z5guBPumYs+/etonmNFlg1Ps6yN9LTPyZn+M+b/9BbnHx3WTMDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.0.5", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.0.5", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-mock": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.5.tgz", - "integrity": "sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.5", - "@types/node": "*", - "jest-util": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-util": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.5.tgz", - "integrity": "sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.5", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/pretty-format": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.5.tgz", - "integrity": "sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment-jsdom-abstract/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, "node_modules/@jest/expect": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", @@ -2483,30 +734,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/pattern/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/@jest/reporters": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", @@ -2938,18 +1165,6 @@ "@types/istanbul-lib-report": "*" } }, - "node_modules/@types/jsdom": { - "version": "21.1.7", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", - "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, "node_modules/@types/node": { "version": "24.3.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.1.tgz", @@ -3007,13 +1222,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/yargs": { "version": "17.0.33", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", @@ -3031,23 +1239,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -3157,256 +1348,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/babel-jest": { - "version": "30.1.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.1.2.tgz", - "integrity": "sha512-IQCus1rt9kaSh7PQxLYRY5NmkNrNlU2TpabzwV7T2jljnpdHOcmnYYv8QmE04Li4S3a2Lj8/yXyET5pBarPr6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "30.1.2", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.0", - "babel-preset-jest": "30.0.1", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0" - } - }, - "node_modules/babel-jest/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-jest/node_modules/@jest/transform": { - "version": "30.1.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.1.2.tgz", - "integrity": "sha512-UYYFGifSgfjujf1Cbd3iU/IQoSd6uwsj8XHj5DSDf5ERDcWMdJOPTkHWXj4U+Z/uMagyOQZ6Vne8C4nRIrCxqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.0.5", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.0", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.1.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.0.5", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-jest/node_modules/@jest/types": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.5.tgz", - "integrity": "sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-jest/node_modules/@sinclair/typebox": { - "version": "0.34.41", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", - "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-jest/node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/babel-jest/node_modules/ci-info": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", - "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/jest-haste-map": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.1.0.tgz", - "integrity": "sha512-JLeM84kNjpRkggcGpQLsV7B8W4LNUWz7oDNVnY1Vjj22b5/fAb3kk3htiD+4Na8bmJmjJR7rBtS2Rmq/NEcADg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.5", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.0.5", - "jest-worker": "30.1.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" - } - }, - "node_modules/babel-jest/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-jest/node_modules/jest-util": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.5.tgz", - "integrity": "sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.5", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-jest/node_modules/jest-worker": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.1.0.tgz", - "integrity": "sha512-uvWcSjlwAAgIu133Tt77A05H7RIk3Ho8tZL50bQM2AkvLdluw9NG48lRCl3Dt+MOH719n/0nnb5YxUwcuJiKRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.0.5", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-jest/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/babel-jest/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -3441,63 +1382,6 @@ "node": ">=8" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.0.1.tgz", - "integrity": "sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.27.3", - "@types/babel__core": "^7.20.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", - "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.7", - "@babel/helper-define-polyfill-provider": "^0.6.5", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", - "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, "node_modules/babel-preset-current-node-syntax": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", @@ -3525,23 +1409,6 @@ "@babel/core": "^7.0.0 || ^8.0.0-0" } }, - "node_modules/babel-preset-jest": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.0.1.tgz", - "integrity": "sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "30.0.1", - "babel-preset-current-node-syntax": "^1.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3847,20 +1714,6 @@ "toggle-selection": "^1.0.6" } }, - "node_modules/core-js-compat": { - "version": "3.45.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.45.1.tgz", - "integrity": "sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.25.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/create-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", @@ -3905,40 +1758,12 @@ "dev": true, "license": "MIT" }, - "node_modules/cssstyle": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", - "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@asamuzakjp/css-color": "^3.2.0", - "rrweb-cssom": "^0.8.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "dev": true }, - "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", @@ -3957,13 +1782,6 @@ } } }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "dev": true, - "license": "MIT" - }, "node_modules/dedent": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", @@ -4127,19 +1945,6 @@ "dev": true, "license": "MIT" }, - "node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -4238,16 +2043,6 @@ "node": ">=4" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -4602,19 +2397,6 @@ "node": ">= 0.4" } }, - "node_modules/html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^3.1.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -4622,34 +2404,6 @@ "dev": true, "license": "MIT" }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -4660,19 +2414,6 @@ "node": ">=10.17.0" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", @@ -4928,13 +2669,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -5554,232 +3288,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-environment-jsdom": { - "version": "30.1.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.1.2.tgz", - "integrity": "sha512-LXsfAh5+mDTuXDONGl1ZLYxtJEaS06GOoxJb2arcJTjIfh1adYg8zLD8f6P0df8VmjvCaMrLmc1PgHUI/YUTbg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.1.2", - "@jest/environment-jsdom-abstract": "30.1.2", - "@types/jsdom": "^21.1.7", - "@types/node": "*", - "jsdom": "^26.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "canvas": "^3.0.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { - "version": "30.1.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.1.2.tgz", - "integrity": "sha512-N8t1Ytw4/mr9uN28OnVf0SYE2dGhaIxOVYcwsf9IInBKjvofAjbFRvedvBBlyTYk2knbJTiEjEJ2PyyDIBnd9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "30.1.2", - "@jest/types": "30.0.5", - "@types/node": "*", - "jest-mock": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": { - "version": "30.1.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.1.2.tgz", - "integrity": "sha512-Beljfv9AYkr9K+ETX9tvV61rJTY706BhBUtiaepQHeEGfe0DbpvUA5Z3fomwc5Xkhns6NWrcFDZn+72fLieUnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.5", - "@sinonjs/fake-timers": "^13.0.0", - "@types/node": "*", - "jest-message-util": "30.1.0", - "jest-mock": "30.0.5", - "jest-util": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@jest/types": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.5.tgz", - "integrity": "sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@sinclair/typebox": { - "version": "0.34.41", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", - "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-environment-jsdom/node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-environment-jsdom/node_modules/ci-info": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", - "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom/node_modules/jest-message-util": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.1.0.tgz", - "integrity": "sha512-HizKDGG98cYkWmaLUHChq4iN+oCENohQLb7Z5guBPumYs+/etonmNFlg1Ps6yN9LTPyZn+M+b/9BbnHx3WTMDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.0.5", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.0.5", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/jest-mock": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.5.tgz", - "integrity": "sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.5", - "@types/node": "*", - "jest-util": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/jest-util": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.5.tgz", - "integrity": "sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.5", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-environment-jsdom/node_modules/pretty-format": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.5.tgz", - "integrity": "sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, "node_modules/jest-environment-node": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", @@ -6357,9 +3865,9 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -6370,46 +3878,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsdom": { - "version": "26.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", - "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssstyle": "^4.2.1", - "data-urls": "^5.0.0", - "decimal.js": "^10.5.0", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.16", - "parse5": "^7.2.1", - "rrweb-cssom": "^0.8.0", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^5.1.1", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.1.1", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "canvas": "^3.0.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -6483,13 +3951,6 @@ "node": ">=8" } }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true, - "license": "MIT" - }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -6675,13 +4136,6 @@ "node": ">=8" } }, - "node_modules/nwsapi": { - "version": "2.2.22", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", - "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", - "dev": true, - "license": "MIT" - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -6851,19 +4305,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -7040,16 +4481,6 @@ "react-is": "^16.13.1" } }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/pure-rand": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", @@ -7126,26 +4557,6 @@ "node": ">=8" } }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", - "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", @@ -7167,57 +4578,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpu-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", - "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", - "regjsgen": "^0.8.0", - "regjsparser": "^0.12.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~3.0.2" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -7282,13 +4642,6 @@ "node": ">=10" } }, - "node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -7307,26 +4660,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -7674,13 +5007,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -7696,26 +5022,6 @@ "node": ">=8" } }, - "node_modules/tldts": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", - "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tldts-core": "^6.1.86" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/tldts-core": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", - "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", - "dev": true, - "license": "MIT" - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -7741,32 +5047,6 @@ "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" }, - "node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/tr46": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", - "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -7797,50 +5077,6 @@ "dev": true, "license": "MIT" }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", - "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", - "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", @@ -7887,19 +5123,6 @@ "node": ">=10.12.0" } }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -7910,53 +5133,6 @@ "makeerror": "1.0.12" } }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -8073,45 +5249,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT" - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -8172,4 +5309,4 @@ } } } -} \ No newline at end of file +} From ffe00f4034ae2bde535226522b84a144746ba716 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Wed, 19 Nov 2025 13:32:58 -0800 Subject: [PATCH 31/89] Revert "make all gpt-5 and reasoning models to responses by default (#16766)" (#16849) This reverts commit 149f3084518d4d70d7d19ab6cff2cd356d108f15. --- ...odel_prices_and_context_window_backup.json | 38 +++++++++---------- model_prices_and_context_window.json | 38 +++++++++---------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 4fe2a19f604..e77e67bf70d 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -14623,7 +14623,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1e-05, "output_cost_per_token_flex": 5e-06, "output_cost_per_token_priority": 2e-05, @@ -14660,7 +14660,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1e-05, "output_cost_per_token_priority": 2e-05, "supported_endpoints": [ @@ -14696,7 +14696,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1e-05, "output_cost_per_token_priority": 2e-05, "supported_endpoints": [ @@ -14732,7 +14732,7 @@ "max_input_tokens": 128000, "max_output_tokens": 16384, "max_tokens": 16384, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1e-05, "output_cost_per_token_priority": 2e-05, "supported_endpoints": [ @@ -14835,7 +14835,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1e-05, "output_cost_per_token_flex": 5e-06, "output_cost_per_token_priority": 2e-05, @@ -14870,7 +14870,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1e-05, "supported_endpoints": [ "/v1/chat/completions", @@ -14902,7 +14902,7 @@ "max_input_tokens": 128000, "max_output_tokens": 16384, "max_tokens": 16384, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1e-05, "supported_endpoints": [ "/v1/chat/completions", @@ -15034,7 +15034,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 2e-06, "output_cost_per_token_flex": 1e-06, "output_cost_per_token_priority": 3.6e-06, @@ -15073,7 +15073,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 2e-06, "output_cost_per_token_flex": 1e-06, "output_cost_per_token_priority": 3.6e-06, @@ -15111,7 +15111,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 4e-07, "output_cost_per_token_flex": 2e-07, "supported_endpoints": [ @@ -15146,7 +15146,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 4e-07, "output_cost_per_token_flex": 2e-07, "supported_endpoints": [ @@ -17999,7 +17999,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 6e-05, "supports_function_calling": true, "supports_parallel_function_calling": true, @@ -18018,7 +18018,7 @@ "max_input_tokens": 128000, "max_output_tokens": 65536, "max_tokens": 65536, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 4.4e-06, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18032,7 +18032,7 @@ "max_input_tokens": 128000, "max_output_tokens": 65536, "max_tokens": 65536, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1.2e-05, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18046,7 +18046,7 @@ "max_input_tokens": 128000, "max_output_tokens": 32768, "max_tokens": 32768, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 6e-05, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18060,7 +18060,7 @@ "max_input_tokens": 128000, "max_output_tokens": 32768, "max_tokens": 32768, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 6e-05, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18176,7 +18176,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 8e-06, "supported_endpoints": [ "/v1/responses", @@ -18274,7 +18274,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 4.4e-06, "supports_function_calling": true, "supports_parallel_function_calling": false, @@ -18291,7 +18291,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 4.4e-06, "supports_function_calling": true, "supports_parallel_function_calling": false, diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index 4fe2a19f604..e77e67bf70d 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -14623,7 +14623,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1e-05, "output_cost_per_token_flex": 5e-06, "output_cost_per_token_priority": 2e-05, @@ -14660,7 +14660,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1e-05, "output_cost_per_token_priority": 2e-05, "supported_endpoints": [ @@ -14696,7 +14696,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1e-05, "output_cost_per_token_priority": 2e-05, "supported_endpoints": [ @@ -14732,7 +14732,7 @@ "max_input_tokens": 128000, "max_output_tokens": 16384, "max_tokens": 16384, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1e-05, "output_cost_per_token_priority": 2e-05, "supported_endpoints": [ @@ -14835,7 +14835,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1e-05, "output_cost_per_token_flex": 5e-06, "output_cost_per_token_priority": 2e-05, @@ -14870,7 +14870,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1e-05, "supported_endpoints": [ "/v1/chat/completions", @@ -14902,7 +14902,7 @@ "max_input_tokens": 128000, "max_output_tokens": 16384, "max_tokens": 16384, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1e-05, "supported_endpoints": [ "/v1/chat/completions", @@ -15034,7 +15034,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 2e-06, "output_cost_per_token_flex": 1e-06, "output_cost_per_token_priority": 3.6e-06, @@ -15073,7 +15073,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 2e-06, "output_cost_per_token_flex": 1e-06, "output_cost_per_token_priority": 3.6e-06, @@ -15111,7 +15111,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 4e-07, "output_cost_per_token_flex": 2e-07, "supported_endpoints": [ @@ -15146,7 +15146,7 @@ "max_input_tokens": 272000, "max_output_tokens": 128000, "max_tokens": 128000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 4e-07, "output_cost_per_token_flex": 2e-07, "supported_endpoints": [ @@ -17999,7 +17999,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 6e-05, "supports_function_calling": true, "supports_parallel_function_calling": true, @@ -18018,7 +18018,7 @@ "max_input_tokens": 128000, "max_output_tokens": 65536, "max_tokens": 65536, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 4.4e-06, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18032,7 +18032,7 @@ "max_input_tokens": 128000, "max_output_tokens": 65536, "max_tokens": 65536, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 1.2e-05, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18046,7 +18046,7 @@ "max_input_tokens": 128000, "max_output_tokens": 32768, "max_tokens": 32768, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 6e-05, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18060,7 +18060,7 @@ "max_input_tokens": 128000, "max_output_tokens": 32768, "max_tokens": 32768, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 6e-05, "supports_pdf_input": true, "supports_prompt_caching": true, @@ -18176,7 +18176,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 8e-06, "supported_endpoints": [ "/v1/responses", @@ -18274,7 +18274,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 4.4e-06, "supports_function_calling": true, "supports_parallel_function_calling": false, @@ -18291,7 +18291,7 @@ "max_input_tokens": 200000, "max_output_tokens": 100000, "max_tokens": 100000, - "mode": "responses", + "mode": "chat", "output_cost_per_token": 4.4e-06, "supports_function_calling": true, "supports_parallel_function_calling": false, From cd6256f64ad40ebd3fdb1bf9a610725c135288f0 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Wed, 19 Nov 2025 16:26:11 -0800 Subject: [PATCH 32/89] [Feat] Prompt Management - Add UI for editing the prompts (#16853) * v0 for prompt management * v0 * clean up view of prompt editor * commit editor view * refactor prompt editor view * ui - refactor prompt editor * add move message * add prompt editor view * fix allow viewing dotprompt file * add dotprompt_content * handleSave for Prompt * ui fix build fail * ui fix build --- litellm/types/prompts/init_prompts.py | 5 + .../src/components/prompts.tsx | 26 +- .../src/components/prompts/index.ts | 3 + .../components/prompts/prompt_editor_view.tsx | 3 + .../prompt_editor_view/ConversationPanel.tsx | 21 ++ .../DeveloperMessageCard.tsx | 31 ++ .../prompt_editor_view/DotpromptViewTab.tsx | 32 ++ .../prompt_editor_view/ModelConfigCard.tsx | 98 ++++++ .../prompt_editor_view/PromptEditorHeader.tsx | 51 +++ .../prompt_editor_view/PromptMessagesCard.tsx | 121 ++++++++ .../prompt_editor_view/PublishModal.tsx | 56 ++++ .../prompts/prompt_editor_view/ToolsCard.tsx | 67 ++++ .../prompts/prompt_editor_view/index.tsx | 290 ++++++++++++++++++ .../prompts/prompt_editor_view/types.ts | 30 ++ .../prompts/prompt_editor_view/utils.ts | 76 +++++ .../src/components/prompts/tool_modal.tsx | 89 ++++++ .../components/prompts/variable_textarea.tsx | 163 ++++++++++ ui/litellm-dashboard/tsconfig.tsbuildinfo | 1 + 18 files changed, 1162 insertions(+), 1 deletion(-) create mode 100644 ui/litellm-dashboard/src/components/prompts/prompt_editor_view.tsx create mode 100644 ui/litellm-dashboard/src/components/prompts/prompt_editor_view/ConversationPanel.tsx create mode 100644 ui/litellm-dashboard/src/components/prompts/prompt_editor_view/DeveloperMessageCard.tsx create mode 100644 ui/litellm-dashboard/src/components/prompts/prompt_editor_view/DotpromptViewTab.tsx create mode 100644 ui/litellm-dashboard/src/components/prompts/prompt_editor_view/ModelConfigCard.tsx create mode 100644 ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PromptEditorHeader.tsx create mode 100644 ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PromptMessagesCard.tsx create mode 100644 ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PublishModal.tsx create mode 100644 ui/litellm-dashboard/src/components/prompts/prompt_editor_view/ToolsCard.tsx create mode 100644 ui/litellm-dashboard/src/components/prompts/prompt_editor_view/index.tsx create mode 100644 ui/litellm-dashboard/src/components/prompts/prompt_editor_view/types.ts create mode 100644 ui/litellm-dashboard/src/components/prompts/prompt_editor_view/utils.ts create mode 100644 ui/litellm-dashboard/src/components/prompts/tool_modal.tsx create mode 100644 ui/litellm-dashboard/src/components/prompts/variable_textarea.tsx create mode 100644 ui/litellm-dashboard/tsconfig.tsbuildinfo diff --git a/litellm/types/prompts/init_prompts.py b/litellm/types/prompts/init_prompts.py index 184f0448b33..102ace93a52 100644 --- a/litellm/types/prompts/init_prompts.py +++ b/litellm/types/prompts/init_prompts.py @@ -23,6 +23,11 @@ class PromptLiteLLMParams(BaseModel): prompt_id: str prompt_integration: str + dotprompt_content: Optional[str] = None + """ + allows saving the dotprompt file content + """ + model_config = ConfigDict(extra="allow", protected_namespaces=()) diff --git a/ui/litellm-dashboard/src/components/prompts.tsx b/ui/litellm-dashboard/src/components/prompts.tsx index cf41f36f6c5..a8cdb923f32 100644 --- a/ui/litellm-dashboard/src/components/prompts.tsx +++ b/ui/litellm-dashboard/src/components/prompts.tsx @@ -6,6 +6,7 @@ import { getPromptsList, PromptSpec, ListPromptsResponse, deletePromptCall } fro import PromptTable from "./prompts/prompt_table"; import PromptInfoView from "./prompts/prompt_info"; import AddPromptForm from "./prompts/add_prompt_form"; +import PromptEditorView from "./prompts/prompt_editor_view"; import NotificationsManager from "./molecules/notifications_manager"; import { isAdminRole } from "@/utils/roles"; @@ -19,6 +20,7 @@ const PromptsPanel: React.FC = ({ accessToken, userRole }) => { const [isLoading, setIsLoading] = useState(false); const [selectedPromptId, setSelectedPromptId] = useState(null); const [isAddModalVisible, setIsAddModalVisible] = useState(false); + const [showEditorView, setShowEditorView] = useState(false); const [isDeleting, setIsDeleting] = useState(false); const [promptToDelete, setPromptToDelete] = useState<{ id: string; name: string } | null>(null); @@ -50,6 +52,13 @@ const PromptsPanel: React.FC = ({ accessToken, userRole }) => { }; const handleAddPrompt = () => { + if (selectedPromptId) { + setSelectedPromptId(null); + } + setShowEditorView(true); + }; + + const handleAddPromptFromFile = () => { if (selectedPromptId) { setSelectedPromptId(null); } @@ -60,6 +69,10 @@ const PromptsPanel: React.FC = ({ accessToken, userRole }) => { setIsAddModalVisible(false); }; + const handleCloseEditor = () => { + setShowEditorView(false); + }; + const handleSuccess = () => { fetchPrompts(); }; @@ -91,7 +104,13 @@ const PromptsPanel: React.FC = ({ accessToken, userRole }) => { return (
- {selectedPromptId ? ( + {showEditorView ? ( + + ) : selectedPromptId ? ( setSelectedPromptId(null)} @@ -102,9 +121,14 @@ const PromptsPanel: React.FC = ({ accessToken, userRole }) => { ) : ( <>
+
+ +
{ + return ( +
+
+
+
+ +
+

Your conversation will appear here

+

Save the prompt to test it

+
+
+
+ ); +}; + +export default ConversationPanel; + diff --git a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/DeveloperMessageCard.tsx b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/DeveloperMessageCard.tsx new file mode 100644 index 00000000000..8f920ea5534 --- /dev/null +++ b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/DeveloperMessageCard.tsx @@ -0,0 +1,31 @@ +import React from "react"; +import { Card, Text } from "@tremor/react"; +import VariableTextArea from "../variable_textarea"; + +interface DeveloperMessageCardProps { + value: string; + onChange: (value: string) => void; +} + +const DeveloperMessageCard: React.FC = ({ + value, + onChange, +}) => { + return ( + + Developer message + + Optional system instructions for the model + + + + ); +}; + +export default DeveloperMessageCard; + diff --git a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/DotpromptViewTab.tsx b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/DotpromptViewTab.tsx new file mode 100644 index 00000000000..7791789fab9 --- /dev/null +++ b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/DotpromptViewTab.tsx @@ -0,0 +1,32 @@ +import React from "react"; +import { PromptType } from "./types"; +import { convertToDotPrompt } from "./utils"; + +interface DotpromptViewTabProps { + prompt: PromptType; +} + +const DotpromptViewTab: React.FC = ({ prompt }) => { + const dotpromptContent = convertToDotPrompt(prompt); + + return ( +
+
+

+ Generated .prompt file +

+

+ This is the dotprompt format that will be saved to the database +

+
+
+
+          {dotpromptContent}
+        
+
+
+ ); +}; + +export default DotpromptViewTab; + diff --git a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/ModelConfigCard.tsx b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/ModelConfigCard.tsx new file mode 100644 index 00000000000..1752fdc22b5 --- /dev/null +++ b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/ModelConfigCard.tsx @@ -0,0 +1,98 @@ +import React, { useState } from "react"; +import { Text } from "@tremor/react"; +import { Input } from "antd"; +import { SettingsIcon } from "lucide-react"; +import ModelSelector from "../../common_components/ModelSelector"; + +interface ModelConfigCardProps { + model: string; + temperature?: number; + maxTokens?: number; + accessToken: string | null; + onModelChange: (model: string) => void; + onTemperatureChange: (temp: number) => void; + onMaxTokensChange: (tokens: number) => void; +} + +const ModelConfigCard: React.FC = ({ + model, + temperature = 1, + maxTokens = 1000, + accessToken, + onModelChange, + onTemperatureChange, + onMaxTokensChange, +}) => { + const [showConfig, setShowConfig] = useState(false); + + return ( +
+
+ +
+ + + + {showConfig && ( +
+
+
+

Model Parameters

+ +
+
+
+
+ Temperature + onTemperatureChange(parseFloat(e.target.value) || 0)} + className="w-20" + /> +
+
+
+
+ Max Tokens + onMaxTokensChange(parseInt(e.target.value) || 1000)} + className="w-24" + /> +
+
+
+
+
+ )} +
+ ); +}; + +export default ModelConfigCard; + diff --git a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PromptEditorHeader.tsx b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PromptEditorHeader.tsx new file mode 100644 index 00000000000..5339e437a0e --- /dev/null +++ b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PromptEditorHeader.tsx @@ -0,0 +1,51 @@ +import React from "react"; +import { Button as TremorButton } from "@tremor/react"; +import { Input } from "antd"; +import { ArrowLeftIcon, SaveIcon } from "lucide-react"; + +interface PromptEditorHeaderProps { + promptName: string; + onNameChange: (name: string) => void; + onBack: () => void; + onSave: () => void; + isSaving: boolean; +} + +const PromptEditorHeader: React.FC = ({ + promptName, + onNameChange, + onBack, + onSave, + isSaving, +}) => { + return ( +
+
+ + Back + + onNameChange(e.target.value)} + className="text-base font-medium border-none shadow-none" + style={{ width: "200px" }} + /> + Draft + Unsaved changes +
+
+ + Save + +
+
+ ); +}; + +export default PromptEditorHeader; + diff --git a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PromptMessagesCard.tsx b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PromptMessagesCard.tsx new file mode 100644 index 00000000000..eb037ff5fc1 --- /dev/null +++ b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PromptMessagesCard.tsx @@ -0,0 +1,121 @@ +import React, { useState } from "react"; +import { Card, Text } from "@tremor/react"; +import { Select } from "antd"; +import { PlusIcon, TrashIcon, GripVerticalIcon } from "lucide-react"; +import VariableTextArea from "../variable_textarea"; +import { Message } from "./types"; + +const { Option } = Select; + +interface PromptMessagesCardProps { + messages: Message[]; + onAddMessage: () => void; + onUpdateMessage: (index: number, field: "role" | "content", value: string) => void; + onRemoveMessage: (index: number) => void; + onMoveMessage: (fromIndex: number, toIndex: number) => void; +} + +const PromptMessagesCard: React.FC = ({ + messages, + onAddMessage, + onUpdateMessage, + onRemoveMessage, + onMoveMessage, +}) => { + const [draggedIndex, setDraggedIndex] = useState(null); + const [dragOverIndex, setDragOverIndex] = useState(null); + + const handleDragStart = (index: number) => { + setDraggedIndex(index); + }; + + const handleDragOver = (e: React.DragEvent, index: number) => { + e.preventDefault(); + setDragOverIndex(index); + }; + + const handleDrop = (e: React.DragEvent, dropIndex: number) => { + e.preventDefault(); + if (draggedIndex !== null && draggedIndex !== dropIndex) { + onMoveMessage(draggedIndex, dropIndex); + } + setDraggedIndex(null); + setDragOverIndex(null); + }; + + const handleDragEnd = () => { + setDraggedIndex(null); + setDragOverIndex(null); + }; + + return ( + +
+ Prompt messages + + Use {'{{variable}}'} syntax for template variables + +
+
+ {messages.map((message, index) => ( +
handleDragStart(index)} + onDragOver={(e) => handleDragOver(e, index)} + onDrop={(e) => handleDrop(e, index)} + onDragEnd={handleDragEnd} + className={`border border-gray-300 rounded overflow-hidden bg-white transition-all ${ + draggedIndex === index ? "opacity-50" : "" + } ${dragOverIndex === index && draggedIndex !== index ? "border-blue-500 border-2" : ""}`} + > +
+ +
+ {messages.length > 1 && ( + + )} +
+ +
+
+
+
+ onUpdateMessage(index, "content", value)} + rows={3} + placeholder="Enter prompt content..." + /> +
+
+ ))} +
+ +
+ ); +}; + +export default PromptMessagesCard; + diff --git a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PublishModal.tsx b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PublishModal.tsx new file mode 100644 index 00000000000..411a463c45c --- /dev/null +++ b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/PublishModal.tsx @@ -0,0 +1,56 @@ +import React from "react"; +import { Button as TremorButton, Text } from "@tremor/react"; +import { Input, Modal } from "antd"; + +interface PublishModalProps { + visible: boolean; + promptName: string; + isSaving: boolean; + onNameChange: (name: string) => void; + onPublish: () => void; + onCancel: () => void; +} + +const PublishModal: React.FC = ({ + visible, + promptName, + isSaving, + onNameChange, + onPublish, + onCancel, +}) => { + return ( + + + Cancel + + + Publish + +
+ ]} + > +
+ Name + onNameChange(e.target.value)} + placeholder="Enter prompt name" + onPressEnter={onPublish} + autoFocus + /> + + Published prompts can be used in API calls and are versioned for easy tracking. + +
+
+ ); +}; + +export default PublishModal; + diff --git a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/ToolsCard.tsx b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/ToolsCard.tsx new file mode 100644 index 00000000000..53444c5d8e9 --- /dev/null +++ b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/ToolsCard.tsx @@ -0,0 +1,67 @@ +import React from "react"; +import { Card, Text } from "@tremor/react"; +import { PlusIcon, TrashIcon } from "lucide-react"; +import { Tool } from "./types"; + +interface ToolsCardProps { + tools: Tool[]; + onAddTool: () => void; + onEditTool: (index: number) => void; + onRemoveTool: (index: number) => void; +} + +const ToolsCard: React.FC = ({ + tools, + onAddTool, + onEditTool, + onRemoveTool, +}) => { + return ( + +
+ Tools + +
+ {tools.length === 0 ? ( + No tools added + ) : ( +
+ {tools.map((tool, index) => ( +
+
+
{tool.name}
+
{tool.description}
+
+
+ + +
+
+ ))} +
+ )} +
+ ); +}; + +export default ToolsCard; + diff --git a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/index.tsx b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/index.tsx new file mode 100644 index 00000000000..8ea8f7d5b7a --- /dev/null +++ b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/index.tsx @@ -0,0 +1,290 @@ +import React, { useState } from "react"; +import ToolModal from "../tool_modal"; +import NotificationsManager from "../../molecules/notifications_manager"; +import { createPromptCall } from "../../networking"; +import { PromptType, PromptEditorViewProps, Tool } from "./types"; +import { convertToDotPrompt } from "./utils"; +import PromptEditorHeader from "./PromptEditorHeader"; +import ModelConfigCard from "./ModelConfigCard"; +import ToolsCard from "./ToolsCard"; +import DeveloperMessageCard from "./DeveloperMessageCard"; +import PromptMessagesCard from "./PromptMessagesCard"; +import ConversationPanel from "./ConversationPanel"; +import PublishModal from "./PublishModal"; +import DotpromptViewTab from "./DotpromptViewTab"; + +const PromptEditorView: React.FC = ({ onClose, onSuccess, accessToken }) => { + const [prompt, setPrompt] = useState({ + name: "New prompt", + model: "gpt-4o", + config: { + temperature: 1, + max_tokens: 1000, + }, + tools: [], + developerMessage: "", + messages: [ + { + role: "user", + content: "Enter task specifics. Use {{template_variables}} for dynamic inputs", + }, + ], + }); + + const [showToolModal, setShowToolModal] = useState(false); + const [showNameModal, setShowNameModal] = useState(false); + const [editingToolIndex, setEditingToolIndex] = useState(null); + const [isSaving, setIsSaving] = useState(false); + const [viewMode, setViewMode] = useState<"pretty" | "dotprompt">("pretty"); + + const addMessage = () => { + setPrompt({ + ...prompt, + messages: [ + ...prompt.messages, + { + role: "user", + content: "", + }, + ], + }); + }; + + const updateMessage = (index: number, field: "role" | "content", value: string) => { + const newMessages = [...prompt.messages]; + newMessages[index][field] = value; + setPrompt({ + ...prompt, + messages: newMessages, + }); + }; + + const removeMessage = (index: number) => { + if (prompt.messages.length > 1) { + setPrompt({ + ...prompt, + messages: prompt.messages.filter((_, i) => i !== index), + }); + } + }; + + const moveMessage = (fromIndex: number, toIndex: number) => { + const newMessages = [...prompt.messages]; + const [movedMessage] = newMessages.splice(fromIndex, 1); + newMessages.splice(toIndex, 0, movedMessage); + setPrompt({ + ...prompt, + messages: newMessages, + }); + }; + + const addTool = (json: string) => { + try { + const parsed = JSON.parse(json); + const tool: Tool = { + name: parsed.function?.name || "Unnamed Tool", + description: parsed.function?.description || "", + json: json, + }; + + if (editingToolIndex !== null) { + const newTools = [...prompt.tools]; + newTools[editingToolIndex] = tool; + setPrompt({ + ...prompt, + tools: newTools, + }); + } else { + setPrompt({ + ...prompt, + tools: [...prompt.tools, tool], + }); + } + + setShowToolModal(false); + setEditingToolIndex(null); + } catch (error) { + NotificationsManager.fromBackend("Invalid JSON format"); + } + }; + + const removeTool = (index: number) => { + setPrompt({ + ...prompt, + tools: prompt.tools.filter((_, i) => i !== index), + }); + }; + + const openToolModal = (index?: number) => { + if (index !== undefined) { + setEditingToolIndex(index); + } else { + setEditingToolIndex(null); + } + setShowToolModal(true); + }; + + const handleSaveClick = () => { + if (!prompt.name || prompt.name.trim() === "" || prompt.name === "New prompt") { + setShowNameModal(true); + } else { + handleSave(); + } + }; + + const handleSave = async () => { + if (!accessToken) { + NotificationsManager.fromBackend("Access token is required"); + return; + } + + if (!prompt.name || prompt.name.trim() === "") { + NotificationsManager.fromBackend("Please enter a valid prompt name"); + return; + } + + setIsSaving(true); + try { + const promptId = prompt.name.replace(/[^a-zA-Z0-9_-]/g, "_").toLowerCase(); + const dotpromptContent = convertToDotPrompt(prompt); + + const promptData = { + prompt_id: promptId, + litellm_params: { + prompt_integration: "dotprompt", + prompt_id: promptId, + dotprompt_content: dotpromptContent, + }, + prompt_info: { + prompt_type: "db", + }, + }; + + await createPromptCall(accessToken, promptData); + NotificationsManager.success("Prompt created successfully!"); + onSuccess(); + onClose(); + } catch (error) { + console.error("Error saving prompt:", error); + NotificationsManager.fromBackend("Failed to save prompt"); + } finally { + setIsSaving(false); + setShowNameModal(false); + } + }; + + return ( +
+
+ setPrompt({ ...prompt, name })} + onBack={onClose} + onSave={handleSaveClick} + isSaving={isSaving} + /> + +
+
+
+ setPrompt({ ...prompt, model })} + onTemperatureChange={(temperature) => + setPrompt({ + ...prompt, + config: { ...prompt.config, temperature }, + }) + } + onMaxTokensChange={(max_tokens) => + setPrompt({ + ...prompt, + config: { ...prompt.config, max_tokens }, + }) + } + /> + +
+ + +
+
+ + {viewMode === "pretty" ? ( +
+ openToolModal()} + onEditTool={openToolModal} + onRemoveTool={removeTool} + /> + + setPrompt({ ...prompt, developerMessage })} + /> + + +
+ ) : ( + + )} +
+ + +
+
+ + setPrompt({ ...prompt, name })} + onPublish={handleSave} + onCancel={() => setShowNameModal(false)} + /> + + {showToolModal && ( + { + setShowToolModal(false); + setEditingToolIndex(null); + }} + /> + )} +
+ ); +}; + +export default PromptEditorView; + diff --git a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/types.ts b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/types.ts new file mode 100644 index 00000000000..36376e00554 --- /dev/null +++ b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/types.ts @@ -0,0 +1,30 @@ +export interface Message { + role: string; + content: string; +} + +export interface Tool { + name: string; + description: string; + json: string; +} + +export interface PromptType { + name: string; + model: string; + config: { + temperature?: number; + max_tokens?: number; + top_p?: number; + }; + tools: Tool[]; + developerMessage: string; + messages: Message[]; +} + +export interface PromptEditorViewProps { + onClose: () => void; + onSuccess: () => void; + accessToken: string | null; +} + diff --git a/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/utils.ts b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/utils.ts new file mode 100644 index 00000000000..6da9c44d863 --- /dev/null +++ b/ui/litellm-dashboard/src/components/prompts/prompt_editor_view/utils.ts @@ -0,0 +1,76 @@ +import { PromptType } from "./types"; + +export const extractVariables = (prompt: PromptType): string[] => { + const variableSet = new Set(); + const variableRegex = /\{\{(\w+)\}\}/g; + + prompt.messages.forEach((message) => { + let match; + while ((match = variableRegex.exec(message.content)) !== null) { + variableSet.add(match[1]); + } + }); + + if (prompt.developerMessage) { + let match; + while ((match = variableRegex.exec(prompt.developerMessage)) !== null) { + variableSet.add(match[1]); + } + } + + return Array.from(variableSet); +}; + +export const convertToDotPrompt = (prompt: PromptType): string => { + const variables = extractVariables(prompt); + let result = `---\nmodel: ${prompt.model}\n`; + + // Add temperature if set + if (prompt.config.temperature !== undefined) { + result += `temperature: ${prompt.config.temperature}\n`; + } + + // Add max_tokens if set + if (prompt.config.max_tokens !== undefined) { + result += `max_tokens: ${prompt.config.max_tokens}\n`; + } + + // Add top_p if set + if (prompt.config.top_p !== undefined) { + result += `top_p: ${prompt.config.top_p}\n`; + } + + // Add input schema + result += `input:\n schema:\n`; + variables.forEach((variable) => { + result += ` ${variable}: string\n`; + }); + + // Add output format + result += `output:\n format: text\n`; + + // Add tools if present + if (prompt.tools && prompt.tools.length > 0) { + result += `tools:\n`; + prompt.tools.forEach((tool) => { + const toolObj = JSON.parse(tool.json); + result += ` - ${JSON.stringify(toolObj)}\n`; + }); + } + + result += `---\n\n`; + + // Add developer message if present + if (prompt.developerMessage && prompt.developerMessage.trim() !== "") { + result += `Developer: ${prompt.developerMessage.trim()}\n\n`; + } + + // Add messages with role prefixes + prompt.messages.forEach((message) => { + const role = message.role.charAt(0).toUpperCase() + message.role.slice(1); + result += `${role}: ${message.content}\n\n`; + }); + + return result.trim(); +}; + diff --git a/ui/litellm-dashboard/src/components/prompts/tool_modal.tsx b/ui/litellm-dashboard/src/components/prompts/tool_modal.tsx new file mode 100644 index 00000000000..0496eea2bc5 --- /dev/null +++ b/ui/litellm-dashboard/src/components/prompts/tool_modal.tsx @@ -0,0 +1,89 @@ +import React, { useState } from "react"; +import { Modal, Button } from "antd"; + +interface ToolModalProps { + visible: boolean; + initialJson: string; + onSave: (json: string) => void; + onClose: () => void; +} + +const defaultToolJson = `{ + "type": "function", + "function": { + "name": "get_current_weather", + "description": "Get the current weather in a given location", + "parameters": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The city and state, e.g. San Francisco, CA" + }, + "unit": { + "type": "string", + "enum": ["celsius", "fahrenheit"] + } + }, + "required": ["location"] + } + } +}`; + +const ToolModal: React.FC = ({ visible, initialJson, onSave, onClose }) => { + const [json, setJson] = useState(initialJson || defaultToolJson); + const [error, setError] = useState(null); + + const handleSave = () => { + try { + JSON.parse(json); + setError(null); + onSave(json); + } catch (e) { + setError("Invalid JSON format. Please check your syntax."); + } + }; + + const handleClose = () => { + setError(null); + onClose(); + }; + + return ( + + Add Tool +
+ } + open={visible} + onCancel={handleClose} + width={800} + footer={[ + , + , + ]} + > +
+ {error && ( +
+ {error} +
+ )} +